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 2005/10/21 06:07:16 UTC

svn commit: r327093 - in /webservices/axis2/trunk/java/modules: codegen/src/org/apache/axis2/rpc/receivers/ codegen/src/org/apache/axis2/util/ integration/test/org/apache/axis2/rpc/

Author: deepal
Date: Thu Oct 20 21:06:53 2005
New Revision: 327093

URL: http://svn.apache.org/viewcvs?rev=327093&view=rev
Log:
Improved RPCMessageReciver to support multiref , I added a testcase too , still one thing missing as far as multiref is concern , if the service class take OMElement as argument it will fail. I have to improve that. 

Added:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/MultirefHelper.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
Modified:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?rev=327093&r1=327092&r2=327093&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 Thu Oct 20 21:06:53 2005
@@ -106,6 +106,7 @@
             outMessage.setEnvelope(envelope);
 
         } catch (Exception e) {
+            e.printStackTrace();
             throw AxisFault.makeFault(e);
         }
     }

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java?rev=327093&r1=327092&r2=327093&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java Thu Oct 20 21:06:53 2005
@@ -4,6 +4,7 @@
 import org.apache.axis2.rpc.receivers.SimpleTypeMapper;
 import org.apache.axis2.databinding.utils.ADBPullParser;
 import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMAttribute;
 import org.apache.axis2.AxisFault;
 
 import javax.xml.namespace.QName;
