@Override public void onStatistics(MonitoringStatistics statistics) { statisticsFactory.get().set(statistics); } }
@Override public void onStatistics(MonitoringStatistics statistics) { statisticsFactory.get().set(statistics); } }
/** * Lazily initialize {@link AsyncContext} for this * request processing context. * <p> * The {@code lazyContextValue} will be only invoked once during the first call to {@link #asyncContext()}. * As such, the asynchronous context for this request can be initialized lazily, on demand. * </p> * * @param lazyContextValue lazily initialized {@code AsyncContext} instance bound to this request processing context. */ // TODO figure out how to make this package-private. public void initAsyncContext(Value<AsyncContext> lazyContextValue) { asyncContextValueRef.set(Values.lazy(lazyContextValue)); }
/** * Lazily initialize {@link AsyncContext} for this * request processing context. * <p> * The {@code lazyContextValue} will be only invoked once during the first call to {@link #asyncContext()}. * As such, the asynchronous context for this request can be initialized lazily, on demand. * </p> * * @param lazyContextValue lazily initialized {@code AsyncContext} instance bound to this request processing context. */ // TODO figure out how to make this package-private. public void initAsyncContext(Value<AsyncContext> lazyContextValue) { asyncContextValueRef.set(Values.lazy(lazyContextValue)); }
@Override public ClientRequest apply(ClientRequest requestContext) { requestRefProvider.get().set(requestContext); requestContext.setWorkers(workersProvider); requestContext.setWriterInterceptors(writerInterceptors); requestContext.setReaderInterceptors(readerInterceptors); return requestContext; } }
private void processApplicationStatistics(ApplicationEvent event) { final long now = System.currentTimeMillis(); final ApplicationInfo applicationInfo = new ApplicationInfoImpl(event.getResourceConfig(), new Date(now), event.getRegisteredClasses(), event.getRegisteredInstances(), event.getProviders()); applicationInfoRefProvider.get().set(applicationInfo); }
@Override public ClientRequest apply(ClientRequest requestContext) { requestRefProvider.get().set(requestContext); requestContext.setWorkers(workersProvider); requestContext.setWriterInterceptors(writerInterceptors); requestContext.setReaderInterceptors(readerInterceptors); return requestContext; } }
private void processApplicationStatistics(ApplicationEvent event) { final long now = System.currentTimeMillis(); final ApplicationInfo applicationInfo = new ApplicationInfoImpl(event.getResourceConfig(), new Date(now), event.getRegisteredClasses(), event.getRegisteredInstances(), event.getProviders()); applicationInfoRefProvider.get().set(applicationInfo); }
@Override public ClientRequest apply(ClientRequest requestContext) { requestRefProvider.get().set(requestContext); requestContext.setWorkers(workersProvider); requestContext.setWriterInterceptors(writerInterceptors); requestContext.setReaderInterceptors(readerInterceptors); return requestContext; } }
varyHeaderValue.set(varyValue);
varyHeaderValue.set(varyValue);
injectionManager.<Ref<ServerRequest>>getInstance(requestType).set(req); injectionManager.<Ref<ServerResponse>>getInstance(responseType).set(res); injectionManager.<Ref<Span>>getInstance(spanType).set(req.span()); injectionManager.<Ref<SpanContext>>getInstance(spanContextType).set(req.spanContext()); });
/** * Run the data through a chain of stages identified by the root stage. * * If an inflector is found in the leaf stage, it's reference is set into the {@code inflectorRef} * parameter. * * @param <DATA> processed data type. * @param data data to be processed. * @param rootStage root stage of the stage chain. * @param inflectorRef a mutable reference to an inflector. * @return processing result. */ public static <DATA, RESULT, T extends Inflector<DATA, RESULT>> DATA process( DATA data, Stage<DATA> rootStage, Ref<T> inflectorRef) { Stage<DATA> lastStage = rootStage; Stage.Continuation<DATA> continuation = Stage.Continuation.of(data, lastStage); while (continuation.next() != null) { lastStage = continuation.next(); continuation = lastStage.apply(continuation.result()); } inflectorRef.set(Stages.<DATA, RESULT, T>extractInflector(lastStage)); return continuation.result(); }
/** * Run the data through a chain of stages identified by the root stage. * * If an inflector is found in the leaf stage, it's reference is set into the {@code inflectorRef} * parameter. * * @param <DATA> processed data type. * @param data data to be processed. * @param rootStage root stage of the stage chain. * @param inflectorRef a mutable reference to an inflector. * @return processing result. */ public static <DATA, RESULT, T extends Inflector<DATA, RESULT>> DATA process( DATA data, Stage<DATA> rootStage, Ref<T> inflectorRef) { Stage<DATA> lastStage = rootStage; Stage.Continuation<DATA> continuation = Stage.Continuation.of(data, lastStage); while (continuation.next() != null) { lastStage = continuation.next(); continuation = lastStage.apply(continuation.result()); } inflectorRef.set(Stages.<DATA, RESULT, T>extractInflector(lastStage)); return continuation.result(); }
@Override public void filter(ContainerRequestContext request) { boolean closeParentSpan = false; SpanContext requestSpanContext = parentSpanContextProvider.get(); if (null == requestSpanContext) { closeParentSpan = true; Span requestSpan = security().tracer().buildSpan("security-parent").start(); request.setProperty(PROP_PARENT_SPAN, requestSpan); requestSpanContext = requestSpan.context(); } request.setProperty(PROP_CLOSE_PARENT_SPAN, closeParentSpan); // create a new security context SecurityContext securityContext = security() .contextBuilder(Integer.toString(CONTEXT_COUNTER.incrementAndGet(), Character.MAX_RADIX)) .tracingSpan(requestSpanContext) .executorService(executorService) .build(); injectionManager.<Ref<SecurityContext>>getInstance((new GenericType<Ref<SecurityContext>>() { }).getType()) .set(securityContext); if (featureConfig().shouldUsePrematchingAuthentication()) { doFilter(request, securityContext); } }
@Override public void handle(final Request request, final Response response) { final ResponseWriter responseWriter = new ResponseWriter(response, scheduler); final URI baseUri = getBaseUri(request); final URI requestUri = getRequestUri(request, baseUri); try { final ContainerRequest requestContext = new ContainerRequest(baseUri, requestUri, request.getMethod(), getSecurityContext(request), new MapPropertiesDelegate()); requestContext.setEntityStream(request.getInputStream()); for (final String headerName : request.getNames()) { requestContext.headers(headerName, request.getValue(headerName)); } requestContext.setWriter(responseWriter); requestContext.setRequestScopedInitializer(injectionManager -> { injectionManager.<Ref<Request>>getInstance(RequestTYPE).set(request); injectionManager.<Ref<Response>>getInstance(ResponseTYPE).set(response); }); appHandler.handle(requestContext); } catch (final Exception ex) { throw new RuntimeException(ex); } finally { if (!responseWriter.isSuspended()) { close(response); } } }
@Override public void onStatistics(MonitoringStatistics statistics) { statisticsFactory.get().set(statistics); } }
@Override public void service(final Request request, final Response response) { final ResponseWriter responseWriter = new ResponseWriter(response, configSetStatusOverSendError); try { logger.debugLog("GrizzlyHttpContainer.service(...) started"); URI baseUri = getBaseUri(request); URI requestUri = getRequestUri(request); final ContainerRequest requestContext = new ContainerRequest(baseUri, requestUri, request.getMethod().getMethodString(), getSecurityContext(request), new GrizzlyRequestPropertiesDelegate(request)); requestContext.setEntityStream(request.getInputStream()); for (final String headerName : request.getHeaderNames()) { requestContext.headers(headerName, request.getHeaders(headerName)); } requestContext.setWriter(responseWriter); requestContext.setRequestScopedInitializer(injectionManager -> { injectionManager.<Ref<Request>>getInstance(RequestTYPE).set(request); injectionManager.<Ref<Response>>getInstance(ResponseTYPE).set(response); }); appHandler.handle(requestContext); } finally { logger.debugLog("GrizzlyHttpContainer.service(...) finished"); } }
private void processApplicationStatistics(ApplicationEvent event) { final long now = System.currentTimeMillis(); final ApplicationInfo applicationInfo = new ApplicationInfoImpl(event.getResourceConfig(), new Date(now), event.getRegisteredClasses(), event.getRegisteredInstances(), event.getProviders()); applicationInfoRefProvider.get().set(applicationInfo); }