package org.jboss.seam.debug; import static org.jboss.seam.annotations.Install.BUILT_IN; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Install; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.core.ConversationEntries; import org.jboss.seam.core.ConversationEntry; import org.jboss.seam.util.Exceptions; @Name("org.jboss.seam.debug.contexts") @Scope(ScopeType.APPLICATION) @Install(debug=true, precedence=BUILT_IN) public class Contexts { public List<ConversationEntry> getConversationEntries() { return new ArrayList<ConversationEntry>( ConversationEntries.instance().getConversationEntries() ); } public String[] getApplication() { String[] names = org.jboss.seam.contexts.Contexts.getApplicationContext().getNames(); Arrays.sort(names); return names; } public String[] getSession() { String[] names={}; if(org.jboss.seam.contexts.Contexts.isSessionContextActive()) names = org.jboss.seam.contexts.Contexts.getSessionContext().getNames(); Arrays.sort(names); return names; } public String[] getConversation() { String[] names={}; if(org.jboss.seam.contexts.Contexts.isConversationContextActive()) names = org.jboss.seam.contexts.Contexts.getConversationContext().getNames(); Arrays.sort(names); return names; } public String[] getBusinessProcess() { if ( org.jboss.seam.contexts.Contexts.isBusinessProcessContextActive() ) { String[] names = org.jboss.seam.contexts.Contexts.getBusinessProcessContext().getNames(); Arrays.sort(names); return names; } else { return null; } } public Exception getException() { Exception e=null; if(org.jboss.seam.contexts.Contexts.isConversationContextActive()) { if(org.jboss.seam.contexts.Contexts.getConversationContext().get("org.jboss.seam.caughtException")==null) return null; else e=(Exception)org.jboss.seam.contexts.Contexts.getConversationContext().get("org.jboss.seam.caughtException"); } return e; } public List<Exception> getExceptionCauses() { List<Exception> causes = new ArrayList<Exception>(); for (Exception cause=getException(); cause!=null; cause=Exceptions.getCause(cause)) { causes.add(cause); } return causes; } public boolean isExceptionExists() { return getException()!=null; } }