@Override public Map<Class<?>, Object> capture() { return ResteasyContext.getContextDataMap(); }
protected AbstractAsynchronousResponse(final SynchronousDispatcher dispatcher,final HttpRequest request,final HttpResponse response) { this.dispatcher = dispatcher; this.request = request; this.response = response; contextDataMap = ResteasyContext.getContextDataMap(); }
public PreMatchContainerRequestContext(final HttpRequest request, final ContainerRequestFilter[] requestFilters, final Supplier<BuiltResponse> continuation) { this.httpRequest = request; this.requestFilters = requestFilters; this.continuation = continuation; contextDataMap = ResteasyContext.getContextDataMap(); }
public ContainerResponseContextImpl(final HttpRequest request, final HttpResponse httpResponse, final BuiltResponse serverResponse, final ResponseContainerRequestContext requestContext, final ContainerResponseFilter[] responseFilters, final Consumer<Throwable> onComplete, final RunnableWithIOException continuation) { this.request = request; this.httpResponse = httpResponse; this.jaxrsResponse = serverResponse; this.requestContext = requestContext; this.responseFilters = responseFilters; this.continuation = continuation; this.onComplete = onComplete; contextDataMap = ResteasyContext.getContextDataMap(); }
public static Map<Class<?>, Object> getContextDataMap() { return getContextDataMap(true); }
public static <T> void pushContext(Class<T> type, T data) { getContextDataMap().put(type, data); }
public static <T> T getContextData(Class<T> type) { return (T) getContextDataMap().get(type); }
public static <T> T popContextData(Class<T> type) { return (T) getContextDataMap().remove(type); }
public void pushContextObjects(final HttpRequest request, final HttpResponse response) { Map contextDataMap = ResteasyContext.getContextDataMap(); contextDataMap.put(HttpRequest.class, request); contextDataMap.put(HttpResponse.class, response); contextDataMap.put(HttpHeaders.class, request.getHttpHeaders()); contextDataMap.put(UriInfo.class, request.getUri()); contextDataMap.put(Request.class, new RequestImpl(request, response)); contextDataMap.put(ResteasyAsynchronousContext.class, request.getAsyncContext()); ResourceContext resourceContext = new ResourceContext() { @Override public <T> T getResource(Class<T> resourceClass) { return providerFactory.injectedInstance(resourceClass, request, response); } @Override public <T> T initResource(T resource) { providerFactory.injectProperties(resource, request, response); return resource; } }; contextDataMap.put(ResourceContext.class, resourceContext); contextDataMap.putAll(defaultContextObjects); contextDataMap.put(Cleanables.class, new Cleanables()); contextDataMap.put(PostResourceMethodInvokers.class, new PostResourceMethodInvokers()); }
public AsyncResponseConsumer(final ResourceMethodInvoker method) { this.method = method; contextDataMap = ResteasyContext.getContextDataMap(); dispatcher = (SynchronousDispatcher) contextDataMap.get(Dispatcher.class); HttpRequest httpRequest = (HttpRequest) contextDataMap.get(HttpRequest.class); if(httpRequest.getAsyncContext().isSuspended()) asyncResponse = httpRequest.getAsyncContext().getAsyncResponse(); else asyncResponse = httpRequest.getAsyncContext().suspend(); }
private CompletionStage<Object> unwrapIfRequired(HttpRequest request, Object contextData, boolean unwrapAsync) { if(unwrapAsync && rawType != CompletionStage.class && contextData instanceof CompletionStage) { // FIXME: do not unwrap if we have no request? if(request != null ) { boolean resolved = ((CompletionStage<Object>) contextData).toCompletableFuture().isDone(); if(!resolved) { // make request async if(!request.getAsyncContext().isSuspended()) request.getAsyncContext().suspend(); Map<Class<?>, Object> contextDataMap = ResteasyContext.getContextDataMap(); // Don't forget to restore the context return ((CompletionStage<Object>) contextData).thenApply(value -> { ResteasyContext.pushContextDataMap(contextDataMap); return value; }); } } return (CompletionStage<Object>) contextData; } return CompletableFuture.completedFuture(contextData); }
public <T> T getContextData(Class<T> rawType, Type genericType, Annotation[] annotations, boolean unwrapAsync) { T ret = (T) ResteasyContext.getContextDataMap().get(rawType); if (ret != null) return ret; ContextInjector contextInjector = getContextInjectors().get(genericType); boolean async = false; if (contextInjector == null && unwrapAsync) { contextInjector = getAsyncContextInjectors().get(Types.boxPrimitives(genericType)); async = true; } if (contextInjector != null) { ret = (T) contextInjector.resolve(rawType, genericType, annotations); if (async && ret != null) { Type wrappedType = Types.getActualTypeArgumentsOfAnInterface(contextInjector.getClass(), ContextInjector.class)[0]; Class<?> rawWrappedType = Types.getRawType(wrappedType); AsyncResponseProvider converter = getAsyncResponseProvider(rawWrappedType); // OK this is plain lying ret = (T) converter.toCompletionStage(ret); } } return ret; }
Map contextDataMap = ResteasyContext.getContextDataMap(); contextDataMap.putAll(dispatcher.getDefaultContextObjects()); Application app = ResteasyDeploymentImpl.createApplication(application.trim(), dispatcher, providerFactory);
ResteasyContext.getContextDataMap().put(Application.class, application); if (processApplication(application))
@Override public void filter(ContainerRequestContext requestContext) throws IOException { Method method = ((PostMatchContainerRequestContext) requestContext).getResourceMethod().getMethod(); Stream stream = method.getAnnotation(Stream.class); Stream.MODE mode = stream != null ? stream.value() : null; Class<?> clazz = method.getReturnType(); if ((mode == Stream.MODE.GENERAL && ResteasyProviderFactory.getInstance().getAsyncStreamProvider(clazz) != null) || requestContext instanceof PostMatchContainerRequestContext && ((PostMatchContainerRequestContext) requestContext).getResourceMethod().isSse()) { SseEventOutputImpl sink = new SseEventOutputImpl(new SseEventProvider()); ResteasyContext.getContextDataMap().put(SseEventSink.class, sink); ResteasyContext.getContextData(PostResourceMethodInvokers.class).addInvokers(new PostResourceMethodInvoker() { @Override public void invoke() { sink.flushResponseToClient(); } }); } }
public SseEventOutputImpl(final MessageBodyWriter<OutboundSseEvent> writer) { this.writer = writer; contextDataMap = ResteasyContext.getContextDataMap(); request = ResteasyContext.getContextData(org.jboss.resteasy.spi.HttpRequest.class); asyncContext = request.getAsyncContext(); if (!asyncContext.isSuspended()) { try { asyncContext.suspend(); } catch (IllegalStateException ex) { LogMessages.LOGGER.failedToSetRequestAsync(); } } response = ResteasyContext.getContextData(HttpResponse.class); }
@Override public Map<Class<?>, Object> capture() { return ResteasyContext.getContextDataMap(); }
Map contextDataMap = ResteasyContext.getContextDataMap(); contextDataMap.putAll(dispatcher.getDefaultContextObjects());
public static <T> T getContextData(Class<T> type) { return (T) getContextDataMap().get(type); }
public AsyncResponseConsumer(final ResourceMethodInvoker method) { this.method = method; contextDataMap = ResteasyContext.getContextDataMap(); dispatcher = (SynchronousDispatcher) contextDataMap.get(Dispatcher.class); HttpRequest httpRequest = (HttpRequest) contextDataMap.get(HttpRequest.class); if(httpRequest.getAsyncContext().isSuspended()) asyncResponse = httpRequest.getAsyncContext().getAsyncResponse(); else asyncResponse = httpRequest.getAsyncContext().suspend(); }