package org.jboss.seam.security.external.dialogues; import javax.enterprise.event.Observes; import javax.enterprise.inject.Instance; import javax.inject.Inject; import javax.servlet.ServletContext; import org.jboss.seam.security.external.dialogues.api.DialogueManager; import org.jboss.solder.servlet.event.Destroyed; import org.jboss.solder.servlet.event.Initialized; /** * @author Marcel Kolsteren */ public class DialogueManagerBean implements DialogueManager { @Inject private DialogueContextExtension dialogueContextExtension; @Inject private Instance<DialogueBean> dialogue; public void servletInitialized(@Observes @Initialized final ServletContext context) { dialogueContextExtension.getDialogueContext().initialize(context); } public void servletDestroyed(@Observes @Destroyed final ServletContext context) { dialogueContextExtension.getDialogueContext().destroy(); } public void beginDialogue() { String dialogueId = dialogueContextExtension.getDialogueContext().create(); dialogue.get().setId(dialogueId); } public void endDialogue() { dialogueContextExtension.getDialogueContext().remove(); } public void attachDialogue(String requestId) { dialogueContextExtension.getDialogueContext().attach(requestId); } public void detachDialogue() { if (dialogue.get().isFinished()) { endDialogue(); } else { dialogueContextExtension.getDialogueContext().detach(); } } public boolean isExistingDialogue(String dialogueId) { return dialogueContextExtension.getDialogueContext().isExistingDialogue(dialogueId); } public boolean isAttached() { return dialogueContextExtension.getDialogueContext().isAttached(); } }