@@ -37,7 +38,6 @@
 
 public class BeanSerializerUtil {
 
-
     /**
      * To Serilize Bean object this method is used, this will create an object array using given
      * bean object
@@ -123,6 +123,57 @@
         return beanObj;
     }
 
+    public static Object deserialize(Class beanClass, OMElement beanElement, MultirefHelper helper) throws AxisFault{
+        Object beanObj ;
+        try {
+            HashMap properties = new HashMap() ;
+            BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);
+            PropertyDescriptor [] propDescs = beanInfo.getPropertyDescriptors();
+            for (int i = 0; i < propDescs.length; i++) {
+                PropertyDescriptor proprty = propDescs[i];
+                properties.put(proprty.getName(), proprty);
+            }
+
+            beanObj = beanClass.newInstance();
+            Iterator elements = beanElement.getChildren();
+            while (elements.hasNext()) {
+                OMElement parts = (OMElement) elements.next();
+                String partsLocalName = parts.getLocalName();
+                PropertyDescriptor prty =(PropertyDescriptor)properties.get(partsLocalName.toLowerCase());
+                if(prty !=null){
+                    Class parameters = prty.getPropertyType();
+                    if (prty.equals("class"))
+                        continue;
+                    Object partObj;
+                    OMAttribute attr = MultirefHelper.processRefAtt(parts);
+                    if(attr != null){
+                        String refId = MultirefHelper.getAttvalue(attr);
+                        partObj =  helper.getObject(refId);
+                        if(partObj == null){
+                           partObj = helper.processRef(parameters,refId);
+                        }
+                    } else {
+                        partObj = SimpleTypeMapper.getSimpleTypeObject(parameters, parts);
+                        if (partObj == null) {
+                            partObj = deserialize(parameters, parts);
+                        }
+                    }
+                    Object [] parms = new Object[]{partObj};
+                    prty.getWriteMethod().invoke(beanObj,parms);
+                }
+            }
+        } catch (InstantiationException e) {
+            throw new AxisFault("InstantiationException : " + e);
+        } catch (IllegalAccessException e) {
+            throw new AxisFault("IllegalAccessException : " + e);
+        } catch (InvocationTargetException e) {
+            throw new AxisFault("InvocationTargetException : " + e);
+        } catch (IntrospectionException e) {
+            throw new AxisFault("IntrospectionException : " + e);
+        }
+        return beanObj;
+    }
+
 
     /**
      * To get JavaObjects from XML elemnt , the element most of the time contains only one element
@@ -135,7 +186,7 @@
      * @throws AxisFault
      */
     public static Object [] deserialize(OMElement response , Object [] returnTypes ) throws AxisFault {
-         /**
+        /**
          * Take the number of paramters in the method and , only take that much of child elements
          * from the OMElement , other are ignore , as an example
          * if the method is , foo(String a , int b)
@@ -150,20 +201,66 @@
         int length = returnTypes.length;
         int count =0;
         Object [] retObjs = new Object[length];
+
+        /**
+         * If the body first child contains , then there can not be any other element withot
+         * refs , so I can assume if the first child of the body first element has ref then
+         * the messge has to handle as mutiref message.
+         * as an exmple if the body is like below
+         * <foo>
+         *  <arg0 href="#0"/>
+         * </foo>
+         *
+         * then there can not be any element without refs , meaning following we are not handling
+         * <foo>
+         *  <arg0 href="#0"/>
+         *  <arg1>absbsbs</arg1>
+         * </foo>
+         */
         Iterator parts = response.getChildren();
+        //to handle multirefs
+        //have to check the instnceof
+        MultirefHelper helper = new MultirefHelper((OMElement)response.getParent());
+        boolean hasRef = false;
         while (parts.hasNext() && count < length) {
             OMElement omElement = (OMElement) parts.next();
             Class classType = (Class)returnTypes[count];
+            //handling refs
+            OMAttribute omatribute = MultirefHelper.processRefAtt(omElement);
+            String ref=null;
+            if(omatribute !=null) {
+                hasRef = true;
+                ref = MultirefHelper.getAttvalue(omatribute);
+            }
+
             if(OMElement.class.isAssignableFrom(classType)){
-                retObjs[count] =omElement;
-            }  else if(SimpleTypeMapper.isSimpleType(classType)){
-                retObjs[count]  = SimpleTypeMapper.getSimpleTypeObject(classType, omElement);
+                if(hasRef){
+                    throw new AxisFault("The method take OMElenent as argument , and the body contains" +
+                            "refs , encounter processing error ");
+                } else
+                    retObjs[count] =omElement;
             } else {
-                retObjs[count] = BeanSerializerUtil.deserialize(classType, omElement);
+                if(hasRef){
+                    if(helper.getObject(ref) !=null) {
+                        retObjs[count] =  helper.getObject(ref);
+                    } else {
+                        retObjs[count]  = helper.processRef(classType,ref) ;
+                    }
+                } else{
+                    if(SimpleTypeMapper.isSimpleType(classType)){
+                        retObjs[count]  = SimpleTypeMapper.getSimpleTypeObject(classType, omElement);
+                    } else {
+                        retObjs[count] = BeanSerializerUtil.deserialize(classType, omElement);
+                    }
+                }
             }
+            hasRef = false;
             count ++;
         }
+        helper.clean();
         return  retObjs;
     }
+
+
 
 }

Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/MultirefHelper.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/MultirefHelper.java?rev=327093&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/MultirefHelper.java (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/MultirefHelper.java Thu Oct 20 21:06:53 2005
@@ -0,0 +1,120 @@
+package org.apache.axis2.util;
+
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.rpc.receivers.SimpleTypeMapper;
+
+import javax.xml.namespace.QName;
+import java.util.HashMap;
+import java.util.Iterator;
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*
+*/
+
+/**
+ * Author: Deepal Jayasinghe
+ * Date: Oct 20, 2005
+ * Time: 12:45:21 PM
+ */
+public class MultirefHelper {
+
+    public static final String SOAP12_REF_ATTR = "ref";
+    public static final String SOAP11_REF_ATTR = "href";
+
+    private boolean filledTable;
+
+    private OMElement parent ;
+
+    private HashMap objectmap = new HashMap();
+    private HashMap elementMap = new HashMap();
+
+    public MultirefHelper(OMElement parent) {
+        this.parent = parent;
+    }
+
+    public Object getObject(String id){
+        return objectmap.get(id);
+    }
+
+    public Object processRef(Class javatype, String id) throws AxisFault {
+        if(!filledTable){
+            readallChildElements();
+        }
+        OMElement val = (OMElement)elementMap.get(id);
+        if(val == null){
+            throw new AxisFault("Invalid reference :" + id);
+        } else {
+            if(SimpleTypeMapper.isSimpleType(javatype)){
+                /**
+                 * in this case OM element can not contains more child, that is no way to get
+                 * the value as an exp ,
+                 * <refernce id="12">
+                 *   <value>foo</value>
+                 * </refernce>
+                 * the above one is not valid , that should always be like below
+                 * <refernce id="12">foo</refernce>
+                 */
+                Object valObj =  SimpleTypeMapper.getSimpleTypeObject(javatype,val);
+                objectmap.put(id,valObj);
+                return  valObj;
+            } else {
+                Object obj = BeanSerializerUtil.deserialize(javatype,val,this);
+                objectmap.put(id,obj);
+                return obj;
+            }
+        }
+    }
+
+    private void readallChildElements(){
+        Iterator childs =  parent.getChildElements();
+        while (childs.hasNext()) {
+            OMElement omElement = (OMElement) childs.next();
+            OMAttribute id =  omElement.getAttribute(new QName("id"));
+            if(id !=null){
+                omElement.build();
+                elementMap.put(id.getAttributeValue(),omElement);
+            }
+        }
+        filledTable =true;
+    }
+
+    public static String getAttvalue(OMAttribute omatribute) {
+        String ref;
+        ref = omatribute.getAttributeValue();
+        if (ref != null) {
+            if (ref.charAt(0) == '#') {
+                ref = ref.substring(1);
+            }
+        }
+        return ref;
+    }
+
+    public static OMAttribute processRefAtt(OMElement omElement) {
+        OMAttribute omatribute =  omElement.getAttribute(new QName(SOAP11_REF_ATTR));
+        if(omatribute == null){
+            omatribute =  omElement.getAttribute(new QName(SOAP12_REF_ATTR));
+        }
+        return omatribute;
+    }
+
+    public void clean(){
+        elementMap.clear();
+        objectmap.clear();
+    }
+
+}

Added: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java?rev=327093&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java (added)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java Thu Oct 20 21:06:53 2005
@@ -0,0 +1,291 @@
+package org.apache.axis2.rpc;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.ServiceDescription;
+import org.apache.axis2.description.ParameterImpl;
+import org.apache.axis2.description.OperationDescription;
+import org.apache.axis2.description.InOutOperationDescrition;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.util.BeanSerializerUtil;
+import org.apache.axis2.soap.SOAPFactory;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis2.rpc.receivers.RPCMessageReceiver;
+import org.apache.axis2.rpc.client.RPCCall;
+import org.apache.axis2.receivers.AbstractMessageReceiver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.wsdl.WSDLService;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.FactoryConfigurationError;
+import java.text.SimpleDateFormat;
+import java.io.ByteArrayInputStream;
+
+import junit.framework.TestCase;
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*
+*/
+
+/**
+ * Author: Deepal Jayasinghe
+ * Date: Oct 20, 2005
+ * Time: 9:54:32 PM
+ */
+public class MultirefTest extends TestCase {
+
+    private SimpleDateFormat zulu = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+    //  0123456789 0 123456789
+
+
+    protected EndpointReference targetEPR =
+            new EndpointReference("http://127.0.0.1:"
+                    + (UtilServer.TESTING_PORT)
+                    + "/axis/services/EchoXMLService/concat");
+    protected Log log = LogFactory.getLog(getClass());
+    protected QName serviceName = new QName("EchoXMLService");
+    protected QName operationName = new QName("http://localhost/my", "concat");
+    protected QName transportName = new QName("http://localhost/my",
+            "NullTransport");
+
+    protected AxisConfiguration engineRegistry;
+    protected MessageContext mc;
+    protected ServiceContext serviceContext;
+    protected ServiceDescription service;
+
+    protected boolean finish = false;
+
+    protected void setUp() throws Exception {
+        UtilServer.start();
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.stop();
+        UtilServer.unDeployClientService();
+    }
+    private void configureSystem(String opName) throws AxisFault {
+        targetEPR =
+                new EndpointReference("http://127.0.0.1:"
+//                        + (5000)
+                        + (UtilServer.TESTING_PORT)
+                        + "/axis/services/EchoXMLService/" + opName);
+        String className = "org.apache.axis2.rpc.RPCServiceClass";
+        operationName = new QName("http://localhost/my", opName, "req");
+        ServiceDescription service = new ServiceDescription(serviceName);
+        service.setClassLoader(Thread.currentThread().getContextClassLoader());
+        service.addParameter(new ParameterImpl(AbstractMessageReceiver.SERVICE_CLASS,
+                className));
+        OperationDescription axisOp = new InOutOperationDescrition(operationName);
+        axisOp.setMessageReceiver(new RPCMessageReceiver());
+        axisOp.setStyle(WSDLService.STYLE_RPC);
+        service.addOperation(axisOp);
+        UtilServer.deployService(service);
+    }
+
+    public void testMulitref1() throws AxisFault {
+        configureSystem("echoString");
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoString", omNs);
+        OMElement value = fac.createOMElement("arg0", null);
+        value.addAttribute(fac.createOMAttribute("href",null,"#1"));
+        method.addChild(value);
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope envelope = factory.getDefaultEnvelope();
+        envelope.getBody().addChild(method);
+
+        OMElement ref = fac.createOMElement("reference", null);
+        ref.addAttribute(fac.createOMAttribute("id",null,"1"));
+        ref.setText("hello Axis2");
+        envelope.getBody().addChild(ref);
+        RPCCall call =
+                new RPCCall("target/test-resources/intregrationRepo");
+
+        call.setTo(targetEPR);
+        call.setTransportInfo(Constants.TRANSPORT_HTTP,
+                Constants.TRANSPORT_HTTP,
+                false);
+        SOAPEnvelope env = call.invokeBlocking("echoString",envelope);
+        assertEquals(env.getBody().getFirstElement().getFirstElement().getText(), "hello Axis2");
+    }
+
+    public void testadd() throws AxisFault {
+        configureSystem("add");
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("add", omNs);
+        OMElement value = fac.createOMElement("arg0", null);
+        value.addAttribute(fac.createOMAttribute("href",null,"#1"));
+        method.addChild(value);
+
+        OMElement value2 = fac.createOMElement("arg1", null);
+        value2.addAttribute(fac.createOMAttribute("href",null,"#2"));
+        method.addChild(value2);
+
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope envelope = factory.getDefaultEnvelope();
+        envelope.getBody().addChild(method);
+
+        OMElement ref = fac.createOMElement("reference", null);
+        ref.addAttribute(fac.createOMAttribute("id",null,"1"));
+        ref.setText("10");
+        envelope.getBody().addChild(ref);
+
+        OMElement ref2 = fac.createOMElement("reference", null);
+        ref2.addAttribute(fac.createOMAttribute("id",null,"2"));
+        ref2.setText("10");
+        envelope.getBody().addChild(ref2);
+
+
+        RPCCall call =
+                new RPCCall("target/test-resources/intregrationRepo");
+
+        call.setTo(targetEPR);
+        call.setTransportInfo(Constants.TRANSPORT_HTTP,
+                Constants.TRANSPORT_HTTP,
+                false);
+        SOAPEnvelope env = call.invokeBlocking("add",envelope);
+        assertEquals(env.getBody().getFirstElement().getFirstElement().getText(), "20");
+    }
+
+    public void testaddError() {
+        try {
+            configureSystem("add");
+            OMFactory fac = OMAbstractFactory.getOMFactory();
+
+            OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+            OMElement method = fac.createOMElement("add", omNs);
+            OMElement value = fac.createOMElement("arg0", null);
+            value.addAttribute(fac.createOMAttribute("href",null,"#1"));
+            method.addChild(value);
+
+            OMElement value2 = fac.createOMElement("arg1", null);
+            value2.addAttribute(fac.createOMAttribute("href",null,"#2"));
+            method.addChild(value2);
+
+            SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+            SOAPEnvelope envelope = factory.getDefaultEnvelope();
+            envelope.getBody().addChild(method);
+
+            OMElement ref = fac.createOMElement("reference", null);
+            ref.addAttribute(fac.createOMAttribute("id",null,"1"));
+            ref.setText("10");
+            envelope.getBody().addChild(ref);
+
+            OMElement ref2 = fac.createOMElement("reference", null);
+            ref2.addAttribute(fac.createOMAttribute("id",null,"3"));
+            ref2.setText("10");
+            envelope.getBody().addChild(ref2);
+
+
+            RPCCall call =
+                    new RPCCall("target/test-resources/intregrationRepo");
+
+            call.setTo(targetEPR);
+            call.setTransportInfo(Constants.TRANSPORT_HTTP,
+                    Constants.TRANSPORT_HTTP,
+                    false);
+            call.invokeBlocking("add",envelope);
+            fail("This should fail with : " + "org.apache.axis2.AxisFault: Invalid reference :2");
+        } catch (AxisFault axisFault) {
+            String val = axisFault.getMessage();
+            int index =  val.indexOf("org.apache.axis2.AxisFault: Invalid reference :2") ;
+            if(index <0){
+                fail("This should fail with : " + "org.apache.axis2.AxisFault: Invalid reference :2");
+            }
+        }
+    }
+
+
+    public void testMulitrefBean() throws AxisFault {
+        configureSystem("editBean");
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("editBean", omNs);
+        OMElement value = fac.createOMElement("arg0", null);
+        value.addAttribute(fac.createOMAttribute("href",null,"#1"));
+        method.addChild(value);
+        OMElement value2 = fac.createOMElement("arg1", null);
+        value2.setText("159");
+        method.addChild(value2);
+
+
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope envelope = factory.getDefaultEnvelope();
+        envelope.getBody().addChild(method);
+
+
+        String ref1 ="<reference id=\"1\"><name>Deepal</name><value href=\"#2\"/><address href=\"#3\"/></reference>";
+        OMElement om1 = getOMelemnt(ref1,fac);
+        envelope.getBody().addChild(om1);
+        String ref2 = "<reference id=\"2\">false</reference>";
+        OMElement om2 = getOMelemnt(ref2,fac);
+        envelope.getBody().addChild(om2);
+        String ref3 = "<reference id=\"3\"><town href=\"#4\"/><number>1010</number></reference>";
+        OMElement om3 = getOMelemnt(ref3,fac);
+        envelope.getBody().addChild(om3);
+        String ref4 = "<reference id=\"4\">Colombo3</reference>";
+        OMElement om4 = getOMelemnt(ref4,fac);
+        envelope.getBody().addChild(om4);
+
+        RPCCall call =
+                new RPCCall("target/test-resources/intregrationRepo");
+
+        call.setTo(targetEPR);
+        call.setTransportInfo(Constants.TRANSPORT_HTTP,
+                Constants.TRANSPORT_HTTP,
+                false);
+        SOAPEnvelope env = call.invokeBlocking("editBean",envelope);
+        OMElement response = env.getBody().getFirstElement();
+        MyBean resBean = (MyBean) BeanSerializerUtil.deserialize(MyBean.class, response.getFirstElement());
+        assertNotNull(resBean);
+        assertEquals(resBean.getAge(), 159);
+        call.close();
+    }
+
+    private OMElement getOMelemnt(String str,OMFactory fac) throws AxisFault {
+        StAXOMBuilder staxOMBuilder;
+        try {
+            XMLStreamReader xmlReader=  XMLInputFactory.newInstance().createXMLStreamReader(new
+                    ByteArrayInputStream(str.getBytes()));
+            staxOMBuilder = new
+                    StAXOMBuilder(fac,xmlReader);
+        } catch (XMLStreamException e) {
+            throw new AxisFault(e);
+        } catch (FactoryConfigurationError factoryConfigurationError) {
+            throw new AxisFault(factoryConfigurationError);
+        }
+        return staxOMBuilder.getDocumentElement();
+    }
+
+}

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java?rev=327093&r1=327092&r2=327093&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java Thu Oct 20 21:06:53 2005
@@ -125,6 +125,7 @@
     private void configureSystem(String opName) throws AxisFault {
         targetEPR =
                 new EndpointReference("http://127.0.0.1:"
+//                        + (5000)
                         + (UtilServer.TESTING_PORT)
                         + "/axis/services/EchoXMLService/" + opName);
         String className = "org.apache.axis2.rpc.RPCServiceClass";