[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Sun Jun 10 15:25:58 EDT 2007
User: gavin
Date: 07/06/10 15:25:58
Modified: src/main/org/jboss/seam/core ConversationEntries.java
ConversationList.java ConversationStack.java
FacesPage.java Manager.java ServletSession.java
Switcher.java
Log:
major refactor of contexts impl
JBSEAM-953
Revision Changes Path
1.8 +11 -0 jboss-seam/src/main/org/jboss/seam/core/ConversationEntries.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ConversationEntries.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ConversationEntries.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- ConversationEntries.java 8 Mar 2007 07:25:06 -0000 1.7
+++ ConversationEntries.java 10 Jun 2007 19:25:58 -0000 1.8
@@ -1,4 +1,5 @@
package org.jboss.seam.core;
+
import static org.jboss.seam.InterceptionType.NEVER;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.Serializable;
@@ -15,6 +16,7 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.contexts.Contexts;
+
/**
* Manages a map of conversation id to ConversationEntry
* in the session context.
@@ -91,6 +93,15 @@
return (ConversationEntries) Component.getInstance(ConversationEntries.class, ScopeType.SESSION);
}
+ public static ConversationEntries getInstance()
+ {
+ if ( !Contexts.isSessionContextActive() )
+ {
+ throw new IllegalStateException("No session context active");
+ }
+ return (ConversationEntries) Component.getInstance(ConversationEntries.class, ScopeType.SESSION, false);
+ }
+
@Override
public String toString()
{
1.14 +18 -9 jboss-seam/src/main/org/jboss/seam/core/ConversationList.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ConversationList.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ConversationList.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- ConversationList.java 3 Jun 2007 23:02:25 -0000 1.13
+++ ConversationList.java 10 Jun 2007 19:25:58 -0000 1.14
@@ -5,6 +5,7 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
@@ -19,13 +20,14 @@
/**
* @author Gavin King
- * @version $Revision: 1.13 $
+ * @version $Revision: 1.14 $
*/
@Scope(ScopeType.PAGE)
@Name("org.jboss.seam.core.conversationList")
@Install(precedence=BUILT_IN)
@Intercept(NEVER)
-public class ConversationList implements Serializable {
+public class ConversationList implements Serializable
+{
private static final long serialVersionUID = -1515889862229134356L;
private List<ConversationEntry> conversationEntryList;
@@ -33,7 +35,13 @@
@Create
public void createConversationEntryList()
{
- ConversationEntries conversationEntries = ConversationEntries.instance();
+ ConversationEntries conversationEntries = ConversationEntries.getInstance();
+ if (conversationEntries==null)
+ {
+ conversationEntryList = Collections.EMPTY_LIST;
+ }
+ else
+ {
Set<ConversationEntry> orderedEntries = new TreeSet<ConversationEntry>();
orderedEntries.addAll( conversationEntries.getConversationEntries() );
conversationEntryList = new ArrayList<ConversationEntry>( conversationEntries.size() );
@@ -45,6 +53,7 @@
}
}
}
+ }
@Unwrap
public List<ConversationEntry> getConversationEntryList()
1.12 +19 -11 jboss-seam/src/main/org/jboss/seam/core/ConversationStack.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ConversationStack.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ConversationStack.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- ConversationStack.java 3 Jun 2007 23:02:25 -0000 1.11
+++ ConversationStack.java 10 Jun 2007 19:25:58 -0000 1.12
@@ -5,6 +5,7 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
@@ -20,7 +21,7 @@
* Support for "breadcrumbs".
*
* @author Gavin King
- * @version $Revision: 1.11 $
+ * @version $Revision: 1.12 $
*/
@Scope(ScopeType.PAGE)
@Name("org.jboss.seam.core.conversationStack")
@@ -34,7 +35,13 @@
@Create
public void createConversationEntryStack()
{
- ConversationEntries conversationEntries = ConversationEntries.instance();
+ ConversationEntries conversationEntries = ConversationEntries.getInstance();
+ if (conversationEntries==null)
+ {
+ conversationEntryStack = Collections.EMPTY_LIST;
+ }
+ else
+ {
ConversationEntry currentConversationEntry = Manager.instance().getCurrentConversationEntry();
if (currentConversationEntry!=null)
{
@@ -51,6 +58,7 @@
}
}
}
+ }
@Unwrap
public List<ConversationEntry> getConversationEntryStack()
1.9 +2 -1 jboss-seam/src/main/org/jboss/seam/core/FacesPage.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: FacesPage.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/FacesPage.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- FacesPage.java 3 Jun 2007 23:02:25 -0000 1.8
+++ FacesPage.java 10 Jun 2007 19:25:58 -0000 1.9
@@ -116,7 +116,8 @@
//we only need to execute this code when we are in the
//RENDER_RESPONSE phase, ie. not before redirects
- boolean sessionValid = !ServletSession.instance().isInvalid();
+ ServletSession servletSession = ServletSession.getInstance();
+ boolean sessionValid = servletSession!=null && !servletSession.isInvalid();
if ( sessionValid && manager.isLongRunningConversation() )
{
storeConversation( manager.getCurrentConversationId() );
1.167 +45 -38 jboss-seam/src/main/org/jboss/seam/core/Manager.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Manager.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Manager.java,v
retrieving revision 1.166
retrieving revision 1.167
diff -u -b -r1.166 -r1.167
--- Manager.java 9 Jun 2007 04:10:39 -0000 1.166
+++ Manager.java 10 Jun 2007 19:25:58 -0000 1.167
@@ -30,7 +30,6 @@
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
-import org.jboss.seam.contexts.ContextAdaptor;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.log.LogProvider;
@@ -44,7 +43,7 @@
*
* @author Gavin King
* @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
- * @version $Revision: 1.166 $
+ * @version $Revision: 1.167 $
*/
@Scope(ScopeType.EVENT)
@Name("org.jboss.seam.core.manager")
@@ -275,10 +274,13 @@
/**
* Clean up timed-out conversations
*/
- public void conversationTimeout(ContextAdaptor session)
+ public void conversationTimeout(Map<String, Object> session)
{
long currentTime = System.currentTimeMillis();
- List<ConversationEntry> entries = new ArrayList<ConversationEntry>( ConversationEntries.instance().getConversationEntries() );
+ ConversationEntries conversationEntries = ConversationEntries.getInstance();
+ if (conversationEntries!=null)
+ {
+ List<ConversationEntry> entries = new ArrayList<ConversationEntry>( conversationEntries.getConversationEntries() );
for (ConversationEntry conversationEntry: entries)
{
boolean locked = conversationEntry.lockNoWait(); //we had better not wait for it, or we would be waiting for ALL other requests
@@ -317,11 +319,12 @@
}
}
}
+ }
/**
* Clean up all state associated with a conversation
*/
- private void destroyConversation(String conversationId, ContextAdaptor session)
+ private void destroyConversation(String conversationId, Map<String, Object> session)
{
Lifecycle.destroyConversationContext(session, conversationId);
ConversationEntries.instance().removeConversationEntry(conversationId);
@@ -331,7 +334,7 @@
* Touch the conversation stack, destroy ended conversations,
* and timeout inactive conversations.
*/
- public void endRequest(ContextAdaptor session)
+ public void endRequest(Map<String, Object> session)
{
if ( isLongRunningConversation() )
{
@@ -377,13 +380,17 @@
}
}
- private void removeCurrentConversationAndDestroyNestedContexts(ContextAdaptor session)
+ private void removeCurrentConversationAndDestroyNestedContexts(Map<String, Object> session)
{
- ConversationEntries.instance().removeConversationEntry( getCurrentConversationId() );
+ ConversationEntries conversationEntries = ConversationEntries.getInstance();
+ if (conversationEntries!=null)
+ {
+ conversationEntries.removeConversationEntry( getCurrentConversationId() );
destroyNestedConversationContexts( session, getCurrentConversationId() );
}
+ }
- private void destroyNestedConversationContexts(ContextAdaptor session, String conversationId)
+ private void destroyNestedConversationContexts(Map<String, Object> session, String conversationId)
{
List<ConversationEntry> entries = new ArrayList<ConversationEntry>( ConversationEntries.instance().getConversationEntries() );
for ( ConversationEntry ce: entries )
1.5 +11 -0 jboss-seam/src/main/org/jboss/seam/core/ServletSession.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ServletSession.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ServletSession.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- ServletSession.java 8 Jun 2007 19:22:47 -0000 1.4
+++ ServletSession.java 10 Jun 2007 19:25:58 -0000 1.5
@@ -8,11 +8,13 @@
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Startup;
import org.jboss.seam.contexts.Contexts;
@Scope(ScopeType.SESSION)
@Name("org.jboss.seam.core.servletSession")
@Intercept(InterceptionType.NEVER)
+ at Startup
public class ServletSession extends AbstractMutable
{
private boolean isInvalid;
@@ -79,4 +81,13 @@
return (ServletSession) Component.getInstance(ServletSession.class, ScopeType.SESSION);
}
+ public static ServletSession getInstance()
+ {
+ if ( !Contexts.isSessionContextActive() )
+ {
+ throw new IllegalStateException("No active session context");
+ }
+ return (ServletSession) Component.getInstance(ServletSession.class, ScopeType.SESSION, false);
+ }
+
}
1.20 +16 -8 jboss-seam/src/main/org/jboss/seam/core/Switcher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Switcher.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Switcher.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- Switcher.java 3 Jun 2007 23:02:25 -0000 1.19
+++ Switcher.java 10 Jun 2007 19:25:58 -0000 1.20
@@ -5,6 +5,7 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
@@ -24,7 +25,7 @@
* Support for the conversation switcher drop-down menu.
*
* @author Gavin King
- * @version $Revision: 1.19 $
+ * @version $Revision: 1.20 $
*/
@Scope(ScopeType.PAGE)
@Name("org.jboss.seam.core.switcher")
@@ -39,7 +40,13 @@
@Create
public void createSelectItems()
{
- ConversationEntries conversationEntries = ConversationEntries.instance();
+ ConversationEntries conversationEntries = ConversationEntries.getInstance();
+ if (conversationEntries==null)
+ {
+ selectItems = Collections.EMPTY_LIST;
+ }
+ else
+ {
Set<ConversationEntry> orderedEntries = new TreeSet<ConversationEntry>();
orderedEntries.addAll( conversationEntries.getConversationEntries() );
selectItems = new ArrayList<SelectItem>( conversationEntries.size() );
@@ -51,6 +58,7 @@
}
}
}
+ }
public List<SelectItem> getSelectItems()
{
More information about the jboss-cvs-commits
mailing list