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