[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