@Override public ResourceModel processResourceModel(ResourceModel model, Configuration config) { // Create new resource model. final ResourceModel.Builder resourceModelBuilder = new ResourceModel.Builder(false); for (final Resource resource : model.getResources()) { for (Class handlerClass : resource.getHandlerClasses()) { final String packageName = handlerClass.getPackage().getName(); final Optional<String> packagePrefix = packagePrefixes.entrySet().stream() .filter(entry -> packageName.startsWith(entry.getKey())) .sorted((o1, o2) -> -o1.getKey().compareTo(o2.getKey())) .map(Map.Entry::getValue) .findFirst(); if (packagePrefix.isPresent()) { final String prefixedPath = prefixPath(packagePrefix.get(), resource.getPath()); final Resource newResource = Resource.builder(resource) .path(prefixedPath) .build(); resourceModelBuilder.addResource(newResource); } else { resourceModelBuilder.addResource(resource); } } } return resourceModelBuilder.build(); }
@Override public ResourceModel processSubResource(ResourceModel subResource, Configuration configuration) { final Resource resource = Resource.builder() .mergeWith(Resource.from(EnhancedSubResourceSingleton.class)) .mergeWith(Resource.from(EnhancedSubResource.class)) .mergeWith(subResource.getResources().get(0)).build(); return new ResourceModel.Builder(true).addResource(resource).build(); } }
private LocatorRouting buildRouting(final Resource subResource) { final ResourceModel model = new ResourceModel.Builder(true).addResource(subResource).build(); final ResourceModel enhancedModel = enhance(model); if (!disableValidation) { validateResource(enhancedModel); } final Resource enhancedLocator = enhancedModel.getResources().get(0); for (final Class<?> handlerClass : enhancedLocator.getHandlerClasses()) { resourceContext.bindResource(handlerClass); } return new LocatorRouting(enhancedModel, runtimeModelBuilder.buildModel(enhancedModel.getRuntimeResourceModel(), true)); }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, final Configuration configuration) { ResourceModel.Builder resourceModelBuilder = new ResourceModel.Builder(resourceModel, false); Resource.Builder resourceBuilder = Resource.builder(DsStatViewResource.class); resourceBuilder.path(dsPath); Resource resource = resourceBuilder.build(); resourceModelBuilder.addResource(resource); return resourceModelBuilder.build(); }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) { ResourceModel.Builder rmb = new ResourceModel.Builder(false); resourceModel.getResources().forEach(r -> { rmb.addResource(processResource(r)); }); return rmb.build(); }
private LocatorRouting buildRouting(final Resource subResource) { final ResourceModel model = new ResourceModel.Builder(true).addResource(subResource).build(); final ResourceModel enhancedModel = enhance(model); if (!disableValidation) { validateResource(enhancedModel); } final Resource enhancedLocator = enhancedModel.getResources().get(0); for (final Class<?> handlerClass : enhancedLocator.getHandlerClasses()) { resourceContext.bindResource(handlerClass); } return new LocatorRouting(enhancedModel, runtimeModelBuilder.buildModel(enhancedModel.getRuntimeResourceModel(), true)); }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) { final ResourceModel.Builder builder = new ResourceModel.Builder(resourceModel, false); for (Resource resource : resources) { builder.addResource(resource); } return builder.build(); }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) { ResourceModel.Builder resourceModelBuilder = new ResourceModel.Builder(resourceModel, false); Resource resource = Resource.builder(RouteHelper.class).path(routePath).build(); resourceModelBuilder.addResource(resource); return resourceModelBuilder.build(); }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) { final ResourceModel.Builder builder = new ResourceModel.Builder(resourceModel, false); for (Resource resource : resources) { builder.addResource(resource); } return builder.build(); }
/** * Enhance {@code resourceModel} with a list of additional methods. * * The {@code resourceModel} is traversed and for each available runtime resource URI in the model {@code methods} are added. * In case of method conflicts, the existing resource methods will be preserved and will not be 'overridden' by any new * method from the {@code methods} list. Overriding check takes into account media types of methods so * that new resource methods with same HTTP method can be defined only for a more more specific media type. * * @param resourceModel Resource model to be enhanced. * @param subResourceModel {@code true} if the {@code resourceModel} to be enhanced is a sub resource model, {@code false} * if it is application resource model. * @param methods List of enhancing methods. * @param extendedFlag This flag will initialize the property * {@link org.glassfish.jersey.server.model.ResourceMethod#isExtended()}. * * @return New resource model builder enhanced by {@code methods}. */ public static ResourceModel.Builder enhanceResourceModel(ResourceModel resourceModel, boolean subResourceModel, List<Method> methods, boolean extendedFlag) { ResourceModel.Builder newModelBuilder = new ResourceModel.Builder(resourceModel, subResourceModel); for (RuntimeResource resource : resourceModel.getRuntimeResourceModel().getRuntimeResources()) { enhanceResource(resource, newModelBuilder, methods, extendedFlag); } return newModelBuilder; }
@Override public void init(InjectionManager injectionManager, BootstrapBag bootstrapBag) { ServerBootstrapBag serverBag = (ServerBootstrapBag) bootstrapBag; Collection<ModelProcessor> modelProcessors = serverBag.getModelProcessors(); ResourceConfig runtimeConfig = serverBag.getRuntimeConfig(); ResourceBag resourceBag = serverBag.getResourceBag(); ComponentBag componentBag = runtimeConfig.getComponentBag(); // Adds all providers from resource config to InjectionManager -> BootstrapConfigurators are able to work with these // services and get them. bindProvidersAndResources( injectionManager, serverBag, componentBag, resourceBag.classes, resourceBag.instances, runtimeConfig); ResourceModel resourceModel = new ResourceModel.Builder(resourceBag.getRootResources(), false).build(); resourceModel = processResourceModel(modelProcessors, resourceModel, runtimeConfig); bindEnhancingResourceClasses(injectionManager, serverBag, resourceModel, resourceBag, runtimeConfig); serverBag.setResourceModel(resourceModel); // Add newly created resource model in ResourceContext. serverBag.getResourceContext().setResourceModel(resourceModel); }
private LocatorRouting buildRouting(final Resource subResource) { final ResourceModel model = new ResourceModel.Builder(true).addResource(subResource).build(); final ResourceModel enhancedModel = enhance(model); if (!disableValidation) { validateResource(enhancedModel); } final Resource enhancedLocator = enhancedModel.getResources().get(0); for (final Class<?> handlerClass : enhancedLocator.getHandlerClasses()) { resourceContext.bindResource(handlerClass); } return new LocatorRouting(enhancedModel, runtimeModelBuilder.buildModel(enhancedModel.getRuntimeResourceModel(), true)); }
/** * Enhance {@code resourceModel} with a list of additional methods. * * The {@code resourceModel} is traversed and for each available runtime resource URI in the model {@code methods} are added. * In case of method conflicts, the existing resource methods will be preserved and will not be 'overridden' by any new * method from the {@code methods} list. Overriding check takes into account media types of methods so * that new resource methods with same HTTP method can be defined only for a more more specific media type. * * @param resourceModel Resource model to be enhanced. * @param subResourceModel {@code true} if the {@code resourceModel} to be enhanced is a sub resource model, {@code false} * if it is application resource model. * @param methods List of enhancing methods. * @param extendedFlag This flag will initialize the property * {@link org.glassfish.jersey.server.model.ResourceMethod#isExtended()}. * * @return New resource model builder enhanced by {@code methods}. */ public static ResourceModel.Builder enhanceResourceModel(ResourceModel resourceModel, boolean subResourceModel, List<Method> methods, boolean extendedFlag) { ResourceModel.Builder newModelBuilder = new ResourceModel.Builder(resourceModel, subResourceModel); for (RuntimeResource resource : resourceModel.getRuntimeResourceModel().getRuntimeResources()) { enhanceResource(resource, newModelBuilder, methods, extendedFlag); } return newModelBuilder; }
/** * Enhance {@code resourceModel} with a list of additional methods. * * The {@code resourceModel} is traversed and for each available runtime resource URI in the model {@code methods} are added. * In case of method conflicts, the existing resource methods will be preserved and will not be 'overridden' by any new * method from the {@code methods} list. Overriding check takes into account media types of methods so * that new resource methods with same HTTP method can be defined only for a more more specific media type. * * @param resourceModel Resource model to be enhanced. * @param subResourceModel {@code true} if the {@code resourceModel} to be enhanced is a sub resource model, {@code false} * if it is application resource model. * @param methods List of enhancing methods. * @param extendedFlag This flag will initialize the property * {@link org.glassfish.jersey.server.model.ResourceMethod#isExtended()}. * * @return New resource model builder enhanced by {@code methods}. */ public static ResourceModel.Builder enhanceResourceModel(ResourceModel resourceModel, boolean subResourceModel, List<Method> methods, boolean extendedFlag) { ResourceModel.Builder newModelBuilder = new ResourceModel.Builder(resourceModel, subResourceModel); for (RuntimeResource resource : resourceModel.getRuntimeResourceModel().getRuntimeResources()) { enhanceResource(resource, newModelBuilder, methods, extendedFlag); } return newModelBuilder; }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) { ResourceModel.Builder builder = new ResourceModel.Builder(resourceModel.getRootResources(), false); final Resource singletonResource = Resource.from(SingletonResource.class); builder.addResource(singletonResource); final Resource requestScopeResource = Resource.from(RequestScopeResource.class); builder.addResource(requestScopeResource); final Resource.Builder resourceBuilder = Resource.builder("instance"); resourceBuilder.addMethod("GET").handledBy(new Inflector<ContainerRequestContext, String>() { private int counter = 0; @Override public String apply(ContainerRequestContext containerRequestContext) { return String.valueOf("Inflector:" + counter++); } }); final Resource instanceResource = resourceBuilder.build(); builder.addResource(instanceResource); return builder.build(); }
@Override public void init(InjectionManager injectionManager, BootstrapBag bootstrapBag) { ServerBootstrapBag serverBag = (ServerBootstrapBag) bootstrapBag; Collection<ModelProcessor> modelProcessors = serverBag.getModelProcessors(); ResourceConfig runtimeConfig = serverBag.getRuntimeConfig(); ResourceBag resourceBag = serverBag.getResourceBag(); ComponentBag componentBag = runtimeConfig.getComponentBag(); // Adds all providers from resource config to InjectionManager -> BootstrapConfigurators are able to work with these // services and get them. bindProvidersAndResources( injectionManager, serverBag, componentBag, resourceBag.classes, resourceBag.instances, runtimeConfig); ResourceModel resourceModel = new ResourceModel.Builder(resourceBag.getRootResources(), false).build(); resourceModel = processResourceModel(modelProcessors, resourceModel, runtimeConfig); bindEnhancingResourceClasses(injectionManager, serverBag, resourceModel, resourceBag, runtimeConfig); serverBag.setResourceModel(resourceModel); // Add newly created resource model in ResourceContext. serverBag.getResourceContext().setResourceModel(resourceModel); }
/** * Process all {@link Invocable invocables} and defines * {@link org.glassfish.jersey.server.model.Invocable#getRoutingResponseType() routing response types} * as {@link Viewable} for all methods annotated with {@link Template}. * * @param resourceModel resource model to process. * @param subResourceModel determines whether the resource model represents sub-resource. * @return Modified resource model. */ private ResourceModel.Builder processTemplateAnnotatedInvocables(ResourceModel resourceModel, final boolean subResourceModel) { ResourceModel.Builder modelBuilder = new ResourceModel.Builder(subResourceModel); for (Resource resource : resourceModel.getResources()) { Resource newResource = processResource(resource); modelBuilder.addResource(newResource); } return modelBuilder; }
@Override public void init(InjectionManager injectionManager, BootstrapBag bootstrapBag) { ServerBootstrapBag serverBag = (ServerBootstrapBag) bootstrapBag; Collection<ModelProcessor> modelProcessors = serverBag.getModelProcessors(); ResourceConfig runtimeConfig = serverBag.getRuntimeConfig(); ResourceBag resourceBag = serverBag.getResourceBag(); ComponentBag componentBag = runtimeConfig.getComponentBag(); // Adds all providers from resource config to InjectionManager -> BootstrapConfigurators are able to work with these // services and get them. bindProvidersAndResources( injectionManager, serverBag, componentBag, resourceBag.classes, resourceBag.instances, runtimeConfig); ResourceModel resourceModel = new ResourceModel.Builder(resourceBag.getRootResources(), false).build(); resourceModel = processResourceModel(modelProcessors, resourceModel, runtimeConfig); bindEnhancingResourceClasses(injectionManager, serverBag, resourceModel, resourceBag, runtimeConfig); serverBag.setResourceModel(resourceModel); // Add newly created resource model in ResourceContext. serverBag.getResourceContext().setResourceModel(resourceModel); }
private LocatorRouting buildRouting(final Resource subResource) { final ResourceModel model = new ResourceModel.Builder(true).addResource(subResource).build(); final ResourceModel enhancedModel = enhance(model); if (!disableValidation) { validateResource(enhancedModel); } final Resource enhancedLocator = enhancedModel.getResources().get(0); for (final Class<?> handlerClass : enhancedLocator.getHandlerClasses()) { resourceContext.bindResource(handlerClass); } return new LocatorRouting(enhancedModel, runtimeModelBuilder.buildModel(enhancedModel.getRuntimeResourceModel(), true)); }
@Override public ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) { final ResourceModel.Builder builder = new ResourceModel.Builder(resourceModel, false); for (Resource resource : resources) { builder.addResource(resource); } return builder.build(); }