resourceConfig = new ResourceConfig().addProperties(initParams).addProperties(contextParams); .addProperties(initParams).addProperties(contextParams); } else { throw new ServletException(LocalizationMessages.RESOURCE_CONFIG_PARENT_CLASS_INVALID(
resourceConfig = new ResourceConfig().addProperties(initParams).addProperties(contextParams); .addProperties(initParams).addProperties(contextParams); } else { throw new ServletException(LocalizationMessages.RESOURCE_CONFIG_PARENT_CLASS_INVALID(
/** * Add new servlet according to {@link Application} subclass with {@link ApplicationPath} annotation or existing * {@code servlet-mapping}. */ private static void addServletWithApplication(final ServletContext context, final Class<? extends Application> clazz, final Set<Class<?>> defaultClasses) throws ServletException { final ApplicationPath ap = clazz.getAnnotation(ApplicationPath.class); if (ap != null) { // App is annotated with ApplicationPath final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(clazz, defaultClasses) .addProperties(Utils.getContextParams(context)); final ServletContainer s = new ServletContainer(resourceConfig); final ServletRegistration.Dynamic dsr = context.addServlet(clazz.getName(), s); dsr.setAsyncSupported(true); dsr.setLoadOnStartup(1); final String mapping = createMappingPath(ap); if (!mappingExists(context, mapping)) { dsr.addMapping(mapping); LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_MAPPING(clazz.getName(), mapping)); } else { LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_MAPPING_CONFLICT(clazz.getName(), mapping)); } } }
/** * Add new servlet according to {@link Application} subclass with {@link ApplicationPath} annotation or existing * {@code servlet-mapping}. */ private static void addServletWithApplication(final ServletContext context, final Class<? extends Application> clazz, final Set<Class<?>> defaultClasses) throws ServletException { final ApplicationPath ap = clazz.getAnnotation(ApplicationPath.class); if (ap != null) { // App is annotated with ApplicationPath final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(clazz, defaultClasses) .addProperties(Utils.getContextParams(context)); final ServletContainer s = new ServletContainer(resourceConfig); final ServletRegistration.Dynamic dsr = context.addServlet(clazz.getName(), s); dsr.setAsyncSupported(true); dsr.setLoadOnStartup(1); final String mapping = createMappingPath(ap); if (!mappingExists(context, mapping)) { dsr.addMapping(mapping); LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_MAPPING(clazz.getName(), mapping)); } else { LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_MAPPING_CONFLICT(clazz.getName(), mapping)); } } }
.addProperties(getInitParams(registration)) .addProperties(Utils.getContextParams(context));
/** * Merges fields (e.g. custom binders, properties) of the given application with this application. * <p> * The merging should be done because of the possibility of reloading this {@code ResourceConfig} in a container * so this resource config should know about custom binders and properties of the underlying application to ensure * the reload process will complete successfully. * </p> * * @param application the application which fields should be merged with this application. * @see org.glassfish.jersey.server.spi.Container#reload() * @see org.glassfish.jersey.server.spi.Container#reload(ResourceConfig) */ private void mergeApplications(final Application application) { if (application instanceof ResourceConfig) { // Merge custom binders. final ResourceConfig rc = (ResourceConfig) application; // Merge resources super.registerResources(rc.getResources()); // properties set on the wrapping resource config take precedence // (as those are retrieved from the web.xml, for example) rc.invalidateCache(); rc.addProperties(super.getProperties()); super.addProperties(rc.getProperties()); super.setApplicationName(rc.getApplicationName()); super.setClassLoader(rc.getClassLoader()); rc.lock(); } else if (application != null) { super.addProperties(application.getProperties()); } }
.addProperties(getInitParams(registration)) .addProperties(Utils.getContextParams(context));
/** * Merges fields (e.g. custom binders, properties) of the given application with this application. * <p> * The merging should be done because of the possibility of reloading this {@code ResourceConfig} in a container * so this resource config should know about custom binders and properties of the underlying application to ensure * the reload process will complete successfully. * </p> * * @param application the application which fields should be merged with this application. * @see org.glassfish.jersey.server.spi.Container#reload() * @see org.glassfish.jersey.server.spi.Container#reload(ResourceConfig) */ private void mergeApplications(final Application application) { if (application instanceof ResourceConfig) { // Merge custom binders. final ResourceConfig rc = (ResourceConfig) application; // Merge resources super.registerResources(rc.getResources()); // properties set on the wrapping resource config take precedence // (as those are retrieved from the web.xml, for example) rc.invalidateCache(); rc.addProperties(super.getProperties()); super.addProperties(rc.getProperties()); super.setApplicationName(rc.getApplicationName()); super.setClassLoader(rc.getClassLoader()); rc.lock(); } else if (application != null) { super.addProperties(application.getProperties()); } }
/** * Enhance default servlet (named {@link Application}) configuration. */ private static void addServletWithDefaultConfiguration(final ServletContext context, final Set<Class<?>> classes) throws ServletException { ServletRegistration registration = context.getServletRegistration(Application.class.getName()); if (registration != null) { final Set<Class<?>> appClasses = getRootResourceAndProviderClasses(classes); final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(ResourceConfig.class, appClasses) .addProperties(getInitParams(registration)) .addProperties(Utils.getContextParams(context)); if (registration.getClassName() != null) { // class name present - complete servlet registration from container point of view Utils.store(resourceConfig, context, registration.getName()); } else { // no class name - no complete servlet registration from container point of view final ServletContainer servlet = new ServletContainer(resourceConfig); registration = context.addServlet(registration.getName(), servlet); ((ServletRegistration.Dynamic) registration).setLoadOnStartup(1); if (registration.getMappings().isEmpty()) { // Error LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_NO_MAPPING(registration.getName())); } else { LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_CLASSES(registration.getName(), appClasses)); } } } }
/** * Enhance default servlet (named {@link Application}) configuration. */ private static void addServletWithDefaultConfiguration(final ServletContext context, final Set<Class<?>> classes) throws ServletException { ServletRegistration registration = context.getServletRegistration(Application.class.getName()); if (registration != null) { final Set<Class<?>> appClasses = getRootResourceAndProviderClasses(classes); final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(ResourceConfig.class, appClasses) .addProperties(getInitParams(registration)) .addProperties(Utils.getContextParams(context)); if (registration.getClassName() != null) { // class name present - complete servlet registration from container point of view Utils.store(resourceConfig, context, registration.getName()); } else { // no class name - no complete servlet registration from container point of view final ServletContainer servlet = new ServletContainer(resourceConfig); registration = context.addServlet(registration.getName(), servlet); ((ServletRegistration.Dynamic) registration).setLoadOnStartup(1); if (registration.getMappings().isEmpty()) { // Error LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_NO_MAPPING(registration.getName())); } else { LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_CLASSES(registration.getName(), appClasses)); } } } }
/** * Merges fields (e.g. custom binders, properties) of the given application with this application. * <p> * The merging should be done because of the possibility of reloading this {@code ResourceConfig} in a container * so this resource config should know about custom binders and properties of the underlying application to ensure * the reload process will complete successfully. * </p> * * @param application the application which fields should be merged with this application. * @see org.glassfish.jersey.server.spi.Container#reload() * @see org.glassfish.jersey.server.spi.Container#reload(ResourceConfig) */ private void mergeApplications(final Application application) { if (application instanceof ResourceConfig) { // Merge custom binders. final ResourceConfig rc = (ResourceConfig) application; // Merge resources super.registerResources(rc.getResources()); // properties set on the wrapping resource config take precedence // (as those are retrieved from the web.xml, for example) rc.invalidateCache(); rc.addProperties(super.getProperties()); super.addProperties(rc.getProperties()); super.setApplicationName(rc.getApplicationName()); super.setClassLoader(rc.getClassLoader()); rc.lock(); } else if (application != null) { super.addProperties(application.getProperties()); } }
/** * <p>addProperties.</p> * * @param properties a {@link java.util.Map} object. * @return a {@link ameba.core.Application} object. */ public Application addProperties(Map<String, Object> properties) { config.addProperties(properties); return this; }
public UnixSocketServer(final ServerConfig serverConfig, final Application application) { this.unixSocketAddress = new DomainSocketAddress(serverConfig.getServerUri().toString()); //Install the correct handlers (logback instead of jul) SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); //https://jersey.github.io/documentation/latest/appendix-properties.html final Map<String, Object> initParams = new HashMap<>(); initParams.put("jersey.config.server.application.name", application.getClass().getSimpleName()); initParams.put("jersey.config.server.tracing.type", "ON_DEMAND"); initParams.put("jersey.config.server.tracing.threshold", "SUMMARY"); initParams.put("jersey.config.logging.verbosity", "PAYLOAD_ANY"); initParams.put("jersey.config.beanValidation.enableOutputValidationErrorEntity.server", "true"); initParams.put("jersey.config.server.monitoring.statistics.enabled", "true"); initParams.put("jersey.config.server.monitoring.enabled", "true"); initParams.put("jersey.config.server.monitoring.statistics.mbeans.enabled", "true"); this.resourceConfig = ResourceConfig.forApplication(application); this.resourceConfig.addProperties(initParams); }
public UnixSocketServer(final ServerConfig serverConfig, final Application application) { this.unixSocketAddress = new DomainSocketAddress(serverConfig.getServerUri().toString()); //Install the correct handlers (logback instead of jul) SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); //https://jersey.github.io/documentation/latest/appendix-properties.html final Map<String, Object> initParams = new HashMap<>(); initParams.put("jersey.config.server.application.name", application.getClass().getSimpleName()); initParams.put("jersey.config.server.tracing.type", "ON_DEMAND"); initParams.put("jersey.config.server.tracing.threshold", "SUMMARY"); initParams.put("jersey.config.logging.verbosity", "PAYLOAD_ANY"); initParams.put("jersey.config.beanValidation.enableOutputValidationErrorEntity.server", "true"); initParams.put("jersey.config.server.monitoring.statistics.enabled", "true"); initParams.put("jersey.config.server.monitoring.enabled", "true"); initParams.put("jersey.config.server.monitoring.statistics.mbeans.enabled", "true"); this.resourceConfig = ResourceConfig.forApplication(application); this.resourceConfig.addProperties(initParams); }
@Singleton @Provides private ResourceConfig createResourceConfig(Injector injector, Set<Feature> features, Set<DynamicFeature> dynamicFeatures, @JerseyResource Set<Object> resources, Set<Package> packages, @JerseyResource Map<String, Object> properties) { ResourceConfig config = new ResourceConfig(); packages.forEach(p -> config.packages(true, p.getName())); resources.forEach(r -> config.register(r)); features.forEach(f -> config.register(f)); dynamicFeatures.forEach(df -> config.register(df)); config.addProperties(properties); // TODO: make this pluggable? config.register(ResourceModelDebugger.class); // register Guice Injector as a service in Jersey HK2, and GuiceBridgeFeature as a GuiceBridgeFeature.register(config, injector); return config; }
/** * Add new servlet according to {@link Application} subclass with {@link ApplicationPath} annotation or existing * {@code servlet-mapping}. */ private static void addServletWithApplication(final ServletContext context, final Class<? extends Application> clazz, final Set<Class<?>> defaultClasses) throws ServletException { final ApplicationPath ap = clazz.getAnnotation(ApplicationPath.class); if (ap != null) { // App is annotated with ApplicationPath final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(clazz, defaultClasses) .addProperties(Utils.getContextParams(context)); final ServletContainer s = new ServletContainer(resourceConfig); final ServletRegistration.Dynamic dsr = context.addServlet(clazz.getName(), s); dsr.setAsyncSupported(true); dsr.setLoadOnStartup(1); final String mapping = createMappingPath(ap); if (!mappingExists(context, mapping)) { dsr.addMapping(mapping); LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_MAPPING(clazz.getName(), mapping)); } else { LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_MAPPING_CONFLICT(clazz.getName(), mapping)); } } }
/** * Add new servlet according to {@link Application} subclass with {@link ApplicationPath} annotation or existing * {@code servlet-mapping}. */ private static void addServletWithApplication(final ServletContext context, final Class<? extends Application> clazz, final Set<Class<?>> defaultClasses) throws ServletException { final ApplicationPath ap = clazz.getAnnotation(ApplicationPath.class); if (ap != null) { // App is annotated with ApplicationPath final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(clazz, defaultClasses) .addProperties(Utils.getContextParams(context)); final ServletContainer s = new ServletContainer(resourceConfig); final ServletRegistration.Dynamic dsr = context.addServlet(clazz.getName(), s); dsr.setAsyncSupported(true); dsr.setLoadOnStartup(1); final String mapping = createMappingPath(ap); if (!mappingExists(context, mapping)) { dsr.addMapping(mapping); LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_MAPPING(clazz.getName(), mapping)); } else { LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_MAPPING_CONFLICT(clazz.getName(), mapping)); } } }
/** * Add new servlet according to {@link Application} subclass with {@link ApplicationPath} annotation or existing * {@code servlet-mapping}. */ private static void addServletWithApplication(final ServletContext context, final Class<? extends Application> clazz, final Set<Class<?>> defaultClasses) throws ServletException { final ApplicationPath ap = clazz.getAnnotation(ApplicationPath.class); if (ap != null) { // App is annotated with ApplicationPath final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(clazz, defaultClasses) .addProperties(Utils.getContextParams(context)); final ServletContainer s = new ServletContainer(resourceConfig); final ServletRegistration.Dynamic dsr = context.addServlet(clazz.getName(), s); dsr.setAsyncSupported(true); dsr.setLoadOnStartup(1); final String mapping = createMappingPath(ap); if (!mappingExists(context, mapping)) { dsr.addMapping(mapping); LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_MAPPING(clazz.getName(), mapping)); } else { LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_MAPPING_CONFLICT(clazz.getName(), mapping)); } } }
/** * Enhance default servlet (named {@link Application}) configuration. */ private static void addServletWithDefaultConfiguration(final ServletContext context, final Set<Class<?>> classes) throws ServletException { ServletRegistration registration = context.getServletRegistration(Application.class.getName()); if (registration != null) { final Set<Class<?>> appClasses = getRootResourceAndProviderClasses(classes); final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(ResourceConfig.class, appClasses) .addProperties(getInitParams(registration)) .addProperties(Utils.getContextParams(context)); if (registration.getClassName() != null) { // class name present - complete servlet registration from container point of view Utils.store(resourceConfig, context, registration.getName()); } else { // no class name - no complete servlet registration from container point of view final ServletContainer servlet = new ServletContainer(resourceConfig); registration = context.addServlet(registration.getName(), servlet); ((ServletRegistration.Dynamic) registration).setLoadOnStartup(1); if (registration.getMappings().isEmpty()) { // Error LOGGER.log(Level.WARNING, LocalizationMessages.JERSEY_APP_NO_MAPPING(registration.getName())); } else { LOGGER.log(Level.CONFIG, LocalizationMessages.JERSEY_APP_REGISTERED_CLASSES(registration.getName(), appClasses)); } } } }
protected ApplicationHandler createApplication(final Set<Class<?>> resources) throws Exception { if (!properties.containsKey(ServerProperties.PROCESSING_RESPONSE_ERRORS_ENABLED)) { properties.put(ServerProperties.PROCESSING_RESPONSE_ERRORS_ENABLED, true); } resourceConfig = new ResourceConfig(); initializeResources(resourceConfig); for (String pkg : packages) { resourceConfig.packages(pkg); } resourceConfig.addProperties(properties) .registerClasses(resources) .register(Jackson1Feature.class) .register(MultiPartFeature.class); if (!resourceConfig.isRegistered(ResponseErrorMapper.class)) { resourceConfig.register(new FallbackErrorMapper()); } return new ApplicationHandler(resourceConfig); }