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