You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by Davanum Srinivas <da...@gmail.com> on 2005/10/21 14:16:17 UTC

[Axis2] Cleanup (Re: 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/)

Deepal,

#1) please remove printStackTrace()
#2) copyright goes right on top. Please see other files (even before
the package statement)
#3) please remove the author tag as well with date and time.

thanks,
dims

On 10/21/05, deepal@apache.org <de...@apache.org> wrote:
> 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";
>
>
>
>


--
Davanum Srinivas : http://wso2.com/blogs/