@Provides public EntityRequestBodyReaderFactory voidEntityRequestBodyReaderFactory() { return new EntityRequestBodyReaderFactory() { @Override @SuppressWarnings("unchecked") public <T> Optional<? extends EntityRequestBodyReader<T>> mayBuildFor(Type valueType, String contentType) { if (!contentType.toLowerCase(Locale.ENGLISH).equals("void")) { return Optional.absent(); } return Optional.of((EntityRequestBodyReader<T>) VoidEntityRequestBodyReader.INSTANCE); } }; }
@Provides public EntityDefaultContentTypeProvider jsonEntityDefaultContentTypeProvider() { return new EntityDefaultContentTypeProvider() { @Override public Optional<String> mayProvideDefaultContentType(Type type) { return Optional.of("application/json"); } }; }
@Provides @Named(IGNORE_XML_CONFIGURATION_NAME) public Boolean ignoreXmlConfigurationFlag(){ return Boolean.TRUE; } }
@Provides @Named("restx.activation::restx.security.RestxSessionBareFilter::RestxSessionBareFilter") public String disableBareFilter() { return "false"; }
@Provides @Named("restx.server.tomcat.appbase.default.location") public String restxServerTomcatAppBaseDefaultLocation() { return "src/main/webapp"; }
@Provides @Named("restx.i18n.labelsJsTemplate") public String labelsJsTemplate() { return "// RESTX Labels - customize this with restx.i18n.labelsJsTemplate named String\nwindow.labels = {LABELS};"; } }
@Provides public Clock clock() { return Clock.systemDefaultZone(); } }
@Provides @Named("restx.server.jetty7") public WebServerSupplier jettyWebServerSupplier( @Named("restx.server.jetty7.appbase.default.location") String appBase, @Named("restx.server.jetty7.webxml.default.location") String webxml){ return Jetty7WebServer.jettyWebServerSupplier(webxml, appBase); } }
@Provides @Named("restx.server.jetty8") public WebServerSupplier jettyWebServerSupplier( @Named("restx.server.jetty8.appbase.default.location") String appBase, @Named("restx.server.jetty8.webxml.default.location") String webxml){ return Jetty8WebServer.jettyWebServerSupplier(webxml, appBase); } }
@Provides public EventBus eventBus() { return new EventBus(); }
@Provides public com.fasterxml.jackson.databind.Module jsr310Module() { return new JSR310Module(); }
@Provides @Named("Factory") public AdminPage getFactoryAdminPage() { return new AdminPage("/@/ui/factory/", "Factory"); } }
@Provides @Named("Log") public AdminPage getLogAdminPage() { return new AdminPage("/@/ui/log/", "Logs"); }
@Provides @Named("Messages") public AdminPage getMessagesAdminPage() { return new AdminPage("/@/ui/messages/", "Messages"); } }
@Provides @Named(RestxPrincipal.SESSION_DEF_KEY) public RestxSession.Definition.Entry principalSessionEntry(final BasicPrincipalAuthenticator authenticator) { return new DefaultSessionDefinitionEntry<>(RestxPrincipal.class, RestxPrincipal.SESSION_DEF_KEY, new Function<String, Optional<? extends RestxPrincipal>>() { @Override public Optional<? extends RestxPrincipal> apply(String key) { return authenticator.findByName(key); } }); }
@Provides @Named(Session.SESSION_DEF_KEY) public RestxSession.Definition.Entry sessionKeySessionEntry() { return new DefaultSessionDefinitionEntry<>(String.class, Session.SESSION_DEF_KEY, new Function<String, Optional<? extends String>>() { @Override public Optional<? extends String> apply(String key) { return Optional.fromNullable(key); } }); } }
@Provides @Named("Stats") public AdminPage getStatsAdminPage() { return new AdminPage("/@/ui/stats/", "Stats"); }
@Provides @Named("StatsUIRoute") public ResourcesRoute getStatsResourcesRoute() { return new ResourcesRoute("StatsUIRoute", "/@/ui/stats", "restx/stats/ui", ImmutableMap.of("", "index.html")); } }
@Provides @Named(WRITER_NAME) public ObjectWriter objectWriter(@Named(FrontObjectMapperFactory.MAPPER_NAME) final ObjectMapper mapper, AppSettings appSettings) { ObjectWriter objectWriter = RestxContext.Modes.PROD.equals(appSettings.mode()) ? mapper.writer() : mapper.writerWithDefaultPrettyPrinter(); return objectWriter.withView(Views.Transient.class); }
@Provides @Named("Mapper") public Mapper mapper() { return new JacksonMapper.Builder() .registerModule(new BsonJodaTimeModule()) // to keep compatibility with joda time .registerModule(new BsonJSR310Module()) .withView(Views.Private.class) .build(); } }