@Override public Continuation apply(final RequestProcessingContext context) { context.routingContext().pushMatchedRuntimeResource(resource); return Continuation.of(context); } }
@Override public Continuation apply(final RequestProcessingContext context) { context.routingContext().pushTemplates(resourceTemplate, methodTemplate); return Continuation.of(context); } }
@Override public Continuation apply(final RequestProcessingContext context) { context.routingContext().pushLeftHandPath(); return Continuation.of(context); } }
@Override public Continuation apply(final RequestProcessingContext context) { context.routingContext().pushLeftHandPath(); return Continuation.of(context); } }
@Override public Continuation apply(final RequestProcessingContext context) { context.routingContext().pushMatchedRuntimeResource(resource); return Continuation.of(context); } }
@Override public Continuation apply(final RequestProcessingContext context) { context.routingContext().pushTemplates(resourceTemplate, methodTemplate); return Continuation.of(context); } }
@Override public Continuation apply(final RequestProcessingContext context) { final RoutingContext routingContext = context.routingContext(); final Object storedResource = routingContext.peekMatchedResource(); if (storedResource == null || !storedResource.getClass().equals(methodHandler.getHandlerClass())) { Object handlerInstance = methodHandler.getInstance(context.injectionManager()); routingContext.pushMatchedResource(handlerInstance); } return Continuation.of(context, next); } }
@Override public Continuation apply(final RequestProcessingContext context) { final RoutingContext routingContext = context.routingContext(); final Object storedResource = routingContext.peekMatchedResource(); if (storedResource == null || !storedResource.getClass().equals(methodHandler.getHandlerClass())) { Object handlerInstance = methodHandler.getInstance(context.injectionManager()); routingContext.pushMatchedResource(handlerInstance); } return Continuation.of(context, next); } }
@Override public Continuation<RequestProcessingContext> apply(final RequestProcessingContext processingContext) { final Endpoint endpoint = processingContext.routingContext().getEndpoint(); return endpoint != null ? Continuation.of(processingContext, Stages.asStage(endpoint)) : Continuation.of(processingContext); } }
@Override public Continuation<RequestProcessingContext> apply(final RequestProcessingContext processingContext) { final Endpoint endpoint = processingContext.routingContext().getEndpoint(); return endpoint != null ? Continuation.of(processingContext, Stages.asStage(endpoint)) : Continuation.of(processingContext); } }
@Override public Continuation apply(final RequestProcessingContext processingContext) { final RoutingContext rc = processingContext.routingContext(); switch (resourceMethod.getType()) { case RESOURCE_METHOD: case SUB_RESOURCE_METHOD: rc.setMatchedResourceMethod(resourceMethod); break; case SUB_RESOURCE_LOCATOR: rc.pushMatchedLocator(resourceMethod); break; } return Continuation.of(processingContext); } }
@Override public Continuation apply(final RequestProcessingContext processingContext) { final RoutingContext rc = processingContext.routingContext(); switch (resourceMethod.getType()) { case RESOURCE_METHOD: case SUB_RESOURCE_METHOD: rc.setMatchedResourceMethod(resourceMethod); break; case SUB_RESOURCE_LOCATOR: rc.pushMatchedLocator(resourceMethod); break; } return Continuation.of(processingContext); } }
@Override public Continuation apply(final RequestProcessingContext processingContext) { final RoutingContext rc = processingContext.routingContext(); rc.pushMatchResult(new SingleMatchResult("/" + processingContext.request().getPath(false))); return Continuation.of(processingContext, rootRouter); } }
@Override public Continuation apply(final RequestProcessingContext processingContext) { final RoutingContext rc = processingContext.routingContext(); rc.pushMatchResult(new SingleMatchResult("/" + processingContext.request().getPath(false))); return Continuation.of(processingContext, rootRouter); } }
@Override public Continuation apply(final RequestProcessingContext processingContext) { Object subResourceInstance = getResource(processingContext); if (subResourceInstance == null) { throw new NotFoundException(); } final RoutingContext routingContext = processingContext.routingContext(); final LocatorRouting routing; if (subResourceInstance instanceof Resource) { // Caching here is disabled by default. It can be enabled by setting // ServerProperties.SUBRESOURCE_LOCATOR_CACHE_JERSEY_RESOURCE_ENABLED to true. routing = runtimeLocatorBuilder.getRouting((Resource) subResourceInstance); } else { Class<?> locatorClass = subResourceInstance.getClass(); if (locatorClass.isAssignableFrom(Class.class)) { // subResourceInstance is class itself locatorClass = (Class<?>) subResourceInstance; if (!runtimeLocatorBuilder.isCached(locatorClass)) { // If we can't create an instance of the class, don't proceed. subResourceInstance = createFunction.apply(locatorClass); } } routingContext.pushMatchedResource(subResourceInstance); resourceContext.bindResourceIfSingleton(subResourceInstance); routing = runtimeLocatorBuilder.getRouting(locatorClass); } routingContext.pushLocatorSubResource(routing.locator.getResources().get(0)); processingContext.triggerEvent(RequestEvent.Type.SUBRESOURCE_LOCATED); return Continuation.of(processingContext, routing.router); }
@Override public Continuation apply(final RequestProcessingContext processingContext) { Object subResourceInstance = getResource(processingContext); if (subResourceInstance == null) { throw new NotFoundException(); } final RoutingContext routingContext = processingContext.routingContext(); final LocatorRouting routing; if (subResourceInstance instanceof Resource) { // Caching here is disabled by default. It can be enabled by setting // ServerProperties.SUBRESOURCE_LOCATOR_CACHE_JERSEY_RESOURCE_ENABLED to true. routing = runtimeLocatorBuilder.getRouting((Resource) subResourceInstance); } else { Class<?> locatorClass = subResourceInstance.getClass(); if (locatorClass.isAssignableFrom(Class.class)) { // subResourceInstance is class itself locatorClass = (Class<?>) subResourceInstance; if (!runtimeLocatorBuilder.isCached(locatorClass)) { // If we can't create an instance of the class, don't proceed. subResourceInstance = createFunction.apply(locatorClass); } } routingContext.pushMatchedResource(subResourceInstance); resourceContext.bindResourceIfSingleton(subResourceInstance); routing = runtimeLocatorBuilder.getRouting(locatorClass); } routingContext.pushLocatorSubResource(routing.locator.getResources().get(0)); processingContext.triggerEvent(RequestEvent.Type.SUBRESOURCE_LOCATED); return Continuation.of(processingContext, routing.router); }
private Object getResource(final RequestProcessingContext context) { final Object resource = context.routingContext().peekMatchedResource(); final Method handlingMethod = locatorModel.getInvocable().getHandlingMethod(); final Object[] parameterValues = ParameterValueHelper.getParameterValues(valueProviders, context.request());
private Object getResource(final RequestProcessingContext context) { final Object resource = context.routingContext().peekMatchedResource(); final Method handlingMethod = locatorModel.getInvocable().getHandlingMethod(); final Object[] parameterValues = ParameterValueHelper.getParameterValues(valueProviders, context.request());
/** * {@inheritDoc} * <p/> * Routing stage navigates through the nested {@link Router routing hierarchy} * using a depth-first transformation strategy until a request-to-response * inflector is {@link org.glassfish.jersey.process.internal.Inflecting found on * a leaf stage node}, in which case the request routing is terminated and an * {@link org.glassfish.jersey.process.Inflector inflector} (if found) is pushed * to the {@link RoutingContext routing context}. */ @Override public Continuation<RequestProcessingContext> apply(final RequestProcessingContext context) { final ContainerRequest request = context.request(); context.triggerEvent(RequestEvent.Type.MATCHING_START); final TracingLogger tracingLogger = TracingLogger.getInstance(request); final long timestamp = tracingLogger.timestamp(ServerTraceEvent.MATCH_SUMMARY); try { final RoutingResult result = _apply(context, routingRoot); Stage<RequestProcessingContext> nextStage = null; if (result.endpoint != null) { context.routingContext().setEndpoint(result.endpoint); nextStage = getDefaultNext(); } return Continuation.of(result.context, nextStage); } finally { tracingLogger.logDuration(ServerTraceEvent.MATCH_SUMMARY, timestamp); } }
/** * {@inheritDoc} * <p/> * Routing stage navigates through the nested {@link Router routing hierarchy} * using a depth-first transformation strategy until a request-to-response * inflector is {@link org.glassfish.jersey.process.internal.Inflecting found on * a leaf stage node}, in which case the request routing is terminated and an * {@link org.glassfish.jersey.process.Inflector inflector} (if found) is pushed * to the {@link RoutingContext routing context}. */ @Override public Continuation<RequestProcessingContext> apply(final RequestProcessingContext context) { final ContainerRequest request = context.request(); context.triggerEvent(RequestEvent.Type.MATCHING_START); final TracingLogger tracingLogger = TracingLogger.getInstance(request); final long timestamp = tracingLogger.timestamp(ServerTraceEvent.MATCH_SUMMARY); try { final RoutingResult result = _apply(context, routingRoot); Stage<RequestProcessingContext> nextStage = null; if (result.endpoint != null) { context.routingContext().setEndpoint(result.endpoint); nextStage = getDefaultNext(); } return Continuation.of(result.context, nextStage); } finally { tracingLogger.logDuration(ServerTraceEvent.MATCH_SUMMARY, timestamp); } }