You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2006/07/04 10:27:25 UTC
svn commit: r418937 - in
/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers:
RPCInOnlyMessageReceiver.java RPCInOutAsyncMessageReceiver.java
RPCMessageReceiver.java
Author: deepal
Date: Tue Jul 4 01:27:24 2006
New Revision: 418937
URL: http://svn.apache.org/viewvc?rev=418937&view=rev
Log:
fixed issues in RPC message receivers after applying Venkats patch
Modified:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java?rev=418937&r1=418936&r2=418937&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java Tue Jul 4 01:27:24 2006
@@ -3,17 +3,16 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.databinding.utils.BeanUtil;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.engine.DependencyManager;
import org.apache.axis2.receivers.AbstractInMessageReceiver;
-import org.apache.commons.logging.LogFactory;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import javax.xml.namespace.QName;
import java.lang.reflect.Method;
/*
* Copyright 2004,2005 The Apache Software Foundation.
@@ -43,26 +42,16 @@
Class ImplClass = obj.getClass();
DependencyManager.configureBusinessLogicProvider(obj,
- inMessage.getOperationContext());
+ inMessage.getOperationContext());
AxisOperation op = inMessage.getOperationContext().getAxisOperation();
- AxisService service = inMessage.getAxisService();
OMElement methodElement = inMessage.getEnvelope().getBody()
.getFirstElement();
- AxisMessage inaxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- String messageNameSpace = null;
- if (inaxisMessage != null) {
- messageNameSpace = inaxisMessage.getElementQName().getNamespaceURI();
- }
-
- OMNamespace namespace = methodElement.getNamespace();
- if (namespace == null || !messageNameSpace.equals(namespace.getName())) {
- throw new AxisFault("namespace mismatch require " +
- service.getSchematargetNamespace() +
- " found " + methodElement.getNamespace().getName());
- }
+ AxisMessage inAxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ String messageNameSpace;
+ QName elementQName = null;
String methodName = op.getName().getLocalPart();
Method[] methods = ImplClass.getMethods();
for (int i = 0; i < methods.length; i++) {
@@ -71,18 +60,36 @@
break;
}
}
- Object[] objectArray = processRequest(methodElement);
- method.invoke(obj, objectArray);
+ if (inAxisMessage != null) {
+ if (inAxisMessage.getElementQName() == null) {
+ // method accept empty SOAPbody
+ method.invoke(obj, new Object[0]);
+ } else {
+ elementQName = inAxisMessage.getElementQName();
+ messageNameSpace = elementQName.getNamespaceURI();
+ OMNamespace namespace = methodElement.getNamespace();
+ if (messageNameSpace != null) {
+ if (namespace == null || !messageNameSpace.equals(namespace.getName())) {
+ throw new AxisFault("namespace mismatch require " +
+ messageNameSpace +
+ " found " + methodElement.getNamespace().getName());
+ }
+ } else if (namespace != null) {
+ throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +
+ "qualified element. But received a namespace qualified element");
+ }
+
+ Object[] objectArray = RPCUtil.processRequest(methodElement, method);
+ method.invoke(obj, objectArray);
+ }
+
+ }
} catch (Exception e) {
String msg = "Exception occurred while trying to invoke service method " +
- method.getName();
+ method.getName();
log.error(msg, e);
throw new AxisFault(msg, e);
}
}
- private Object[] processRequest(OMElement methodElement) throws AxisFault {
- Class[] parameters = method.getParameterTypes();
- return BeanUtil.deserialize(methodElement, parameters);
- }
}
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java?rev=418937&r1=418936&r2=418937&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java Tue Jul 4 01:27:24 2006
@@ -5,13 +5,13 @@
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisMessage;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.AxisMessage;
import org.apache.axis2.engine.DependencyManager;
import org.apache.axis2.receivers.AbstractInOutAsyncMessageReceiver;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -76,18 +76,9 @@
OMElement methodElement = inMessage.getEnvelope().getBody()
.getFirstElement();
- AxisMessage inaxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- String messageNameSpace = null;
- if (inaxisMessage != null) {
- messageNameSpace = inaxisMessage.getElementQName().getNamespaceURI();
- }
-
- OMNamespace namespace = methodElement.getNamespace();
- if (namespace == null || !messageNameSpace.equals(namespace.getName())) {
- throw new AxisFault("namespace mismatch require " +
- service.getSchematargetNamespace() +
- " found " + methodElement.getNamespace().getName());
- }
+ AxisMessage inaxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ String messageNameSpace;
+ QName elementQName = null;
String methodName = op.getName().getLocalPart();
Method[] methods = ImplClass.getMethods();
for (int i = 0; i < methods.length; i++) {
@@ -96,15 +87,33 @@
break;
}
}
+ Object resObject = null;
+ if (inaxisMessage != null) {
+ if (inaxisMessage.getElementQName() == null) {
+ // method accept empty SOAPbody
+ resObject = method.invoke(obj, new Object[0]);
+ } else {
+ elementQName = inaxisMessage.getElementQName();
+ messageNameSpace = elementQName.getNamespaceURI();
+ OMNamespace namespace = methodElement.getNamespace();
+ if (messageNameSpace != null) {
+ if (namespace == null || !messageNameSpace.equals(namespace.getName())) {
+ throw new AxisFault("namespace mismatch require " +
+ messageNameSpace +
+ " found " + methodElement.getNamespace().getName());
+ }
+ } else if (namespace != null) {
+ throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +
+ "qualified element. But received a namespace qualified element");
+ }
+ Object[] objectArray = RPCUtil.processRequest(methodElement, method);
+ resObject = method.invoke(obj, objectArray);
+ }
- Object[] objectArray = RPCUtil.processRequest(methodElement, method);
- Object resObject;
- try {
- resObject = method.invoke(obj, objectArray);
- } catch (Exception e) {
- throw new AxisFault(e.getMessage());
}
+
+
SOAPFactory fac = getSOAPFactory(inMessage);
// Handling the response
@@ -127,7 +136,7 @@
} catch (Exception e) {
String msg = "Exception occurred while trying to invoke service method " +
- method.getName();
+ method.getName();
log.error(msg, e);
throw new AxisFault(msg, e);
}
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?rev=418937&r1=418936&r2=418937&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java Tue Jul 4 01:27:24 2006
@@ -83,22 +83,6 @@
AxisMessage inAxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
String messageNameSpace = null;
QName elementQName = null;
- if (inAxisMessage != null && (elementQName = inAxisMessage.getElementQName()) != null) {
- messageNameSpace = elementQName.getNamespaceURI();
- }
-
-
- OMNamespace namespace = methodElement.getNamespace();
- if (messageNameSpace != null) {
- if (namespace == null || !messageNameSpace.equals(namespace.getName())) {
- throw new AxisFault("namespace mismatch require " +
- messageNameSpace +
- " found " + methodElement.getNamespace().getName());
- }
- } else if (namespace != null) {
- throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +
- "qualified element. But received a namespace qualified element");
- }
String methodName = op.getName().getLocalPart();
Method[] methods = ImplClass.getMethods();
for (int i = 0; i < methods.length; i++) {
@@ -107,11 +91,33 @@
break;
}
}
+ Object resObject = null;
+ if (inAxisMessage != null) {
+ if (inAxisMessage.getElementQName() == null) {
+ // method accept empty SOAPbody
+ resObject = method.invoke(obj, new Object[0]);
+ } else {
+ elementQName = inAxisMessage.getElementQName();
+ messageNameSpace = elementQName.getNamespaceURI();
+ OMNamespace namespace = methodElement.getNamespace();
+ if (messageNameSpace != null) {
+ if (namespace == null || !messageNameSpace.equals(namespace.getName())) {
+ throw new AxisFault("namespace mismatch require " +
+ messageNameSpace +
+ " found " + methodElement.getNamespace().getName());
+ }
+ } else if (namespace != null) {
+ throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +
+ "qualified element. But received a namespace qualified element");
+ }
+
+ Object[] objectArray = RPCUtil.processRequest(methodElement, method);
+ resObject = method.invoke(obj, objectArray);
+ }
+
+ }
- Object[] objectArray = RPCUtil.processRequest(methodElement, method);
- Object resObject;
- resObject = method.invoke(obj, objectArray);
SOAPFactory fac = getSOAPFactory(inMessage);
// Handling the response
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org