protected void error(Response response, int status, String error, String desc){ response.setStatus(status); response.setContentType(ContentTypes.APPLICATION_JSON_UTF8); response.getJsonWriter() .startObject() .property("error", error) .propertyOptional("error_description", desc) .endObject(); } }
@Override public void handle(Request request, Response response) throws Throwable { //todo: cache the encoded String s = new String(Base64.getMimeEncoder().encode(config.getPublicKey().getEncoded())); response.setContentType(ContentTypes.TEXT_PLAIN_UTF8); response.getWriter().print(s); }
@Override public void handleLoginSuccess(Request request, Response response, LoginContext context) throws Throwable { response.sendRedirect(getReturnUrl(context, request, null)); }
@Override public void render(Request request, Response response) throws Throwable { response.setContentType(ContentTypes.APPLICATION_JSON_UTF8); toJson(response.getJsonWriter()); }
protected void writeError(Request request, Response response, int status, String code, String desc) { response.setStatus(status); response.setContentType(ContentTypes.APPLICATION_JSON_UTF8); JsonWriter json = JSON.createWriter(response.getWriter()); json.startObject() .property("error", code) .propertyOptional("error_description", desc) .endObject(); }
void handleJsonSpecRequest(Api api, Request req, Response resp) throws Throwable { SwaggerJsonWriter w = new SwaggerJsonWriter(); w.setPropertyNamingStyle(api.getConfig().getPropertyNamingStyle()); resp.setContentType(w.getContentType()); String[] parts = req.getParameterValues("parts"); if(null != parts && parts.length == 1) { parts = Strings.split(parts[0], ','); } Set<String> partsSet = null == parts ? Collections.emptySet() : New.hashSet(parts); ApiSpecContext context = new ApiSpecContextImpl(req, partsSet); String json = toSwaggerJson(w, context, api.getMetadata()); String fingerprint = assetStrategy.getFingerprint(json.getBytes()); resp.setHeader(Headers.ETAG, "\"" + fingerprint + "\""); String ifNoneMatch = req.getHeader(Headers.IF_NONE_MATCH); if(!Strings.isEmpty(ifNoneMatch) && ifNoneMatch.equals("\"" + fingerprint + "\"")) { resp.setStatus(HTTP.SC_NOT_MODIFIED); }else { resp.getWriter().write(json); } }
@Override public void handleLogoutSuccess(Request request, Response response, LogoutContext context) throws Throwable { response.setStatus(HTTP.SC_OK); }
@Override protected boolean handleException(ApiErrorHandler errorHandler, Response response, Throwable e) { if(super.handleException(errorHandler, response, e)) { return true; } if(e instanceof RestClientResponseException) { RestClientResponseException re = (RestClientResponseException)e; writeHeaders(response, re); byte[] body = re.getResponseBodyAsByteArray(); if(null != body && body.length > 0) { response.setStatus(re.getRawStatusCode()); try { response.getOutputStream().write(body); }catch (Exception e1) { log.error("Error response body, " + e.getMessage(), e); } }else { errorHandler.responseError(response, re.getRawStatusCode(), re.getMessage()); } return true; } return false; }
@Override public void handleAuthorizationDenied(Request request, Response response, SecurityContextHolder context) throws Throwable { SecuredPath path = context.getSecuredPath(); if(null != path && null != path.getFailureHandler()) { if(path.getFailureHandler().handleAuthorizationDenied(request,response, context)) { return; } } for(SecurityInterceptor si : config.getInterceptors()) { if(State.isIntercepted(si.onAuthorizationDenied(request, response, context))) { return; } } if(request.isAjax()){ response.setStatus(HTTP.SC_FORBIDDEN); }else{ //TODO : error view ? response.sendError(HTTP.SC_FORBIDDEN); } }
@Override public void render(Request request, Response res) throws Throwable { res.getWriter().write(response.getString()); } });
@Override public void handlePostLogout(Request request, Response response, LogoutContext context, View defaultLogoutView) throws Throwable { //Render logout view. OAuth2Params params = new RequestOAuth2Params(request); exposeViewAttributes(request, response, context, params); defaultLogoutView.render(request, response); response.markHandled(); }
private void writeHeaders(Response response, RestClientResponseException re) { //headers. if(null != re.getResponseHeaders()) { re.getResponseHeaders().forEach((name, list) -> { for (String value : list) { response.addHeader(name, value); } }); } }
protected void writeError(Request request, Response response, int status, String code, String desc) { response.setStatus(status); response.setContentType(ContentTypes.APPLICATION_JSON_UTF8); JsonWriter json = JSON.createWriter(response.getWriter()); json.startObject() .property("error", code) .propertyOptional("error_description", desc) .endObject(); }
protected void writeClaims(Request request, Response response, Map<String, Object> claim) throws Throwable { response.setContentType(ContentTypes.APPLICATION_JSON_UTF8); JsonWriter w = response.getJsonWriter(); w.map(claim); return; } }
@Override public void handleLoginFailure(Request request, Response response, LoginContext context) throws Throwable { response.setStatus(HTTP.SC_UNAUTHORIZED); //TODO : error message }
@Override public void handleAuthenticationDenied(Request request, Response response, SecurityContextHolder context) throws Throwable { SecuredPath path = context.getSecuredPath(); if(null != path && null != path.getFailureHandler()) { if(path.getFailureHandler().handleAuthenticationDenied(request,response, context)) { return; } } for(SecurityInterceptor si : config.getInterceptors()) { if(State.isIntercepted(si.onAuthenticationDenied(request, response, context))) { return; } } loginManager.promoteLogin(request, response, context.getLoginContext()); if(response.getStatus() < HTTP.SC_MULTIPLE_CHOICES && response.getStatus() >= HTTP.SC_OK){ response.setStatus(HTTP.SC_UNAUTHORIZED); } }
protected void printError(Response response, String error, String desc) throws Throwable { PrintWriter out = response.getWriter(); out.write(error); if(!Strings.isEmpty(desc)) { out.write(":"); out.write(desc); } }
@Override public void handlePostLogout(Request request, Response response, LogoutContext context, View defaultLogoutView) throws Throwable { //Render logout view. OAuth2Params params = new RequestOAuth2Params(request); exposeViewAttributes(request, response, context, params); defaultLogoutView.render(request, response); response.markHandled(); }
@Override public State preProcessReturnValue(ActionContext context, Result result, Out<Object> returnValue) throws Throwable { Object v = returnValue.get(); if(v instanceof ResponseEntity) { ResponseEntity re = (ResponseEntity)v; result.setStatus(re.getStatusCodeValue()); Response response = context.getResponse(); re.getHeaders().forEach((name,values) -> { for(String value : values) { response.addHeader(name, value); } }); Object body = re.getBody(); if(null == body) { return State.INTERCEPTED; }else { returnValue.set(body); } } return State.CONTINUE; } }