[jboss-cvs] jboss-seam/src/main/org/jboss/seam/contexts ...

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/contexts           Lifecycle.java
                        ServerConversationContext.java
  Added:       src/main/org/jboss/seam/contexts           BasicContext.java
                        SessionContext.java
  Removed:     src/main/org/jboss/seam/contexts          
                        ContextAdaptor.java FacesApplicationContext.java
                        MapContext.java WebApplicationContext.java
                        WebRequestContext.java WebSessionContext.java
  Log:
  major refactor of contexts impl
  JBSEAM-953
  
  Revision  Changes    Path
  1.91      +91 -59    jboss-seam/src/main/org/jboss/seam/contexts/Lifecycle.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Lifecycle.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/contexts/Lifecycle.java,v
  retrieving revision 1.90
  retrieving revision 1.91
  diff -u -b -r1.90 -r1.91
  --- Lifecycle.java	8 Jun 2007 19:22:47 -0000	1.90
  +++ Lifecycle.java	10 Jun 2007 19:25:58 -0000	1.91
  @@ -6,13 +6,14 @@
    */
   package org.jboss.seam.contexts;
   
  +import java.util.Map;
   import java.util.Set;
   
   import javax.faces.context.ExternalContext;
   import javax.faces.event.PhaseId;
   import javax.servlet.ServletContext;
   import javax.servlet.ServletRequest;
  -import javax.servlet.http.HttpSession;
  +import javax.servlet.http.HttpServletRequest;
   
   import org.jboss.seam.Component;
   import org.jboss.seam.ScopeType;
  @@ -25,11 +26,14 @@
   import org.jboss.seam.core.ServletSession;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
  +import org.jboss.seam.servlet.ServletApplicationMap;
  +import org.jboss.seam.servlet.ServletRequestMap;
  +import org.jboss.seam.servlet.ServletRequestSessionMap;
   
   /**
    * @author Gavin King
    * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
  - * @version $Revision: 1.90 $
  + * @version $Revision: 1.91 $
    */
   public class Lifecycle
   {
  @@ -39,38 +43,35 @@
      public static void beginRequest(ExternalContext externalContext) 
      {
         log.debug( ">>> Begin web request" );
  -      Contexts.eventContext.set( new WebRequestContext( ContextAdaptor.getRequest(externalContext) ) );
  -      Contexts.applicationContext.set( new FacesApplicationContext(externalContext) );
  -      ContextAdaptor session = ContextAdaptor.getSession(externalContext);
  -      Contexts.sessionContext.set( new WebSessionContext(session) );
  -      ServletSession servletSession = ServletSession.instance();
  -      if ( servletSession!=null /*yuck! unit tests!*/ && servletSession.isInvalidDueToNewScheme() )
  -      {
  -         session.invalidate();
  -         session = ContextAdaptor.getSession(externalContext);
  -         Contexts.sessionContext.set( new WebSessionContext(session) );
  +      Contexts.eventContext.set( new BasicContext( ScopeType.EVENT, externalContext.getRequestMap() ) );
  +      Contexts.applicationContext.set( new BasicContext( ScopeType.APPLICATION, externalContext.getApplicationMap() ) );
  +      Contexts.sessionContext.set( new SessionContext( externalContext.getSessionMap() ) );
  +      ServletSession servletSession = ServletSession.getInstance();
  +      if ( servletSession!=null && servletSession.isInvalidDueToNewScheme() )
  +      {
  +         invalidateSession(externalContext);
         }
         Contexts.conversationContext.set(null); //in case endRequest() was never called
         //Events.instance(); //TODO: only for now, until we have a way to do EL outside of JSF!
      }
   
  -   public static void beginRequest(ServletContext servletContext, HttpSession session, ServletRequest request) 
  +   public static void beginRequest(ServletContext servletContext, HttpServletRequest request) 
      {
         log.debug( ">>> Begin web request" );
  -      Contexts.eventContext.set( new WebRequestContext( ContextAdaptor.getRequest(request) ) );
  -      Contexts.sessionContext.set( new WebSessionContext( ContextAdaptor.getSession(session) ) );
  -      Contexts.applicationContext.set( new WebApplicationContext(servletContext) );
  +      Contexts.eventContext.set( new BasicContext( ScopeType.EVENT, new ServletRequestMap(request) ) );
  +      Contexts.sessionContext.set( new SessionContext( new ServletRequestSessionMap(request) ) );
  +      Contexts.applicationContext.set( new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap(servletContext) ) );
         Contexts.conversationContext.set(null); //in case endRequest() was never called
      }
   
      public static void beginCall()
      {
         log.debug( ">>> Begin call" );
  -      Contexts.eventContext.set( new MapContext(ScopeType.EVENT) );
  -      Contexts.sessionContext.set( new MapContext(ScopeType.SESSION) );
  -      Contexts.conversationContext.set( new MapContext(ScopeType.CONVERSATION) );
  +      Contexts.eventContext.set( new BasicContext(ScopeType.EVENT) );
  +      Contexts.sessionContext.set( new BasicContext(ScopeType.SESSION) );
  +      Contexts.conversationContext.set( new BasicContext(ScopeType.CONVERSATION) );
         Contexts.businessProcessContext.set( new BusinessProcessContext() );
  -      Contexts.applicationContext.set( new WebApplicationContext( getServletContext() ) );
  +      Contexts.applicationContext.set( new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap( getServletContext() ) ) );
      }
   
      public static void endCall()
  @@ -94,7 +95,7 @@
   
      public static void mockApplication()
      {
  -      Contexts.applicationContext.set( new WebApplicationContext( getServletContext() ) );
  +      Contexts.applicationContext.set( new BasicContext(ScopeType.APPLICATION, new ServletApplicationMap( getServletContext() ) ) );
      }
   
      public static void unmockApplication()
  @@ -105,7 +106,7 @@
      public static Context beginMethod()
      {
         Context result = Contexts.methodContext.get();
  -      Contexts.methodContext.set( new MapContext(ScopeType.METHOD) );
  +      Contexts.methodContext.set( new BasicContext(ScopeType.METHOD) );
         return result;
      }
   
  @@ -116,25 +117,25 @@
   
      public static void beginInitialization(ServletContext servletContext)
      {
  -      Contexts.applicationContext.set( new WebApplicationContext(servletContext) );
  -      Contexts.eventContext.set( new MapContext(ScopeType.EVENT) );
  -      Contexts.conversationContext.set( new MapContext(ScopeType.CONVERSATION) );
  +      Contexts.applicationContext.set( new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap(servletContext) ) );
  +      Contexts.eventContext.set( new BasicContext(ScopeType.EVENT) );
  +      Contexts.conversationContext.set( new BasicContext(ScopeType.CONVERSATION) );
      }
   
  -   public static void beginReinitialization(ServletContext servletContext, HttpSession session)
  +   public static void beginReinitialization(ServletContext servletContext, HttpServletRequest request)
      {
  -      Contexts.applicationContext.set( new WebApplicationContext(servletContext) );
  -      Contexts.eventContext.set( new MapContext(ScopeType.EVENT) );
  -      Contexts.sessionContext.set( new WebSessionContext( ContextAdaptor.getSession(session) ) );
  -      Contexts.conversationContext.set( new MapContext(ScopeType.CONVERSATION) );
  +      Contexts.applicationContext.set(new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap(servletContext) ) );
  +      Contexts.eventContext.set( new BasicContext(ScopeType.EVENT) );
  +      Contexts.sessionContext.set( new SessionContext( new ServletRequestSessionMap(request) ) );
  +      Contexts.conversationContext.set( new BasicContext(ScopeType.CONVERSATION) );
      }
   
      public static void beginExceptionRecovery(ExternalContext externalContext)
      {
  -      Contexts.applicationContext.set( new FacesApplicationContext(externalContext) );
  -      Contexts.eventContext.set( new WebRequestContext( ContextAdaptor.getRequest(externalContext) ) );
  -      Contexts.sessionContext.set( new WebSessionContext( ContextAdaptor.getSession(externalContext) ) );
  -      Contexts.conversationContext.set( new ServerConversationContext( ContextAdaptor.getSession(externalContext) ) );
  +      Contexts.applicationContext.set( new BasicContext( ScopeType.APPLICATION, externalContext.getApplicationMap() ) );
  +      Contexts.eventContext.set( new BasicContext( ScopeType.EVENT, externalContext.getRequestMap() ) );
  +      Contexts.sessionContext.set( new SessionContext( externalContext.getSessionMap() ) );
  +      Contexts.conversationContext.set( new ServerConversationContext( externalContext.getSessionMap() ) );
         Contexts.pageContext.set(null);
         Contexts.businessProcessContext.set(null); //TODO: is this really correct?
      }
  @@ -197,7 +198,7 @@
      {
         log.debug("Undeploying, destroying application context");
   
  -      Context tempApplicationContext = new WebApplicationContext(servletContext);
  +      Context tempApplicationContext = new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap(servletContext) );
         Contexts.applicationContext.set( tempApplicationContext );
         Contexts.destroy(tempApplicationContext);
         Contexts.applicationContext.set(null);
  @@ -209,7 +210,7 @@
     /***
       * Instantiate @Startup components for session scoped component
       */
  -   public static void beginSession(ServletContext servletContext, ContextAdaptor session)
  +   public static void beginSession(ServletContext servletContext, Map<String, Object> session)
      {
         log.debug("Session started");
         
  @@ -219,31 +220,32 @@
         boolean applicationContextActive = Contexts.isApplicationContextActive();
         boolean eventContextActive = Contexts.isEventContextActive();
         boolean conversationContextActive = Contexts.isConversationContextActive();
  +      boolean sessionContextActive = Contexts.isSessionContextActive();
         if ( !applicationContextActive )
         {
  -         Context tempApplicationContext = new WebApplicationContext(servletContext);
  +         Context tempApplicationContext = new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap(servletContext) );
            Contexts.applicationContext.set(tempApplicationContext);
         }
  +      if ( !sessionContextActive )
  +      {
  +         Context tempSessionContext = new SessionContext(session);
  +         Contexts.sessionContext.set(tempSessionContext);
  +      }
         Context tempEventContext = null;
         if ( !eventContextActive )
         {
  -         tempEventContext = new MapContext(ScopeType.EVENT);
  +         tempEventContext = new BasicContext(ScopeType.EVENT);
            Contexts.eventContext.set(tempEventContext);
         }
         Context tempConversationContext = null;
         if ( !conversationContextActive )
         {
  -         tempConversationContext = new MapContext(ScopeType.CONVERSATION);
  +         tempConversationContext = new BasicContext(ScopeType.CONVERSATION);
            Contexts.conversationContext.set(tempConversationContext);
         }
   
  -      Context tempSessionContext = new WebSessionContext(session);
  -      Contexts.sessionContext.set(tempSessionContext);
  -
         startup(ScopeType.SESSION);
   
  -      Contexts.sessionContext.set(null);
  -      
         if ( !conversationContextActive )
         {
            Contexts.destroy(tempConversationContext);
  @@ -254,6 +256,10 @@
            Contexts.destroy(tempEventContext);
            Contexts.eventContext.set(null);
         }
  +      if ( !sessionContextActive )
  +      {
  +         Contexts.sessionContext.set(null);
  +      }
         if ( !applicationContextActive ) 
         {
            Contexts.applicationContext.set(null);
  @@ -261,7 +267,7 @@
         
      }
   
  -   public static void endSession(ServletContext servletContext, ContextAdaptor session)
  +   public static void endSession(ServletContext servletContext, Map<String, Object> session)
      {
         log.debug("End of session, destroying contexts");
         
  @@ -274,16 +280,16 @@
            throw new IllegalStateException("Please end the HttpSession via Seam.invalidateSession()");
         }
         
  -      Context tempApplicationContext = new WebApplicationContext(servletContext);
  +      Context tempApplicationContext = new BasicContext( ScopeType.APPLICATION, new ServletApplicationMap(servletContext) );
         Contexts.applicationContext.set(tempApplicationContext);
   
         //this is used just as a place to stick the ConversationManager
  -      Context tempEventContext = new MapContext(ScopeType.EVENT);
  +      Context tempEventContext = new BasicContext(ScopeType.EVENT);
         Contexts.eventContext.set(tempEventContext);
   
         //this is used (a) for destroying session-scoped components
         //and is also used (b) by the ConversationManager
  -      Context tempSessionContext = new WebSessionContext(session);
  +      Context tempSessionContext = new SessionContext(session);
         Contexts.sessionContext.set(tempSessionContext);
   
         Set<String> conversationIds = ConversationEntries.instance().getConversationIds();
  @@ -295,7 +301,7 @@
         
         //we need some conversation-scope components for destroying
         //the session context...
  -      Context tempConversationContext = new MapContext(ScopeType.CONVERSATION);
  +      Context tempConversationContext = new BasicContext(ScopeType.CONVERSATION);
         Contexts.conversationContext.set(tempConversationContext);
   
         log.debug("destroying session context");
  @@ -317,7 +323,8 @@
         log.debug("After render response, destroying contexts");
         try
         {
  -         boolean sessionInvalid = ServletSession.instance().isInvalid();
  +         ServletSession servletSession = ServletSession.getInstance();
  +         boolean sessionInvalid = servletSession!=null && servletSession.isInvalid();
            
            flushAndDestroyContexts();
   
  @@ -325,7 +332,7 @@
            {
               clearThreadlocals();
               Lifecycle.setPhaseId(null);
  -            ContextAdaptor.getSession(externalContext).invalidate(); //huh? we create a session just to invalidate it?
  +            invalidateSession(externalContext);
               //actual session context will be destroyed from the listener
            }
         }
  @@ -337,6 +344,27 @@
         log.debug( "<<< End web request" );
      }
   
  +   /**
  +    * Invalidate the session, no matter what kind of session it is
  +    * (portlet or servlet). Why is this method not on ExternalContext?!
  +    * Oh boy, those crazy rascals in the JSF EG...
  +    */
  +   public static void invalidateSession(ExternalContext externalContext)
  +   {
  +      Object session = externalContext.getSession(false);
  +      if (session!=null)
  +      {
  +         try
  +         {
  +            session.getClass().getMethod("invalidate").invoke(session);
  +         }
  +         catch (Exception e)
  +         {
  +            throw new RuntimeException(e);
  +         }
  +      }
  +   }
  +
      public static void endRequest() 
      {
   
  @@ -354,21 +382,22 @@
         log.debug( "<<< End web request" );
      }
   
  -   public static void endRequest(HttpSession session) 
  +   public static void endRequest(HttpServletRequest request) 
      {
   
         log.debug("After request, destroying contexts");
   
         try
         {
  -         boolean sessionInvalid = ServletSession.instance().isInvalid();
  +         ServletSession servletSession = ServletSession.getInstance();
  +         boolean sessionInvalid = servletSession!=null && servletSession.isInvalid();
            
            flushAndDestroyContexts();
   
            if (sessionInvalid)
            {
               clearThreadlocals();
  -            ContextAdaptor.getSession(session).invalidate(); //huh? we create a session just to invalidate it?
  +            request.getSession().invalidate();
               //actual session context will be destroyed from the listener
            }
         }
  @@ -429,7 +458,10 @@
            }
   
            //uses the event and session contexts
  +         if ( ServletSession.getInstance()!=null )
  +         {
            Manager.instance().unlockConversation();
  +         }
   
         }
         
  @@ -460,14 +492,14 @@
         Init init = Init.instance();
         Context conversationContext = init.isClientSideConversations() ?
               (Context) new ClientConversationContext() :
  -            (Context) new ServerConversationContext( ContextAdaptor.getSession(externalContext) );
  +            (Context) new ServerConversationContext( externalContext.getSessionMap() );
         Contexts.conversationContext.set( conversationContext );
         Contexts.businessProcessContext.set( new BusinessProcessContext() );
      }
   
  -   public static void resumeConversation(HttpSession session)
  +   public static void resumeConversation(HttpServletRequest request)
      {
  -      Context conversationContext = new ServerConversationContext( ContextAdaptor.getSession(session) );
  +      Context conversationContext = new ServerConversationContext( new ServletRequestSessionMap(request) );
         Contexts.conversationContext.set( conversationContext );
         Contexts.businessProcessContext.set( new BusinessProcessContext() );
      }
  @@ -534,7 +566,7 @@
         return attribute instanceof Mutable && ( (Mutable) attribute ).clearDirty();
      }
   
  -   public static void destroyConversationContext(ContextAdaptor session, String conversationId)
  +   public static void destroyConversationContext(Map<String, Object> session, String conversationId)
      {
         ServerConversationContext conversationContext = new ServerConversationContext(session, conversationId);
         Context old = Contexts.getConversationContext();
  
  
  
  1.23      +17 -18    jboss-seam/src/main/org/jboss/seam/contexts/ServerConversationContext.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ServerConversationContext.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/contexts/ServerConversationContext.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -b -r1.22 -r1.23
  --- ServerConversationContext.java	3 Jun 2007 19:19:06 -0000	1.22
  +++ ServerConversationContext.java	10 Jun 2007 19:25:58 -0000	1.23
  @@ -6,7 +6,6 @@
    */
   package org.jboss.seam.contexts;
   
  -import java.util.Enumeration;
   import java.util.HashMap;
   import java.util.HashSet;
   import java.util.LinkedList;
  @@ -27,11 +26,11 @@
    * 
    * @author Gavin King
    * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
  - * @version $Revision: 1.22 $
  + * @version $Revision: 1.23 $
    */
   public class ServerConversationContext implements Context {
   
  -   private final ContextAdaptor session;
  +   private final Map<String, Object> session;
      private final Map<String, Object> additions = new HashMap<String, Object>();
      private final Set<String> removals = new HashSet<String>();
      private final String id;
  @@ -67,14 +66,14 @@
         return ScopeType.CONVERSATION.getPrefix() + '#' + id + '$';
      }
   
  -   public ServerConversationContext(ContextAdaptor session)
  +   public ServerConversationContext(Map<String, Object> session)
      {
         this.session = session;
         id = null;
         idStack = null;
      }
         
  -   public ServerConversationContext(ContextAdaptor session, String id)
  +   public ServerConversationContext(Map<String, Object> session, String id)
      {
         this.session = session;
         this.id = id;
  @@ -100,14 +99,14 @@
               List<String> stack = getIdStack();
               if (stack==null)
               {
  -               return unwrapEntityBean( session.getAttribute( getKey(name) ) );
  +               return unwrapEntityBean( session.get( getKey(name) ) );
               }
               else
               {
                  for ( int i=0; i<stack.size(); i++ )
                  {
                     String id = stack.get(i);
  -                  result = session.getAttribute( getKey(name, id) );
  +                  result = session.get( getKey(name, id) );
   
                     if (result != null) 
                     {
  @@ -126,7 +125,8 @@
         }
       }
   
  -    private boolean isPerNestedConversation(String name) {
  +    private boolean isPerNestedConversation(String name) 
  +    {
           Component component = Component.forName(name);
           return (component != null) && component.beanClassHasAnnotation(PerNestedConversation.class);
       }
  @@ -187,11 +187,10 @@
      private Set<String> getNamesFromSession() 
      {
         HashSet<String> results = new HashSet<String>();
  -      Enumeration names = session.getAttributeNames();
         String prefix = getPrefix( getId() );
  -      while ( names.hasMoreElements() ) {
  -         String name = (String) names.nextElement();
  -         if ( name.startsWith(prefix) && session.getAttribute(name)!=null )
  +      for ( String name: session.keySet() ) 
  +      {
  +         if ( name.startsWith(prefix) )
            {
               name = name.substring( prefix.length() );
               if ( !removals.contains(name) ) results.add(name);
  @@ -227,31 +226,31 @@
            for ( String name: getNamesFromSession() )
            {
               String key = getKey(name);
  -            Object attribute = session.getAttribute(key);
  +            Object attribute = session.get(key);
               if ( attribute!=null && Lifecycle.isAttributeDirty(attribute) )
               {
  -               session.setAttribute(key, attribute);
  +               session.put(key, attribute);
               }
            }
            //remove removed objects
            for (String name: removals)
            {
  -            session.removeAttribute( getKey(name) );
  +            session.remove( getKey(name) );
            }
            removals.clear();
            //add new objects
            for (Map.Entry<String, Object> entry: additions.entrySet())
            {
  -            session.setAttribute( getKey( entry.getKey() ), entry.getValue() );
  +            session.put( getKey( entry.getKey() ), entry.getValue() );
            }
            additions.clear();
         }
         else
         {
            //TODO: for a pure temporary conversation, this is unnecessary, optimize it
  -         for (String name: getNamesFromSession())
  +         for ( String name: getNamesFromSession() )
            {
  -            session.removeAttribute( getKey(name) );
  +            session.remove( getKey(name) );
            }
         }
      }
  
  
  
  1.1      date: 2007/06/10 19:25:58;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/contexts/BasicContext.java
  
  Index: BasicContext.java
  ===================================================================
  //$Id: BasicContext.java,v 1.1 2007/06/10 19:25:58 gavin Exp $
  package org.jboss.seam.contexts;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import org.jboss.seam.Component;
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.core.Events;
  
  public class BasicContext implements Context
  {
     
     private final Map<String, Object> map;
     private final ScopeType scope;
     
     public BasicContext(ScopeType scope)
     {
        this.scope = scope;
        this.map = new HashMap<String, Object>();
     }
  
     public BasicContext(ScopeType scope, Map<String, Object> map)
     {
        this.scope = scope;
        this.map = map;
     }
  
     public ScopeType getType()
     {
        return scope;
     }
  
     public Object get(Class clazz)
     {
        return get( Component.getComponentName(clazz) );
     }
  
     public Object get(String name)
     {
        return map.get(name);
     }
  
     public String[] getNames()
     {
        return map.keySet().toArray(new String[0]);
     }
  
     public boolean isSet(String name)
     {
        return map.containsKey(name);
     }
  
     public void remove(String name)
     {
        if ( Events.exists() ) Events.instance().raiseEvent("org.jboss.seam.preRemoveVariable." + name);
        map.remove(name);
        if ( Events.exists() ) Events.instance().raiseEvent("org.jboss.seam.postRemoveVariable." + name);
     }
  
     public void set(String name, Object value)
     {
        if ( Events.exists() ) Events.instance().raiseEvent("org.jboss.seam.preSetVariable." + name);
        map.put(name, value);
        if ( Events.exists() ) Events.instance().raiseEvent("org.jboss.seam.postSetVariable." + name);
     }
  
     public void flush() {}
  
  }
  
  
  
  1.1      date: 2007/06/10 19:25:58;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/contexts/SessionContext.java
  
  Index: SessionContext.java
  ===================================================================
  /*
   * JBoss, Home of Professional Open Source
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.seam.contexts;
  
  import java.util.ArrayList;
  import java.util.Map;
  
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.Seam;
  
  /**
   * @author Gavin King
   * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
   * @version $Revision: 1.1 $
   */
  public class SessionContext extends BasicContext 
  {
     
     public SessionContext(Map<String, Object> map)
     {
        super(ScopeType.SESSION, map);
     }
  
     @Override
  	public String[] getNames() 
     {
  		ArrayList<String> results = new ArrayList<String>();
        String prefix = ScopeType.CONVERSATION.getPrefix();
        for ( String name: super.getNames() ) 
        {
           if ( !name.contains(prefix) )
           {
              results.add(name);
           }
        }
  		return results.toArray(new String[]{});
  	}
     
     @Override
     public void flush() 
     {
        for ( String name: getNames() )
        {
           Object attribute = get(name);
           boolean dirty = attribute!=null && 
                 ( Lifecycle.isAttributeDirty(attribute) || Seam.isEntityClass( attribute.getClass() ) );
           if ( dirty )
           {
              set(name, attribute);
           }
        }      
     }
    
  }
  
  
  



More information about the jboss-cvs-commits mailing list