Author: senaka
Date: Wed Dec 22 19:10:08 2010
New Revision: 1052033

URL: http://svn.apache.org/viewvc?rev=1052033&view=rev
Log:
Fixing JIRA Issue AXIS2-3947.

Modified:
    
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
    
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
    
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
    
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java

Modified: 
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?rev=1052033&r1=1052032&r2=1052033&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
 Wed Dec 22 19:10:08 2010
@@ -77,10 +77,15 @@ public class RPCMessageReceiver extends 
             // get the implementation class for the Web Service
             Object obj = getTheImplementationObject(inMessage);
 
-            Class ImplClass = obj.getClass();
+            Class implClass = obj.getClass();
 
             AxisOperation op = 
inMessage.getOperationContext().getAxisOperation();
             method = (Method)(op.getParameterValue("myMethod"));
+            // If the declaring class has changed, then the cached method is 
invalid, so we need to
+            // reload it. This is to fix AXIS2-3947.
+            if (method != null && method.getDeclaringClass() != implClass) {
+                method = null;
+            }
             AxisService service = inMessage.getAxisService();
             OMElement methodElement = inMessage.getEnvelope().getBody()
                     .getFirstElement();
@@ -90,7 +95,7 @@ public class RPCMessageReceiver extends 
 
             if (method == null) {
                 String methodName = op.getName().getLocalPart();
-                Method[] methods = ImplClass.getMethods();
+                Method[] methods = implClass.getMethods();
 
                 for (Method method1 : methods) {
                     if (method1.isBridge()) {
@@ -104,7 +109,7 @@ public class RPCMessageReceiver extends 
                 }
                 if (method == null) {
                     throw new AxisFault("No such method '" + methodName +
-                            "' in class " + ImplClass.getName());
+                            "' in class " + implClass.getName());
                 }
             }
             Object resObject = null;

Modified: 
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java?rev=1052033&r1=1052032&r2=1052033&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
 Wed Dec 22 19:10:08 2010
@@ -161,14 +161,14 @@ public class RPCUtil {
 
     public static Object invokeServiceClass(AxisMessage inAxisMessage,
                                             Method method,
-                                            Object implClass,
+                                            Object implObject,
                                             String messageNameSpace,
                                             OMElement methodElement,
                                             MessageContext inMessage) throws 
AxisFault,
             IllegalAccessException, InvocationTargetException {
         if (inAxisMessage.getElementQName() == null) {
             // method accept empty SOAPbody
-            return method.invoke(implClass);
+            return method.invoke(implObject);
         } else {
             QName elementQName = inAxisMessage.getElementQName();
             messageNameSpace = elementQName.getNamespaceURI();
@@ -186,7 +186,7 @@ public class RPCUtil {
                 }
             } else if (namespace != null) {
                 throw new AxisFault(
-                        "namespace mismatch. Axis Oepration expects 
non-namespace " +
+                        "namespace mismatch. Axis Operation expects 
non-namespace " +
                                 "qualified element. But received a namespace 
qualified element");
             }
             Object[] objectArray;
@@ -202,7 +202,7 @@ public class RPCUtil {
                 objectArray = RPCUtil.processRequest((OMElement) 
methodElement.getParent(),
                         method, 
inMessage.getAxisService().getObjectSupplier());
             }
-            return method.invoke(implClass, objectArray);
+            return method.invoke(implObject, objectArray);
 
         }
     }

Modified: 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java?rev=1052033&r1=1052032&r2=1052033&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
 Wed Dec 22 19:10:08 2010
@@ -45,7 +45,7 @@ public class RawXMLINOnlyMessageReceiver
 
     private Method findOperation(AxisOperation op, Class implClass) {
         Method method = (Method)(op.getParameterValue("myMethod"));
-        if (method != null) return method;
+        if (method != null && method.getDeclaringClass() == implClass) return 
method;
 
         String methodName = op.getName().getLocalPart();
         try {

Modified: 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java?rev=1052033&r1=1052032&r2=1052033&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
 Wed Dec 22 19:10:08 2010
@@ -47,7 +47,7 @@ public class RawXMLINOutMessageReceiver 
 
     private Method findOperation(AxisOperation op, Class implClass) {
         Method method = (Method)(op.getParameterValue("myMethod"));
-        if (method != null) return method;
+        if (method != null && method.getDeclaringClass() == implClass) return 
method;
 
         String methodName = op.getName().getLocalPart();
 


Reply via email to