[jboss-cvs] JBossAS SVN: r76951 - in projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3: stateful and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 11 13:39:47 EDT 2008


Author: ALRubinger
Date: 2008-08-11 13:39:47 -0400 (Mon, 11 Aug 2008)
New Revision: 76951

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
[EJBTHREE-1456] Check for EJBObject/EJBLocalObject against the correct unadvised method

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java	2008-08-11 17:38:47 UTC (rev 76950)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/session/SessionSpecContainer.java	2008-08-11 17:39:47 UTC (rev 76951)
@@ -156,8 +156,8 @@
          /*
           * Obtain the target method (advised)
           */
-         Method unadvisedMethod = method.toMethod(this.getClassloader());
-         long hash = MethodHashing.calculateHash(unadvisedMethod);
+         Method actualMethod = method.toMethod(this.getClassloader());
+         long hash = MethodHashing.calculateHash(actualMethod);
          MethodInfo info = getAdvisor().getMethodInfo(hash);
          if (info == null)
          {
@@ -165,6 +165,8 @@
                   + this.getEjbName() + " : " + method.toString()
                   + ", probable error in virtual method registration w/ Advisor for the Container");
          }
+         Method unadvisedMethod = info.getUnadvisedMethod();
+         SerializableMethod unadvisedSerializableMethod = new SerializableMethod(unadvisedMethod);
 
          // Obtain Invocation Handler
          //TODO Ugly, use polymorphism and get Session ID for SFSB only
@@ -180,11 +182,11 @@
           * Invoke directly if this is an EJB2.x Method
           */
 
-         if (unadvisedMethod != null && isHomeMethod(method))
+         if (unadvisedMethod != null && isHomeMethod(unadvisedSerializableMethod))
          {
             return invokeHomeMethod(method, args);
          }
-         else if (unadvisedMethod != null && this.isEjbObjectMethod(method))
+         else if (unadvisedMethod != null && this.isEjbObjectMethod(unadvisedSerializableMethod))
          {
             return invokeEJBObjectMethod(sessionId, info, args);
          }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2008-08-11 17:38:47 UTC (rev 76950)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulContainer.java	2008-08-11 17:39:47 UTC (rev 76951)
@@ -550,6 +550,7 @@
          Advisor advisor = this.getAdvisor();
          MethodInfo info = advisor.getMethodInfo(methodHash);
          Method unadvisedMethod = info.getMethod();
+         SerializableMethod unadvisedMethodSerializable = new SerializableMethod(unadvisedMethod);
          
          // Get the invoked method from invocation metadata
          Object objInvokedMethod = si.getMetaData(SessionSpecRemotingMetadata.TAG_SESSION_INVOCATION,SessionSpecRemotingMetadata.KEY_INVOKED_METHOD);
@@ -577,11 +578,11 @@
                sessionId = (Serializable) objSessionId;
             }
 
-            if (info != null && unadvisedMethod != null && isHomeMethod(unadvisedMethod))
+            if (info != null && unadvisedMethod != null && isHomeMethod(unadvisedMethodSerializable))
             {
                response = invokeHomeMethod(info, si);
             }
-            else if (info != null && unadvisedMethod != null && isEJBObjectMethod(unadvisedMethod))
+            else if (info != null && unadvisedMethod != null && isEjbObjectMethod(unadvisedMethodSerializable))
             {
                response = invokeEJBObjectMethod(info, si);
             }
@@ -619,7 +620,7 @@
                //newSi = new StatefulContainerInvocation(info.getInterceptors(), long methodHash, Method advisedMethod, Method unadvisedMethod, Advisor advisor, Object id);
                newSi.setArguments(si.getArguments());
                newSi.setMetaData(si.getMetaData());
-               newSi.setAdvisor(getAdvisor());
+               //newSi.setAdvisor(getAdvisor());
 
                // Create an object to hold the return value
                Object returnValue = null;

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-08-11 17:38:47 UTC (rev 76950)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-08-11 17:39:47 UTC (rev 76951)
@@ -415,6 +415,7 @@
          Advisor advisor = this.getAdvisor();
          MethodInfo info = advisor.getMethodInfo(methodHash);
          Method unadvisedMethod = info.getMethod();
+         SerializableMethod unadvisedMethodSerializable = new SerializableMethod(unadvisedMethod);
          
          try
          {
@@ -423,11 +424,11 @@
             //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
             Map responseContext = null;
             Object rtn = null;
-            if (unadvisedMethod != null && isHomeMethod(unadvisedMethod))
+            if (unadvisedMethod != null && isHomeMethod(unadvisedMethodSerializable))
             {
                rtn = invokeHomeMethod(info, si);
             }
-            else if (info != null && unadvisedMethod != null && isEJBObjectMethod(unadvisedMethod))
+            else if (info != null && unadvisedMethod != null && isEjbObjectMethod(unadvisedMethodSerializable))
             {
                rtn = invokeEJBObjectMethod(info, si);
             }
@@ -437,7 +438,7 @@
                newSi = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
                newSi.setArguments(si.getArguments());
                newSi.setMetaData(si.getMetaData());
-               newSi.setAdvisor(getAdvisor());
+               //newSi.setAdvisor(getAdvisor());
                
                /*
                 * Set the invoked method




More information about the jboss-cvs-commits mailing list