@Override public void close() { try { final Map<String, Object> contextMap = actualMap.get(); if (contextMap != null) { context.invalidate(); context.deactivate(); context.dissociate(contextMap); } else { context.deactivate(); } } finally { actualMap.remove(); actualInjectorManager.remove(); } } }
final BoundRequestContext requestContext = (BoundRequestContext) manager.getReference(requestContextBean, BoundRequestContext.class, ctx); requestContext.invalidate(); requestContext.deactivate(); requestContext.dissociate(requestContexts.get());
@Override protected void release(RequestContext context) { super.release(context); CdiRequestContext cdiRequestContext = (CdiRequestContext) context; requestContextController.invalidate(); requestContextController.deactivate(); requestContextController.dissociate(cdiRequestContext.getStore()); }
@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); } } }
@Override public void invalidateContext() { requestContext.invalidate(); deactivateContext(); }
@Override public void requestDestroyed( final ServletRequestEvent evt ) { final ServletRequest req = evt.getServletRequest(); @SuppressWarnings( "unchecked" ) final Map<String, Object> instanceMap = (Map<String, Object>) req.getAttribute( CDI_INSTANCE_MAP ); final BoundRequestContext ctx = (BoundRequestContext) req.getAttribute( CDI_CONTEXT ); ctx.invalidate(); ctx.deactivate(); ctx.dissociate( instanceMap ); req.removeAttribute( CDI_CONTEXT ); req.removeAttribute( CDI_INSTANCE_MAP ); }
void stopRequestScope() { if (requestContext.isActive()) { requestContext.invalidate(); requestContext.deactivate(); requestContext.dissociate(requestMap); requestMap = new HashMap<>(); } } }
@Override public void close() { try { final Map<String, Object> contextMap = actualMap.get(); if (contextMap != null) { context.invalidate(); context.deactivate(); context.dissociate(contextMap); } else { context.deactivate(); } } finally { actualMap.remove(); actualInjectorManager.remove(); } } }
final BoundRequestContext requestContext = (BoundRequestContext) manager.getReference(requestContextBean, BoundRequestContext.class, ctx); requestContext.invalidate(); requestContext.deactivate(); requestContext.dissociate(requestContexts.get());
void stopRequestScope() { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder != null && rcHolder.getBoundRequestContext().isActive()) { rcHolder.getBoundRequestContext().invalidate(); rcHolder.getBoundRequestContext().deactivate(); rcHolder.getBoundRequestContext().dissociate(rcHolder.getRequestMap()); requestContexts.set(null); requestContexts.remove(); } }
void stopRequestScope() { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder != null && rcHolder.getBoundRequestContext().isActive()) { rcHolder.getBoundRequestContext().invalidate(); rcHolder.getBoundRequestContext().deactivate(); rcHolder.getBoundRequestContext().dissociate(rcHolder.getRequestMap()); requestContexts.set(null); requestContexts.remove(); } }
/* 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); } }
public void destroyRequest(@Observes After event, WeldManager manager) { BoundRequestContext requestContext = manager.instance().select(BoundRequestContext.class).get(); CDIRequestMap map = requestMap.get(); if (map != null) { try { requestContext.invalidate(); requestContext.deactivate(); } finally { requestContext.dissociate(map); map.clear(); } } }
public void callback(Context context, Event event) throws Exception { WeldManager manager = context.get(WeldManager.class); BoundRequestContext requestContext = manager.instance().select(BoundRequestContext.class).get(); CDIRequestMap map = context.get(CDIRequestMap.class); if (map != null) { try { requestContext.invalidate(); requestContext.deactivate(); } finally { requestContext.dissociate(map); map.clear(); } } } }
@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); } } } }