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;