public static void reset() { synchronized (GLOBAL) { GLOBAL.reset(); GLOBAL.staticFilesPath(Defaults.staticFilesPath()); GLOBAL.errorHandler(Defaults.errorHandler()); GLOBAL.viewResolver(Defaults.viewResolver()); GLOBAL.pageDecorator(Defaults.pageDecorator()); GLOBAL.jsonResponseRenderer(Defaults.jsonResponseRenderer()); GLOBAL.jsonRequestBodyParser(Defaults.jsonRequestBodyParser()); GLOBAL.xmlResponseRenderer(Defaults.xmlResponseRenderer()); GLOBAL.xmlRequestBodyParser(Defaults.xmlRequestBodyParser()); GLOBAL.beanParameterFactory(Defaults.beanParameterFactory()); GLOBAL.loginProvider(Defaults.loginProvider()); GLOBAL.rolesProvider(Defaults.rolesProvider()); GLOBAL.validator(Defaults.validator()); GLOBAL.objectMapper(Defaults.objectMapper()); GLOBAL.xmlMapper(Defaults.xmlMapper()); GLOBAL.entityManagerFactoryProvider(Defaults.entityManagerFactoryProvider()); GLOBAL.entityManagerProvider(Defaults.entityManagerProvider()); GLOBAL.sessionManager(Defaults.sessionManager()); GLOBAL.staticFilesSecurity(Defaults.staticFilesSecurity()); GLOBAL.wrappers(Defaults.wrappers()); GLOBAL.templateLoader(Defaults.templateLoader()); } }
@Override public void render(Req req, Object value, OutputStream out) throws Exception { Customization.of(req).objectMapper().writeValue(out, value); }
private Set<String> userRoles(Req req, String username) { if (username != null) { try { return Customization.of(req).rolesProvider().getRolesForUser(req, username); } catch (Exception e) { throw U.rte(e); } } else { return Collections.emptySet(); } }
@SuppressWarnings("unchecked") @Override public <P> P openPersister(Ctx ctx) { Req req = ctx.exchange(); Customization custom = Customization.of(req); EntityManagerProvider entityManagerProvider = custom.entityManagerProvider(); if (entityManagerProvider != null) { try { return (P) entityManagerProvider.getEntityManager(req); } catch (Exception e) { throw U.rte("Error occurred in the EntityManager provider!", e); } } EntityManagerFactory emf; EntityManagerFactoryProvider entityManagerFactoryProvider = custom.entityManagerFactoryProvider(); if (entityManagerFactoryProvider != null) { try { emf = entityManagerFactoryProvider.getEntityManagerFactory(req); } catch (Exception e) { throw U.rte("Error occurred in the EntityManagerFactory provider!", e); } } else { throw U.rte("No EntityManagerProvider nor EntityManagerFactoryProvider was configured!"); } try { return (P) emf.createEntityManager(); } catch (Exception e) { throw U.rte("Error occurred while creating an EntityManager!", e); } }
public static UserInfo login(Req req, String username, String password) { LoginProvider loginProvider = Customization.of(req).loginProvider(); U.must(loginProvider != null, "A login provider wasn't set!"); RolesProvider rolesProvider = Customization.of(req).rolesProvider(); U.must(rolesProvider != null, "A roles provider wasn't set!"); try { boolean success = loginProvider.login(req, username, password); if (success) { Set<String> roles = rolesProvider.getRolesForUser(req, username); return new UserInfo(username, roles); } } catch (Throwable e) { throw U.rte("Login error!", e); } return null; }
HttpUtils.validateViewName(viewName); Customization custom = Customization.of(req); ViewResolver viewResolver = custom.viewResolver(); U.must(viewResolver != null, "A view resolver wasn't configured!"); view = viewResolver.getView(viewName, custom.templateLoader()); } catch (Throwable e) { throw U.rte("Error while retrieving view: " + viewName, e);
private static HttpResponseRenderer mediaResponseRenderer(Resp resp) { Customization customization = Customization.of(resp.request()); if (resp.contentType().equals(MediaType.JSON)) { return customization.jsonResponseRenderer(); } else if (resp.contentType().equals(MediaType.XML_UTF_8)) { return customization.xmlResponseRenderer(); } else { // defaults to json return customization.jsonResponseRenderer(); } }
public static String[] staticFilesPath() { return GLOBAL.staticFilesPath(); }
public BeanParameterFactory beanParameterFactory() { return beanParameterFactory != null || defaults == null ? beanParameterFactory : defaults.beanParameterFactory(); }
@Override public Object getParamValue(Req req) { Object bean; try { bean = customization.beanParameterFactory().getParamValue(req, type, name, req.data()); } catch (Exception e) { throw U.rte(e); } if (validate) { customization.validator().validate(req, bean); } return bean; }
public static void viewResolver(ViewResolver viewResolver) { GLOBAL.viewResolver(viewResolver); }
public static RolesProvider rolesProvider() { return GLOBAL.rolesProvider(); }
public EntityManagerProvider entityManagerProvider() { return entityManagerProvider != null || defaults == null ? entityManagerProvider : defaults.entityManagerProvider(); }
public EntityManagerFactoryProvider entityManagerFactoryProvider() { return entityManagerFactoryProvider != null || defaults == null ? entityManagerFactoryProvider : defaults.entityManagerFactoryProvider(); }
public static void validator(BeanValidator validator) { GLOBAL.validator(validator); }
public static byte[] renderPage(ReqImpl req, String content) { PageDecorator pageDecorator = Customization.of(req).pageDecorator(); U.must(pageDecorator != null, "A page decorator wasn't configured!"); ReusableWritable out = Msc.locals().pageRenderingStream(); try { pageDecorator.renderPage(req, content, out); } catch (Exception e) { throw U.rte("Error while rendering page!", e); } return out.copy(); }
void error(final Req req, final Throwable error, LogLevel logLevel) { try { logError(req, error, logLevel); Resp resp = req.response().code(500).result(null); Object result = Customization.of(req).errorHandler().handleError(req, resp, error); HttpUtils.resultOf(req, result); } catch (Exception e) { Log.error("An error occurred inside the error handler!", e); HttpUtils.resultToResponse(req, HttpUtils.getErrorInfo(req.response(), e)); } }
private void internalServerError(final Channel channel, final boolean isKeepAlive, final Req req) { MediaType contentType = req != null ? req.contentType() : HttpUtils.getDefaultContentType(); HttpResponseRenderer jsonRenderer = Customization.of(req).jsonResponseRenderer(); RespBody body = new RespBodyBytes(HttpUtils.responseToBytes(req, INTERNAL_SERVER_ERROR, contentType, jsonRenderer)); HttpIO.INSTANCE.respond(HttpUtils.maybe(req), channel, -1, -1, 500, isKeepAlive, contentType, body, null, null); }
@Override public HttpStatus handle(Channel ctx, boolean isKeepAlive, Req req) { if (!HttpUtils.isGetReq(req)) return HttpStatus.NOT_FOUND; try { String[] staticFilesLocations = customization.staticFilesPath(); if (!U.isEmpty(staticFilesLocations)) { Res res = HttpUtils.staticResource(req, staticFilesLocations); if (res != null) { StaticFilesSecurity staticFilesSecurity = customization.staticFilesSecurity(); if (staticFilesSecurity.canServe(req, res)) { byte[] bytes = res.getBytesOrNull(); if (bytes != null) { MediaType contentType = U.or(MediaType.getByFileName(res.getName()), MediaType.BINARY); HttpIO.INSTANCE.write200(HttpUtils.maybe(req), ctx, isKeepAlive, contentType, bytes); return HttpStatus.DONE; } } } } return HttpStatus.NOT_FOUND; } catch (Exception e) { return HttpIO.INSTANCE.errorAndDone(req, e, LogLevel.ERROR); } }