package org.jboss.seam.core; import static org.jboss.seam.ScopeType.PAGE; import static org.jboss.seam.ScopeType.STATELESS; import static org.jboss.seam.annotations.Install.BUILT_IN; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import java.util.TreeSet; import org.jboss.seam.annotations.Factory; import org.jboss.seam.annotations.Install; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.intercept.BypassInterceptors; import org.jboss.seam.web.Session; /** * Factory for the conversation list * * @author Gavin King */ @Scope(STATELESS) @Name("org.jboss.seam.core.conversationListFactory") @Install(precedence=BUILT_IN) @BypassInterceptors public class ConversationList { protected List<ConversationEntry> createConversationEntryList() { ConversationEntries conversationEntries = ConversationEntries.getInstance(); if (conversationEntries==null) { return Collections.EMPTY_LIST; } else { Set<ConversationEntry> orderedEntries = new TreeSet<ConversationEntry>(); orderedEntries.addAll( conversationEntries.getConversationEntries() ); List<ConversationEntry> conversationEntryList = new ArrayList<ConversationEntry>( conversationEntries.size() ); for ( ConversationEntry entry: orderedEntries ) { if ( entry.isDisplayable() && !Session.instance().isInvalid() ) { conversationEntryList.add(entry); } } return conversationEntryList; } } @Factory(value="org.jboss.seam.core.conversationList", autoCreate=true, scope=PAGE) public List<ConversationEntry> getConversationEntryList() { return createConversationEntryList(); } }