@Override public ExternalRequestContext<Map<String, Object>> open(InjectionManager injectionManager) { final Map<String, Object> newMap = new ConcurrentHashMap<>(); actualMap.set(newMap); context.associate(newMap); context.activate(); actualInjectorManager.set(injectionManager); return new ExternalRequestContext<>(newMap); }
@Override public void resume(final ExternalRequestContext<Map<String, Object>> ctx, InjectionManager injectionManager) { final Map<String, Object> newMap = ctx.getContext(); actualInjectorManager.set(injectionManager); actualMap.set(newMap); context.associate(newMap); context.activate(); }
@Override protected void resume(RequestContext context) { super.resume(context); if (context != null) { CdiRequestContext cdiRequestContext = (CdiRequestContext) context; requestContextController.associate(cdiRequestContext.getStore()); requestContextController.activate(); } }
final BoundRequestContext requestContext = (BoundRequestContext) manager.getReference(requestContextBean, BoundRequestContext.class, ctx); requestContext.associate(requestContexts.get()); requestContext.activate();
@Override protected void activate(RequestContext context, RequestContext oldContext) { super.activate(context, oldContext); if (oldContext != null) { CdiRequestContext oldRequestContext = (CdiRequestContext) oldContext; requestContextController.deactivate(); requestContextController.dissociate(oldRequestContext.getStore()); } CdiRequestContext cdiRequestContext = (CdiRequestContext) context; requestContextController.associate(cdiRequestContext.getStore()); requestContextController.activate(); }
@Override public void service(ChannelHandlerContext ctx, HttpRequest request, HttpResponse response, boolean handleNotFound) throws IOException { BoundRequestContext context = this.instance.select(BoundRequestContext.class).get(); Map<String,Object> contextMap = new HashMap<String,Object>(); context.associate(contextMap); context.activate(); try { super.service(ctx, request,response,handleNotFound); } finally { context.invalidate(); context.deactivate(); context.dissociate(contextMap); } } }
void startRequestScope() { requestContext.associate(requestMap); requestContext.activate(); }
@Override public ExternalRequestContext<Map<String, Object>> open(InjectionManager injectionManager) { final Map<String, Object> newMap = new ConcurrentHashMap<>(); actualMap.set(newMap); context.associate(newMap); context.activate(); actualInjectorManager.set(injectionManager); return new ExternalRequestContext<>(newMap); }
@Override public void resume(final ExternalRequestContext<Map<String, Object>> ctx, InjectionManager injectionManager) { final Map<String, Object> newMap = ctx.getContext(); actualInjectorManager.set(injectionManager); actualMap.set(newMap); context.associate(newMap); context.activate(); }
@Override public void activateContext() { if (!requestContext.isActive()) { final SyncBeanStore syncBeanStore = new SyncBeanStore(); CURRENT_BEAN_STORE.set(syncBeanStore); if (requestContext.associate(syncBeanStore)) { requestContext.activate(); } else { LOGGER.error("could not associate request context"); } } }
@Override public void requestInitialized( final ServletRequestEvent evt ) { final BoundRequestContext ctx = CDI.current() .select( BoundRequestContext.class ) .get(); final Map<String, Object> instanceMap = new HashMap<>(); final ServletRequest req = evt.getServletRequest(); req.setAttribute( CDI_CONTEXT, ctx ); req.setAttribute( CDI_INSTANCE_MAP, instanceMap ); ctx.associate( instanceMap ); ctx.activate(); }
void startRequestScope() { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder == null) { rcHolder = new RequestContextHolder(requestContextFactory.get(), new HashMap<String, Object>()); requestContexts.set(rcHolder); rcHolder.getBoundRequestContext().associate(rcHolder.getRequestMap()); rcHolder.getBoundRequestContext().activate(); } }
void startRequestScope() { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder == null) { rcHolder = new RequestContextHolder(requestContextFactory.get(), new HashMap<String, Object>()); requestContexts.set(rcHolder); rcHolder.getBoundRequestContext().associate(rcHolder.getRequestMap()); rcHolder.getBoundRequestContext().activate(); } }
final BoundRequestContext requestContext = (BoundRequestContext) manager.getReference(requestContextBean, BoundRequestContext.class, ctx); requestContext.associate(requestContexts.get()); requestContext.activate();
public void callback(Context context, Event event) throws Exception { WeldManager manager = context.get(WeldManager.class); if(manager == null) { throw new IllegalStateException("No " + WeldManager.class.getName() + " found in context"); } BoundRequestContext requestContext = manager.instance().select(BoundRequestContext.class).get(); CDIRequestMap map = new CDIRequestMap(); requestContext.associate(map); requestContext.activate(); context.add(CDIRequestMap.class, map); }
public void createRequest(@Observes Before event, WeldManager manager) { BoundRequestContext requestContext = manager.instance().select(BoundRequestContext.class).get(); CDIRequestMap map = new CDIRequestMap(); requestContext.associate(map); requestContext.activate(); requestMap.set(map); }
/* Inject the BoundRequestContext. */ /* Alternatively, you could look this up from the BeanManager */ @Inject BoundRequestContext requestContext; ... /* Start the request, providing a data store which will last the lifetime of the request */ public void startRequest(Map<String, Object> requestDataStore) { // Associate the store with the context and activate the context requestContext.associate(requestDataStore); requestContext.activate(); } /* End the request, providing the same data store as was used to start the request */ public void endRequest(Map<String, Object> requestDataStore) { try { /* Invalidate the request (all bean instances will be scheduled for destruction) */ requestContext.invalidate(); /* Deactivate the request, causing all bean instances to be destroyed (as the context is invalid) */ requestContext.deactivate(); } finally { /* Ensure that whatever happens we dissociate to prevent any memory leaks */ requestContext.dissociate(requestDataStore); } }
@Override public void aroundRequest(HttpRequest req, RunnableWithException<IOException> continuation) throws IOException { BoundRequestContext cdiContext = CDI.current().select(BoundRequestContext.class).get(); Map<String,Object> contextMap = new HashMap<String,Object>(); cdiContext.associate(contextMap); cdiContext.activate(); try { // FIXME: associate CDI thread context on thread change, like Resteasy context? continuation.run(); }finally { if(req.getAsyncContext().isSuspended()) { req.getAsyncContext().getAsyncResponse().register((CompletionCallback)(t) -> { cdiContext.invalidate(); cdiContext.deactivate(); cdiContext.dissociate(contextMap); }); }else { cdiContext.invalidate(); cdiContext.deactivate(); cdiContext.dissociate(contextMap); } } } }