[jboss-cvs] JBossAS SVN: r77515 - trunk/ejb3/src/main/org/jboss/ejb3/client.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Aug 26 23:15:59 EDT 2008
Author: ALRubinger
Date: 2008-08-26 23:15:59 -0400 (Tue, 26 Aug 2008)
New Revision: 77515
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java
Log:
[JBCTS-843] Preserve proper PostConstruct invocation order in client handler
Modified: trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java 2008-08-27 01:52:34 UTC (rev 77514)
+++ trunk/ejb3/src/main/org/jboss/ejb3/client/ClientContainer.java 2008-08-27 03:15:59 UTC (rev 77515)
@@ -37,6 +37,7 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Stack;
import javax.naming.Context;
import javax.naming.LinkRef;
@@ -376,8 +377,10 @@
private void processPostConstructs()
throws ClassNotFoundException, SecurityException, NoSuchMethodException
{
- // First build a set of the callbacks by class
- HashMap<Class<?>, Method> pcByClass = new HashMap<Class<?>, Method>();
+ // First build a set of the callbacks by class
+ List<Class<?>> pcClasses = new ArrayList<Class<?>>();
+ Stack<Method> pcs = new Stack<Method>();
+
LifecycleCallbacksMetaData callbacks = xml.getPostConstructs();
if(callbacks != null)
{
@@ -392,11 +395,25 @@
lifecycleClass = Thread.currentThread().getContextClassLoader().loadClass(className);
Class<?> parameterTypes[] = new Class[0];
Method method = lifecycleClass.getDeclaredMethod(methodName, parameterTypes);
- pcByClass.put(lifecycleClass, method);
+
+ // If we haven't yet added the callback for this class
+ if (!pcClasses.contains(lifecycleClass))
+ {
+ // Add it
+ pcs.push(method);
+ }
+
+ // Mark that we've added callbacks for this class
+ pcClasses.add(lifecycleClass);
}
}
- // Use the unique callback methods
- postConstructs.addAll(pcByClass.values());
+
+ // Add each post construct method, preserving proper order
+ while(pcs.size()>0)
+ {
+ postConstructs.add(pcs.pop());
+ }
+
}
/* (non-Javadoc)
More information about the jboss-cvs-commits
mailing list