final BoundConversationContext conversationContext = (BoundConversationContext) manager.getReference( conversationContextBean, BoundConversationContext.class, ctx); conversationContext.invalidate(); conversationContext.deactivate(); conversationContext.dissociate(boundRequests.get());
void stopConversationScope() { if (conversationContext.isActive()) { conversationContext.invalidate(); conversationContext.deactivate(); conversationContext.dissociate(new MutableBoundRequest(requestMap,sessionMap)); } }
@Inject private BoundConversationContext boundConversationContext; public void onMessage(Message message) { BoundRequest boundRequest = null; try { boundRequest = new MutableBoundRequest(new HashMap<String, Object>(), new HashMap<String, Object>()); boundConversationContext.associate(boundRequest); if (!boundConversationContext.isActive()) boundConversationContext.activate(); // DO YOUR BUSINESS LOGIC HERE } finally { if (boundConversationContext != null) { if (boundRequest != null) boundConversationContext.dissociate(boundRequest); if (boundConversationContext.isActive()) { boundConversationContext.deactivate(); } } } }
@Override public void deactivateContext() { final ConversationState conversationState = CURRENT_CONVERSATION_STATE.get(); final ManagedConversation currentConversation = boundConversationContext.getCurrentConversation(); if (!currentConversation.isTransient() && !conversationState.isLongRunning()) { startLongRunningConversation(conversationState, currentConversation); } else if (currentConversation.isTransient() && conversationState.isLongRunning()) { endLongRunningConversation(conversationState); } else if (currentConversation.getId() != null && !currentConversation.getId().equals(conversationState.getConversationId())) { LOGGER.warn("current conversation id: {} and registered: {}. There shouldn't be two activated conversations", currentConversation.getId(), conversationState.getConversationId()); } boundConversationContext.deactivate(); boundConversationContext.dissociate(CURRENT_BOUND_REQUEST.get()); CURRENT_BOUND_REQUEST.remove(); CURRENT_CONVERSATION_STATE.remove(); }
@Override public void activateContext(ConversationState conversationState) { CURRENT_CONVERSATION_STATE.set(conversationState); if (!boundConversationContext.isActive()) { associateContext(); if (conversationState.isLongRunning()) { boundConversationContext.activate(conversationState.getConversationId()); } else { boundConversationContext.activate(); } } }
private void associateContext() { final BoundRequest storage = new BoundRequest() { @Override public Map<String, Object> getRequestMap() { return WeldRequestScopeAdapter.getCurrentBeanStore(); } @Override public Map<String, Object> getSessionMap(boolean create) { return WeldSessionScopeAdapter.getInstance().getCurrentBeanStore(); } }; final boolean successful = boundConversationContext.associate(storage); if (!successful) { LOGGER.error("could not attach conversation storage"); } CURRENT_BOUND_REQUEST.set(storage); }
@Override public void invalidateContext() { boundConversationContext.invalidate(); deactivateContext(); }
void stopConversationScope() { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder == null) { startRequestScope(); rcHolder = requestContexts.get(); } if (conversationContext.isActive()) { conversationContext.invalidate(); conversationContext.deactivate(); conversationContext.dissociate(new MutableBoundRequest(rcHolder.getRequestMap(), sessionMaps.get())); } }
/** * Tasks when a long running conversation has ended during this event. * * @param conversationState */ private void endLongRunningConversation(ConversationState conversationState) { conversationState.removeLongRunningConversation(); boundConversationContext.invalidate(); LOGGER.trace("end long running conversation id: {}", conversationState.getConversationId()); } }
void stopConversationScope() { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder == null) { startRequestScope(); rcHolder = requestContexts.get(); } if (conversationContext.isActive()) { conversationContext.invalidate(); conversationContext.deactivate(); conversationContext.dissociate(new MutableBoundRequest(rcHolder.getRequestMap(), sessionMaps.get())); } }
final BoundConversationContext conversationContext = (BoundConversationContext) manager.getReference( conversationContextBean, BoundConversationContext.class, ctx); conversationContext.invalidate(); conversationContext.deactivate(); conversationContext.dissociate(boundRequests.get());
if (!conversationContext.isActive()) { if (!conversationContext.getCurrentConversation().isTransient()) conversationId.set(new CDIConversationID(conversationContext.getCurrentConversation().getId())); conversationContext.invalidate(); conversationContext.deactivate(); conversationContext.dissociate(request);
void startConversationScope(String cid) { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder == null) { startRequestScope(); rcHolder = requestContexts.get(); } conversationContext.associate(new MutableBoundRequest(rcHolder.requestMap, sessionMaps.get())); conversationContext.activate(cid); }
public void callback(Context context, Event event) throws Exception { WeldManager manager = context.get(WeldManager.class); BoundConversationContext conversationContext = manager.instance().select(BoundConversationContext.class).get(); if (!conversationContext.getCurrentConversation().isTransient()) { context.add(CDIConversationID.class, new CDIConversationID(conversationContext.getCurrentConversation().getId())); } else { context.add(CDIConversationID.class, new CDIConversationID(null)); } BoundRequest request = context.get(BoundRequest.class); try { conversationContext.invalidate(); conversationContext.deactivate(); } finally { conversationContext.dissociate(request); } } }
void startConversationScope(String cid) { RequestContextHolder rcHolder = requestContexts.get(); if (rcHolder == null) { startRequestScope(); rcHolder = requestContexts.get(); } conversationContext.associate(new MutableBoundRequest(rcHolder.requestMap, sessionMaps.get())); conversationContext.activate(cid); }
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"); } CDIConversationID id = context.get(CDIConversationID.class); if(id == null) { id = new CDIConversationID(null); // when null creates a new empty conversation id. } BoundRequest boundRequest = new MutableBoundRequest(context.get(CDIRequestMap.class), context.get(CDISessionMap.class)); context.add(BoundRequest.class, boundRequest); BoundConversationContext conversationContext = manager.instance().select(BoundConversationContext.class).get(); conversationContext.associate(boundRequest); conversationContext.activate(id.getId()); } }
public void createConversation(@Observes(precedence = -1) Before event, WeldManager manager) { if(!enableConversationScope) { return; } CDIConversationID id = conversationId.get(); if(id == null) { id = new CDIConversationID(null); // when null creates a new empty conversation id. } BoundRequest request = new MutableBoundRequest(requestMap.get(), sessionMap.get()); this.boundRequest.set(request); BoundConversationContext conversationContext = manager.instance().select(BoundConversationContext.class).get(); conversationContext.associate(request); conversationContext.activate(id.getId()); }