use of org.jboss.weld.contexts.beanstore.ConversationNamingScheme in project core by weld.
the class AbstractConversationContext method associateRequestWithNewConversation.
protected void associateRequestWithNewConversation() {
ManagedConversation conversation = new ConversationImpl(manager);
lock(conversation);
setRequestAttribute(getRequest(), CURRENT_CONVERSATION_ATTRIBUTE_NAME, conversation);
// Set a temporary bean store, this will be attached at the end of the request if needed
NamingScheme namingScheme = new ConversationNamingScheme(getNamingSchemePrefix(), "transient", beanIdentifierIndex);
setBeanStore(createRequestBeanStore(namingScheme, getRequest()));
setRequestAttribute(getRequest(), ConversationNamingScheme.PARAMETER_NAME, namingScheme);
}
use of org.jboss.weld.contexts.beanstore.ConversationNamingScheme in project core by weld.
the class AbstractConversationContext method associateRequest.
protected void associateRequest(ManagedConversation conversation) {
setRequestAttribute(getRequest(), CURRENT_CONVERSATION_ATTRIBUTE_NAME, conversation);
NamingScheme namingScheme = new ConversationNamingScheme(getNamingSchemePrefix(), conversation.getId(), beanIdentifierIndex);
setBeanStore(createRequestBeanStore(namingScheme, getRequest()));
getBeanStore().attach();
}
use of org.jboss.weld.contexts.beanstore.ConversationNamingScheme in project core by weld.
the class AbstractConversationContext method setDestructionQueue.
private void setDestructionQueue(Map<String, ManagedConversation> conversations, S session) {
Map<String, List<ContextualInstance<?>>> contexts = new HashMap<>();
for (Entry<String, ManagedConversation> entry : conversations.entrySet()) {
ManagedConversation conversation = entry.getValue();
// First make all conversations transient
if (!conversation.isTransient()) {
conversation.end();
}
// Extract contextual instances
List<ContextualInstance<?>> contextualInstances = new ArrayList<>();
for (String id : new ConversationNamingScheme(getNamingSchemePrefix(), entry.getKey(), beanIdentifierIndex).filterIds(getSessionAttributeNames(session))) {
contextualInstances.add((ContextualInstance<?>) getSessionAttributeFromSession(session, id));
}
contexts.put(entry.getKey(), contextualInstances);
}
// Store remaining conversation contexts for later destruction
setRequestAttribute(getRequest(), DESTRUCTION_QUEUE_ATTRIBUTE_NAME, Collections.synchronizedMap(contexts));
}
Aggregations