You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-commits@incubator.apache.org by aw...@apache.org on 2006/12/21 18:10:02 UTC

svn commit: r489424 - in /incubator/adffaces/branches/jwaldman-portal/trinidad: ./ trinidad-api/ trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/ trinidad-impl/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ trini...

Author: awiner
Date: Thu Dec 21 10:09:54 2006
New Revision: 489424

URL: http://svn.apache.org/viewvc?view=rev&rev=489424
Log:
Cleanup GlobalConfiguratorImpl and Configurator classes

Removed:
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/GenericConfigurator.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/GlobalConfigurator.java
Modified:
    incubator/adffaces/branches/jwaldman-portal/trinidad/pom.xml
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/pom.xml
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/Configurator.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/pom.xml
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/FacesContextFactoryImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletSessionMap.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.GlobalConfigurator

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/pom.xml
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/pom.xml?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/pom.xml (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/pom.xml Thu Dec 21 10:09:54 2006
@@ -338,6 +338,13 @@
       </dependency>
 
       <dependency>
+        <groupId>portlet-api</groupId>
+        <artifactId>portlet-api</artifactId>
+        <version>1.0</version>
+        <scope>provided</scope>
+      </dependency>
+
+      <dependency>
         <groupId>org.apache.myfaces.core</groupId>
         <artifactId>myfaces-api</artifactId>
         <version>1.1.4</version>

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/pom.xml
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/pom.xml?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/pom.xml (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/pom.xml Thu Dec 21 10:09:54 2006
@@ -132,13 +132,6 @@
     </dependency>
 
     <dependency>
-      <groupId>portlet-api</groupId>
-      <artifactId>portlet-api</artifactId>
-      <version>1.0</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-api</artifactId>
     </dependency>

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/Configurator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/Configurator.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/Configurator.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/config/Configurator.java Thu Dec 21 10:09:54 2006
@@ -18,10 +18,15 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import javax.faces.context.ExternalContext;
 import javax.servlet.ServletRequest;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.util.ClassLoaderUtils;
 
 /**
  * This defines an abstract class for the Configurator. Classes implementing
@@ -50,9 +55,66 @@
  * @author Scott O'Bryan (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
-public class Configurator
+abstract public class Configurator
 {
   /**
+   * Returns the proper instance of the Configurator.
+   * An ExternalContext is generally passed to ensure that
+   * a Configurator can properly be created, if necessary.
+   * However, a null ExternalContext may be passed if
+   * there is no requirement that a Configurator be created
+   * if not already loaded - calls to destroy() are the
+   * most obvious scenario.
+   */
+  static public Configurator getInstance(ExternalContext ec)
+  {
+    ClassLoader loader = Thread.currentThread().getContextClassLoader();
+    
+    if (loader == null)
+      _LOG.severe("Could not find context class loader.");
+    else
+    {
+      // FIXME: would probably be better to just use ConcurrentHashMap
+      synchronized(_CONFIGURATORS)
+      {
+        Configurator config = _CONFIGURATORS.get(loader);
+        if ((config == null) && (ec != null))
+        {
+          try
+          {
+            List<Configurator> configs = ClassLoaderUtils.getServices(
+               _GLOBAL_CONFIGURATOR);
+            if (configs.isEmpty())
+            {
+              _LOG.severe("Could not load a global configurator");
+              // Create a null configurator (which is an empty subclass),
+              // just so we don't have to re-warn the user every time
+              config = new Configurator() {};
+            }
+            else
+            {
+              config = configs.get(0);
+            }
+
+            config.init(ec);
+            _CONFIGURATORS.put(loader, config);
+            _LOG.fine("GlobalConfigurator has been created.");
+          }
+          catch (RuntimeException e)
+          {
+            // OC4J was not reporting these errors properly:
+            _LOG.severe(e);
+            throw e;
+          }
+        }
+        return config;
+      }
+    } 
+
+    return null;
+  }
+
+  /**
    * Initializes the Configurator.  This method is guaranteed to run before
    * any other method within this Configurator and will be called by the
    * GlobalConfigurator only once per webapp context.  This init is
@@ -144,62 +206,39 @@
    * Disables Configurator services for the current request.  When this method
    * has been called on a request, then calls to beginRequest, endRequest, and
    * getExternalContext will not execute any of the associated services or
-   * initialize the RequestContext.  After the physical request is complete
-   * then this flag will automatically be cleared.
+   * initialize the RequestContext.
    * 
-   * <p><string>Note:</strong> that this command should be execured before
+   * <p><string>Note:</strong> that this command should be executed before
    * {@link Configurator#beginRequest(ExternalContext)}.</p>
    * 
-   * @param request the HttpServletRequest for which to disable this configurator
-   * @throws InvocationTargetException 
-   * @throws IllegalAccessException 
-   * @throws IllegalArgumentException 
-   * 
-   * @throws IllegalStateException when this is run after a beginRequest on
-   *         the current request.
+   * @param ec the ExternalContext
    */
-  public static final void disableConfiguratorServices(final ServletRequest request)
+  public static final void disableConfiguratorServices(ExternalContext ec)
   {
-    ClassLoader loader = Thread.currentThread().getContextClassLoader();
-    if (loader == null)
-      _LOG.severe("Could not find context class loader.");
-    else
-    {
-      try
-      {
-        //We have to use the IMPL method because this is final so people don't override it
-        Method disable = loader.loadClass("org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl")
-                               .getMethod("disableConfiguratorServicesImpl", _SERVLET_REQUEST_ARRAY);
-        Object[] paramArray = {request};
-        disable.invoke(null, paramArray);
-      }
-      catch (ClassNotFoundException e)
-      {
-        _LOG.severe(e);
-      }
-      catch (SecurityException e)
-      {
-        _LOG.severe(e);
-      }
-      catch (NoSuchMethodException e)
-      {
-        _LOG.severe(e);
-      }
-      catch (IllegalArgumentException e)
-      {
-        _LOG.severe(e);      
-      }
-      catch (IllegalAccessException e)
-      {
-        _LOG.severe(e);      
-      }
-      catch (InvocationTargetException e)
-      {
-        _LOG.severe(e);
-      }
-    }
+    ec.getRequestMap().put(_DISABLE_SERVICES, Boolean.TRUE);
+  }
+
+  /**
+   * Utility to disable configurator services without access to
+   * an ExternalContext.
+   */
+  public static final void disableConfiguratorServices(ServletRequest srq)
+  {
+    srq.setAttribute(_DISABLE_SERVICES, Boolean.TRUE);
+  }
+
+  public static final boolean isConfiguratorServiceDisabled(ExternalContext ec)
+  {
+    return Boolean.TRUE.equals(ec.getRequestMap().get(_DISABLE_SERVICES));
   }
   
   private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(Configurator.class);
   private static final Class[] _SERVLET_REQUEST_ARRAY = {ServletRequest.class};
+
+  static private final String _GLOBAL_CONFIGURATOR =
+    "org.apache.myfaces.trinidad.config.GlobalConfigurator";
+  static private final String _DISABLE_SERVICES =
+    "org.apache.myfaces.trinidad.config.DISABLE_SERVICES";
+  static private final Map<ClassLoader, Configurator> _CONFIGURATORS
+   = new HashMap<ClassLoader, Configurator>();
 }

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/pom.xml
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/pom.xml?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/pom.xml (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/pom.xml Thu Dec 21 10:09:54 2006
@@ -171,8 +171,6 @@
     <dependency>
       <groupId>portlet-api</groupId>
       <artifactId>portlet-api</artifactId>
-      <version>1.0</version>
-      <scope>provided</scope>
     </dependency>
 
     <dependency>

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java Thu Dec 21 10:09:54 2006
@@ -40,6 +40,8 @@
  * @author Scott O'Bryan (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
+//FIXME: destroy() and endRequest() should go in inverse order
+// from init() and startRequest()
 public class GlobalConfiguratorImpl extends Configurator
 {
   /**
@@ -56,64 +58,12 @@
     return Boolean.TRUE.equals(ec.getRequestMap().get(_IN_REQUEST));
   }
   
-  /**
-   * 
-   */
-  public static boolean isRequestDisabled(final ExternalContext ec)
-  {
-    return _DISABLED.equals(ec.getRequestMap().get(_IN_REQUEST));
-  }
-  
-  /**
-   * Returns a GlobalConfigurator instance for the current context's class loader.  The
-   * GlobalConfigurator is responsible for enforcing the contract on the other methods
-   * of this class.  This means that if {@link #init(ExternalContext)} is called multiple
-   * times, the global configurator will call all subordinate configurators only once.
-   * 
-   * <p>Likewise, the GlobalConfigurator will return exceptions when the contract is
-   * expressly violated (like if {@link #getExternalContext(ExternalContext)} is called
-   * before a {{@link #beginRequest(ExternalContext)}.
-   * 
-   * @return a GlobalConfigurator or <code>null</code> is one was unable to be obtained.
-   */
-  public static final GlobalConfiguratorImpl getInstance()
-  {
-    ClassLoader loader = Thread.currentThread().getContextClassLoader();
-    
-    if (loader == null)
-      _LOG.severe("Could not find context class loader.");
-    else
-    {
-      synchronized(_CONFIGURATORS)
-      {
-        GlobalConfiguratorImpl config = _CONFIGURATORS.get(loader);
-        if(config == null)
-        {
-          try
-          {
-            config = new GlobalConfiguratorImpl();
-            _CONFIGURATORS.put(loader, config);
-          }
-          catch (RuntimeException e)
-          {
-            // OC4J was not reporting these errors properly:
-            _LOG.severe(e);
-            throw e;
-          }
-          _LOG.fine("GlobalConfigurator has been created.");
-        }
-        return config;
-      }
-    } 
-    return null;
-  }
 
   /**
    * Default constructor
    */
-  private GlobalConfiguratorImpl()
+  public GlobalConfiguratorImpl()
   {
-    _services = ClassLoaderUtils.getServices(Configurator.class.getName());
   }
 
   /*
@@ -122,11 +72,11 @@
    * @see org.apache.myfaces.trinidad.config.Configurator#beginRequest(javax.faces.context.ExternalContext)
    */
   @SuppressWarnings("unchecked")
-  public void beginRequest(final ExternalContext externalContext)
+  public void beginRequest(ExternalContext externalContext)
   {
     _checkInitialized();
     
-    if(!isRequestDisabled(externalContext))
+    if(!isConfiguratorServiceDisabled(externalContext))
     {
       _attachRequestContext(externalContext);
   
@@ -170,10 +120,6 @@
         // we always want to continue to destroy things, so log errors and continue
         _LOG.severe(t);
       }
-      finally
-      {
-        _initialized = false;
-      }
     }
   }
 
@@ -186,7 +132,7 @@
   {
     _checkInitialized();
     
-    if (!isRequestDisabled(externalContext))
+    if (!isConfiguratorServiceDisabled(externalContext))
     {
       if (isRequestBegun(externalContext))
       {
@@ -216,7 +162,7 @@
   {
     _checkInitialized();
     
-    if(!isRequestDisabled(externalContext))
+    if(!isConfiguratorServiceDisabled(externalContext))
     {
       // Wrap ExternalContexts
       for (final Configurator config : _services)
@@ -228,19 +174,13 @@
     return externalContext;
   }
 
-  /**
-   * Gets the maximum number of bytes that MultipartFormItem.writeFile() will be allowed to write.
-   */
-  public long getMaximumAllowedBytes()
-  {
-    return _maxAllowedBytes;
-  }
-
   /*
    * @see org.apache.myfaces.trinidad.config.Configurator#init(javax.faces.context.ExternalContext)
    */
-  public void init(final ExternalContext externalContext)
+  public void init(ExternalContext externalContext)
   {
+    _services = ClassLoaderUtils.getServices(Configurator.class.getName());
+
     // Create a new RequestContextFactory is needed
     if (RequestContextFactory.getFactory() == null)
     {
@@ -253,58 +193,21 @@
       SkinFactory.setFactory(new SkinFactoryImpl());
     }
 
-    if (!_initialized)
-    {
-      // register the base skins
-      SkinUtils.registerBaseSkins();
-
-      for (final Configurator config : _services)
-      {
-        config.init(externalContext);
-      }
-
-      // after the 'services' filters are initialized, then register
-      // the skin extensions found in trinidad-skins.xml. This
-      // gives a chance to the 'services' filters to create more base
-      // skins that the skins in trinidad-skins.xml can extend.
-      SkinUtils.registerSkinExtensions(externalContext);
-      _initialized = true;
-    }
-  }
-
-  public boolean isInitialized()
-  {
-    return _initialized;
-  }
-
-  /* Do not refactor this as it's called using reflection from the API package
-   * 
-   * @see org.apache.myfaces.trinidad.config.Configurator#disableConfiguratorServices(javax.servlet.http.HttpServletRequest)
-   */
-  public static void disableConfiguratorServicesImpl(final ServletRequest request)
-  {
-    if(Boolean.TRUE.equals(request.getAttribute(_IN_REQUEST)))
+    // register the base skins
+    SkinUtils.registerBaseSkins();
+    
+    for (final Configurator config : _services)
     {
-        throw new IllegalStateException("Request is already begun.");
+      config.init(externalContext);
     }
     
-    request.setAttribute(_IN_REQUEST, _DISABLED);
-  }
+    // after the 'services' filters are initialized, then register
+    // the skin extensions found in trinidad-skins.xml. This
+    // gives a chance to the 'services' filters to create more base
+    // skins that the skins in trinidad-skins.xml can extend.
+    SkinUtils.registerSkinExtensions(externalContext);
 
-  /**
-   * Sets the maximum number of bytes that MultipartFormItem.writeFile() will be allowed to write.
-   * This value may be set immediately before or between calls to MultipartFormItem.writeFile(). If
-   * any call to writeFile() exceeds this value, an EOFException will be thrown.
-   * <p>
-   * 
-   * @param maxAllowedBytes
-   *          the maximum number of bytes that MultipartFormItem.writeFile() will be allowed to
-   *          write. Defaults to 128MB.
-   * @see org.apache.myfaces.trinidadinternal.share.util.MultipartFormItem#writeFile
-   */
-  public void setMaximumAllowedBytes(final long maxAllowedBytes)
-  {
-    _maxAllowedBytes = Math.max(0L, maxAllowedBytes);
+    _inited = true;
   }
 
   /**
@@ -353,7 +256,7 @@
 
   private void _checkInitialized()
   {
-    if (!isInitialized())
+    if (!_inited)
     {
       throw new IllegalStateException("Configurator not initialized!");
     }
@@ -365,12 +268,9 @@
    * @see org.apache.myfaces.trinidad.config.GlobalConfigurator#getPersistantRequestMap(javax.faces.context.ExternalContext)
    */
 
-  private boolean                     _initialized           = false;
-  private long                        _maxAllowedBytes;
-  private List<Configurator>          _services              = null;
+  private boolean                     _inited;
+  private List<Configurator>          _services;
   
   static private final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(GlobalConfiguratorImpl.class);
-  static private final Map<ClassLoader, GlobalConfiguratorImpl> _CONFIGURATORS = new HashMap<ClassLoader, GlobalConfiguratorImpl>();
   static private final String _IN_REQUEST = GlobalConfiguratorImpl.class.getName()+".IN_REQUEST";
-  static private final String _DISABLED = "disabled";
  }

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java Thu Dec 21 10:09:54 2006
@@ -200,6 +200,10 @@
    * @param context
    * @return
    */
+  // FIXME: AdamWiner: I don't get how this could be applied
+  // twice - that would be a bug in the configurator system,
+  // and should be handled at that layer, not in individual
+  // configurators
   static public boolean isApplied(ExternalContext context)
   {
     return (context.getRequestMap().get(_APPLIED)!=null);

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java Thu Dec 21 10:09:54 2006
@@ -75,7 +75,7 @@
   }
 
   /* (non-Javadoc)
-   * @see org.apache.myfaces.trinidad.config.GenericConfigurator#beginRequest(javax.faces.context.ExternalContext)
+   * @see org.apache.myfaces.trinidad.config.Configurator#beginRequest(javax.faces.context.ExternalContext)
    */
   @Override
   @SuppressWarnings("unchecked")
@@ -89,6 +89,9 @@
      * generated the next request.  If we need to clean up sooner then we should
      * clean up on the end-request.
      */
+    // FIXME AdamWiner We should clean up ASAP - these are potentially very
+    // large allocations of memory and file, so cleaning up as soon
+    // as possible is a good thing
     //Process MultipartForm if need be
     if (MultipartFormHandler.isMultipartRequest(externalContext) && 
        (externalContext.getRequest() instanceof HttpServletRequest || 
@@ -99,6 +102,8 @@
         final MultipartFormHandler mfh = new MultipartFormHandler(externalContext);
 
         // TODO: How is this set?
+        // AdamWiner: looks like the previous Trinidad incarnation
+        // of this code didn't have any allowed configuration...
         mfh.setMaximumAllowedBytes(_maxAllowedBytes);
         mfh.setCharacterEncoding(ExternalContextUtils.getCharacterEncoding(externalContext));
 
@@ -146,7 +151,7 @@
   }
 
   /* (non-Javadoc)
-   * @see org.apache.myfaces.trinidad.config.GenericConfigurator#getExternalContext(javax.faces.context.ExternalContext)
+   * @see org.apache.myfaces.trinidad.config.Configurator#getExternalContext(javax.faces.context.ExternalContext)
    */
   @Override
   public ExternalContext getExternalContext(ExternalContext externalContext)
@@ -167,7 +172,7 @@
   }
 
   /* (non-Javadoc)
-   * @see org.apache.myfaces.trinidad.config.GenericConfigurator#init(javax.faces.context.ExternalContext)
+   * @see org.apache.myfaces.trinidad.config.Configurator#init(javax.faces.context.ExternalContext)
    */
   @Override
   public void init(ExternalContext externalContext)

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/FacesContextFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/FacesContextFactoryImpl.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/FacesContextFactoryImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/FacesContextFactoryImpl.java Thu Dec 21 10:09:54 2006
@@ -58,14 +58,9 @@
       Lifecycle lifecycle)
   {
     FacesContext fc = _factory.getFacesContext(context, request, response, lifecycle);
-    GlobalConfiguratorImpl config = GlobalConfiguratorImpl.getInstance();
     ExternalContext ec = fc.getExternalContext();
-    
-    if(!config.isInitialized())
-    {
-      config.init(ec);
-    }
-    
+
+    Configurator config = Configurator.getInstance(ec);    
     //The global configurator will make sure other configurators are run only once
     if(!GlobalConfiguratorImpl.isRequestBegun(ec))
     {
@@ -97,7 +92,9 @@
       _base = base;
       
       //SMO: TODO: is this still needed?
-      ExternalContext external = GlobalConfiguratorImpl.getInstance().getExternalContext(base.getExternalContext());
+      ExternalContext baseExternal = base.getExternalContext();
+      ExternalContext external = 
+        Configurator.getInstance(baseExternal).getExternalContext(baseExternal);
       _external = new OverrideDispatch(external);
       setCurrentInstance(this);
     }
@@ -246,7 +243,7 @@
       ExternalContext ec = getExternalContext();
       if(Boolean.TRUE.equals(ec.getApplicationMap().remove(_READY_FOR_CLEANUP)))
       {
-        GlobalConfiguratorImpl.getInstance().endRequest(ec);      
+        Configurator.getInstance(ec).endRequest(ec);
       }
       
       _base.release();

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletSessionMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletSessionMap.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletSessionMap.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletSessionMap.java Thu Dec 21 10:09:54 2006
@@ -48,7 +48,7 @@
 
   @Override
   @SuppressWarnings("unchecked")
-  protected Enumeration getAttributeNames()
+  protected Enumeration<String> getAttributeNames()
   {
     final HttpSession httpSession = _getSession();
     return httpSession == null ? NullEnumeration.instance() : httpSession.getAttributeNames();

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java Thu Dec 21 10:09:54 2006
@@ -36,7 +36,6 @@
 import org.apache.myfaces.trinidad.config.Configurator;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 import org.apache.myfaces.trinidad.util.ClassLoaderUtils;
-import org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl;
 import org.apache.myfaces.trinidadinternal.config.dispatch.DispatchResponseConfiguratorImpl;
 import org.apache.myfaces.trinidadinternal.config.dispatch.DispatchServletResponse;
 import org.apache.myfaces.trinidadinternal.config.upload.FileUploadConfiguratorImpl;
@@ -85,12 +84,7 @@
     FilterConfig filterConfig) throws ServletException
   {
       _servletContext = filterConfig.getServletContext();
-      
-      //This is the container agnostic initialization filters.  These will work in the portal
-      //as well, but they will be tied to the creation of the Lifecycle.
-      ExternalContext externalContext = new ServletExternalContext(_servletContext, null, null);
-      GlobalConfiguratorImpl.getInstance().init(externalContext);
-      
+            
       //There is some functionality that still might require servlet-only filter services.
       _filters = ClassLoaderUtils.getServices(TrinidadFilterImpl.class.getName());
       for(Filter f:_filters)
@@ -109,7 +103,9 @@
       _filters = null;
       
       //Destroy container agnostic services
-      GlobalConfiguratorImpl.getInstance().destroy();
+      Configurator config = Configurator.getInstance(null);
+      if (config != null)
+        config.destroy();
   }
 
   @SuppressWarnings("unchecked")
@@ -127,7 +123,8 @@
     request.setAttribute(_FILTER_EXECUTED_KEY, Boolean.TRUE);
 
     ExternalContext externalContext = new ServletExternalContext(_servletContext, request, response);    
-    GlobalConfiguratorImpl.getInstance().beginRequest(externalContext);
+    Configurator config = Configurator.getInstance(externalContext);
+    config.beginRequest(externalContext);
     
     //To maintain backward compatibilty, wrap the request at the filter level
     Map<String, String[]> addedParams = (Map<String, String[]>) externalContext.getRequestMap().get(FileUploadConfiguratorImpl._PARAMS);
@@ -145,7 +142,7 @@
     }
     finally
     {
-      GlobalConfiguratorImpl.getInstance().endRequest(externalContext);
+      config.endRequest(externalContext);
     }
   }
 

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java Thu Dec 21 10:09:54 2006
@@ -18,7 +18,7 @@
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
-import org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl;
+import org.apache.myfaces.trinidad.config.Configurator;
 
 /**
  * Implementation of the Trinidad Context Listener
@@ -34,13 +34,12 @@
    */
   public void contextDestroyed(ServletContextEvent arg0)
   {
-    GlobalConfiguratorImpl config = GlobalConfiguratorImpl.getInstance();
-    
-    if(config.isInitialized())
-    {
-      //clean up the global configurator if it is initialized
-      config.destroy();
-    }
+    // FIXME: why is this here?  The filter has to be installed (in
+    // a servlet environment, as for this class), and
+    // it performs cleanup, so why do we worry about cleaning up here?
+    // Configurator config = Configurator.getInstance(null);
+    // if (config != null)
+    //   config.destroy();
   }
 
   /* (non-Javadoc)

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.GlobalConfigurator
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.GlobalConfigurator?view=diff&rev=489424&r1=489423&r2=489424
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.GlobalConfigurator (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.GlobalConfigurator Thu Dec 21 10:09:54 2006
@@ -0,0 +1,2 @@
+org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl
+