You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2011/02/24 14:18:19 UTC

svn commit: r1074133 - in /myfaces/extensions/cdi/trunk: core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/ core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/ core/api/src/main/java/org/apache/myfaces/exten...

Author: gpetracek
Date: Thu Feb 24 13:18:18 2011
New Revision: 1074133

URL: http://svn.apache.org/viewvc?rev=1074133&view=rev
Log:
EXTCDI-120 support for invocation order and cleanup

Added:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/InvocationOrderComparator.java
      - copied, changed from r1073441, myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/InvocationOrderComparator.java
Removed:
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/InvocationOrderComparator.java
Modified:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java?rev=1074133&r1=1074132&r2=1074133&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java Thu Feb 24 13:18:18 2011
@@ -20,7 +20,10 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.startup.event.StartupEventBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
+import org.apache.myfaces.extensions.cdi.core.api.tools.InvocationOrderComparator;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +34,12 @@ import java.io.ObjectInputStream;
 import java.io.IOException;
 
 /**
+ * This broadcaster has to be part of the api module because
+ * {@link org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider}
+ * has to use it. You don't have to use it directly. It's possible to register a
+ * {@link org.apache.myfaces.extensions.cdi.core.api.startup.event.StartupEventBroadcaster}
+ * for broadcasting custom events.
+ * 
  * @author Gerhard Petracek
  */
 public abstract class CodiStartupBroadcaster
@@ -71,15 +80,24 @@ public abstract class CodiStartupBroadca
             broadcasterFilter.put(classLoader, filter);
         }
 
+        List<StartupEventBroadcaster> broadcasters = new ArrayList<StartupEventBroadcaster>();
+
         for (StartupEventBroadcaster startupEventBroadcaster : eventBroadcasterServiceLoader)
         {
             if (!filter.contains(startupEventBroadcaster.getClass()))
             {
                 filter.add(startupEventBroadcaster.getClass());
-                startupEventBroadcaster.broadcastStartup();
+                broadcasters.add(startupEventBroadcaster);
             }
         }
 
+        Collections.sort(broadcasters, new InvocationOrderComparator<StartupEventBroadcaster>());
+
+        for (StartupEventBroadcaster startupEventBroadcaster : broadcasters)
+        {
+            startupEventBroadcaster.broadcastStartup();
+        }
+
         initialized.put(classLoader, Boolean.TRUE);
     }
 

Copied: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/InvocationOrderComparator.java (from r1073441, myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/InvocationOrderComparator.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/InvocationOrderComparator.java?p2=myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/InvocationOrderComparator.java&p1=myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/InvocationOrderComparator.java&r1=1073441&r2=1074133&rev=1074133&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/InvocationOrderComparator.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/InvocationOrderComparator.java Thu Feb 24 13:18:18 2011
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.myfaces.extensions.cdi.core.impl;
+package org.apache.myfaces.extensions.cdi.core.api.tools;
 
 import org.apache.myfaces.extensions.cdi.core.api.InvocationOrder;
 

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java?rev=1074133&r1=1074132&r2=1074133&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java Thu Feb 24 13:18:18 2011
@@ -39,9 +39,9 @@ public class ClassUtils
      * Detect the right ClassLoader.
      * The lookup order is determined by:
      * <ol>
-     *  <li>ContextClassLoader of the current Thread</li>
-     *  <li>ClassLoader of the given Object 'o'</li>
-     *  <li>ClassLoader of this very CodiUtils class</li>
+     * <li>ContextClassLoader of the current Thread</li>
+     * <li>ClassLoader of the given Object 'o'</li>
+     * <li>ClassLoader of this very CodiUtils class</li>
      * </ol>
      *
      * @param o if not <code>null</code> it may get used to detect the classloader.
@@ -50,19 +50,19 @@ public class ClassUtils
     public static ClassLoader getClassLoader(Object o)
     {
         ClassLoader loader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+        {
+            public ClassLoader run()
             {
-                public ClassLoader run()
+                try
+                {
+                    return Thread.currentThread().getContextClassLoader();
+                }
+                catch (Exception e)
                 {
-                    try
-                    {
-                        return Thread.currentThread().getContextClassLoader();
-                    }
-                    catch (Exception e)
-                    {
-                        return null;
-                    }
+                    return null;
                 }
             }
+        }
         );
 
         if (loader == null && o != null)
@@ -80,7 +80,7 @@ public class ClassUtils
 
     public static <T> Class<T> tryToLoadClassForName(String name, Class<T> targetType)
     {
-        return (Class<T>)tryToLoadClassForName(name);
+        return (Class<T>) tryToLoadClassForName(name);
     }
 
     public static Class tryToLoadClassForName(String name)
@@ -102,13 +102,13 @@ public class ClassUtils
         {
             // Try WebApp ClassLoader first
             return Class.forName(name, false, // do not initialize for faster startup
-               getClassLoader(null));
+                    getClassLoader(null));
         }
         catch (ClassNotFoundException ignore)
         {
             // fallback: Try ClassLoader for ClassUtils (i.e. the myfaces.jar lib)
             return Class.forName(name, false, // do not initialize for faster startup
-                ClassUtils.class.getClassLoader());
+                    ClassUtils.class.getClassLoader());
         }
     }
 
@@ -129,7 +129,7 @@ public class ClassUtils
     {
         try
         {
-            return (T)targetClass.newInstance();
+            return (T) targetClass.newInstance();
         }
         catch (Exception e)
         {
@@ -143,7 +143,7 @@ public class ClassUtils
         Object result = tryToInstantiateClassForName(className);
 
         //noinspection unchecked
-        return result != null ? (T)result : null;
+        return result != null ? (T) result : null;
     }
 
     public static Object tryToInstantiateClassForName(String className)
@@ -160,7 +160,7 @@ public class ClassUtils
     }
 
     public static Object instantiateClassForName(String className)
-        throws ClassNotFoundException, IllegalAccessException, InstantiationException
+            throws ClassNotFoundException, IllegalAccessException, InstantiationException
     {
         return loadClassForName(className).newInstance();
     }

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java?rev=1074133&r1=1074132&r2=1074133&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java Thu Feb 24 13:18:18 2011
@@ -21,7 +21,7 @@ package org.apache.myfaces.extensions.cd
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
 import org.apache.myfaces.extensions.cdi.core.api.config.ConfiguredValueResolver;
 import org.apache.myfaces.extensions.cdi.core.api.config.ConfiguredValueDescriptor;
-import org.apache.myfaces.extensions.cdi.core.impl.InvocationOrderComparator;
+import org.apache.myfaces.extensions.cdi.core.api.tools.InvocationOrderComparator;
 
 import javax.enterprise.inject.Typed;
 import java.util.List;

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java?rev=1074133&r1=1074132&r2=1074133&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java Thu Feb 24 13:18:18 2011
@@ -21,7 +21,7 @@ package org.apache.myfaces.extensions.cd
 import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
 import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
-import org.apache.myfaces.extensions.cdi.core.impl.InvocationOrderComparator;
+import org.apache.myfaces.extensions.cdi.core.api.tools.InvocationOrderComparator;
 import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
 import org.apache.myfaces.extensions.cdi.jsf.api.listener.phase.JsfPhaseListener;