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();