You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Eric Chow <er...@gmail.com> on 2006/02/23 03:23:37 UTC

java.lang.NullPointerException when invoking axis2 web service !!!

Hello,


When I test the web service by using the code that generated by the
wsdl2java tools provided in axis2, it just raised
NullPointerException:


java.lang.NullPointerException
	at org.apache.axis2.databinding.utils.ConverterUtil.convertToString(ConverterUtil.java:195)
	at test.client.TestservicePortStub$EchoRequest.getPullParser(TestservicePortStub.java:264)
	at test.client.TestservicePortStub.toEnvelope(TestservicePortStub.java:353)
	at test.client.TestservicePortStub.echo(TestservicePortStub.java:90)
	at test.client.Client1.main(Client1.java:41)


But if I followed the client coding in the userguide sample, it works fine.

Is there any problem in the code generator ?


The wsdl.

<wsdl:definitions xmlns:ns1="http://org.apache.axis2/xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://org.apache.axis2/"
targetNamespace="http://org.apache.axis2/"><wsdl:types><xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://org.apache.axis2/xsd"
targetNamespace="http://org.apache.axis2/xsd"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="echoRequest">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:anyType" name="element" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="echoResponse">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:anyType" name="return" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema></wsdl:types><wsdl:message
name="echoResponseMessage"><wsdl:part name="part1"
element="ns1:echoResponse" /></wsdl:message><wsdl:message
name="echoRequestMessage"><wsdl:part name="part1"
element="ns1:echoRequest" /></wsdl:message><wsdl:portType
name="testservicePort"><wsdl:operation name="echo"><wsdl:input
message="tns:echoRequestMessage" /><wsdl:output
message="tns:echoResponseMessage"
/></wsdl:operation></wsdl:portType><wsdl:binding
name="testserviceBinding" type="tns:testservicePort"><soap:binding
transport="http://schemas.xmlsoap.org/soap/http" style="document"
/><wsdl:operation name="echo"><soap:operation name="operation"
soapAction="echo" style="document" /><wsdl:input><soap:body
use="literal" namespace="http://www.org.apache.axis2"
/></wsdl:input><wsdl:output><soap:body use="literal"
namespace="http://www.org.apache.axis2"
/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service
name="testservice"><wsdl:port name="testservicePortType"
binding="tns:testserviceBinding"><soap:address
location="http://localhost/axis2/services/testservice"
/></wsdl:port></wsdl:service></wsdl:definitions>



The client code:

/**
 * Client1.java
 *
 * Copyright (C) 2006 Eric Chow. All right Reserved.
 *
 * This software is the confidential and proprietary information of Eric Chow.
 */
package test.client;

import org.apache.axis2.databinding.ADBBean;

/**
 * Client1.java
 *
 * @author Chao Hoi Ka, Eric
 *
 */
public class Client1 {

	/**
	 *
	 */
	public Client1() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			TestservicePortStub stub = new TestservicePortStub();
			TestservicePortStub.EchoRequest req =
(TestservicePortStub.EchoRequest)
getTestObject(TestservicePortStub.EchoRequest.class);
			
			System.out.println(stub.echo(req));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public static ADBBean getTestObject(Class type) throws Exception {
		return (ADBBean) type.newInstance();
	}


}




The code that generate from wsdl2java

/**
 * TestservicePortStub.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis2 version: 0.94 Jan 11, 2006 (08:01:58 LKT)
 */
package test.client;

/*
 * TestservicePortStub java implementation
 */

public class TestservicePortStub extends org.apache.axis2.client.Stub {
	// default axis home being null forces the system to pick up the mars from
	// the axis2 library
	public static final String AXIS2_HOME = null;

	protected static org.apache.axis2.description.AxisOperation[] _operations;

	static {

		// creating the Service
		_service = new org.apache.axis2.description.AxisService(
				"TestservicePort");

		// creating the operations
		org.apache.axis2.description.AxisOperation __operation;
		_operations = new org.apache.axis2.description.OutInAxisOperation[1];

		__operation = new org.apache.axis2.description.OutInAxisOperation();
		__operation.setName(new javax.xml.namespace.QName(
				"http://org.apache.axis2/", "echo"));
		_operations[0] = __operation;
		_service.addOperation(__operation);

	}

	public TestservicePortStub(
			org.apache.axis2.context.ConfigurationContext configurationContext,
			String targetEndpoint) throws java.lang.Exception {

		_serviceClient = new org.apache.axis2.client.ServiceClient(
				configurationContext, _service);
		_serviceClient.getOptions().setTo(
				new org.apache.axis2.addressing.EndpointReference(
						targetEndpoint));

	}

	/**
	 * Default Constructor
	 */
	public TestservicePortStub() throws java.lang.Exception {

		this("http://localhost/axis2/services/testservice");

	}

	/**
	 * Constructor taking the traget endpoint
	 */
	public TestservicePortStub(String targetEndpoint)
			throws java.lang.Exception {
		this(new org.apache.axis2.context.ConfigurationContextFactory()
				.createConfigurationContextFromFileSystem(AXIS2_HOME),
				targetEndpoint);
	}

	/**
	 * Auto generated method signature
	 *
	 * @see test.services.TestservicePort#echo
	 * @param param0
	 *
	 */
	public TestservicePortStub.EchoResponse echo(
			TestservicePortStub.EchoRequest param0)
			throws java.rmi.RemoteException {

		org.apache.axis2.client.OperationClient _operationClient = _serviceClient
				.createClient(_operations[0].getName());
		_operationClient.getOptions().setSoapAction("echo");
		_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);

		// create SOAP envelope with that payload
		org.apache.axis2.soap.SOAPEnvelope env = null;

		// Style is Doc.

		env = toEnvelope(getFactory(_options.getSoapVersionURI()), param0);

		// create message context with that soap envelope
		org.apache.axis2.context.MessageContext _messageContext = new
org.apache.axis2.context.MessageContext();
		_messageContext.setEnvelope(env);

		// add the message contxt to the operation client
		_operationClient.addMessageContext(_messageContext);
		// set the options hierarchy
		_options.setParent(_operationClient.getOptions());
		_operationClient.setOptions(_options);

		// execute the operation client
		_operationClient.execute(true);

		org.apache.axis2.context.MessageContext _returnMessageContext =
_operationClient
				.getMessageContext(org.apache.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
		org.apache.axis2.soap.SOAPEnvelope _returnEnv = _returnMessageContext
				.getEnvelope();

		java.lang.Object object = fromOM(getElement(_returnEnv, "doc"),
				TestservicePortStub.EchoResponse.class);
		return (TestservicePortStub.EchoResponse) object;

	}

	// http://localhost/axis2/services/testservice
	public static class EchoResponse implements
			org.apache.axis2.databinding.ADBBean {

		public static final javax.xml.namespace.QName MY_QNAME = new
javax.xml.namespace.QName(
				"http://org.apache.axis2/xsd", "echoResponse", "ns1");

		/**
		 * field for _return
		 */
		private org.apache.axis2.om.OMElement local_return;

		/**
		 * Auto generated getter method
		 *
		 * @return org.apache.axis2.om.OMElement
		 */
		public org.apache.axis2.om.OMElement get_return() {
			return local_return;
		}

		/**
		 * Auto generated setter method
		 *
		 * @param param
		 *            _return
		 */
		public void set_return(org.apache.axis2.om.OMElement param) {

			this.local_return = param;
		}

		/**
		 * databinding method to get an XML representation of this object
		 *
		 */
		public javax.xml.stream.XMLStreamReader getPullParser(
				javax.xml.namespace.QName qName) {

			java.util.ArrayList elementList = new java.util.ArrayList();
			java.util.ArrayList attribList = new java.util.ArrayList();

			elementList.add(new javax.xml.namespace.QName(
					"http://org.apache.axis2/xsd", "return"));
			elementList.add(org.apache.axis2.databinding.utils.ConverterUtil
					.convertToString(local_return));

			return org.apache.axis2.databinding.utils.ADBPullParser
					.createPullParser(qName, elementList.toArray(), attribList
							.toArray());

		}

		/**
		 * static method to create the object Note - This is not complete
		 */
		public static EchoResponse parse(javax.xml.stream.XMLStreamReader reader)
				throws java.lang.Exception {
			EchoResponse object = new EchoResponse();
			try {
				int event = reader.getEventType();
				int count = 0;
				int argumentCount = 1;
				boolean done = false;
				// event better be a START_ELEMENT. if not we should go up to
				// the start element here
				while (!reader.isStartElement()) {
					event = reader.next();
				}

				while (!done) {
					if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {

						if ("return".equals(reader.getLocalName())) {

							String content = reader.getElementText();
							object
									.set_return(org.apache.axis2.databinding.utils.ConverterUtil
											.convertToanyType(content));
							count++;

						}

					}

					if (argumentCount == count) {
						done = true;
					}

					if (!done) {
						event = reader.next();
					}

				}

			} catch (javax.xml.stream.XMLStreamException e) {
				throw new java.lang.Exception(e);
			}

			return object;
		}

	}

	public static class EchoRequest implements
			org.apache.axis2.databinding.ADBBean {

		public static final javax.xml.namespace.QName MY_QNAME = new
javax.xml.namespace.QName(
				"http://org.apache.axis2/xsd", "echoRequest", "ns1");

		/**
		 * field for Element
		 */
		private org.apache.axis2.om.OMElement localElement;

		/**
		 * Auto generated getter method
		 *
		 * @return org.apache.axis2.om.OMElement
		 */
		public org.apache.axis2.om.OMElement getElement() {
			return localElement;
		}

		/**
		 * Auto generated setter method
		 *
		 * @param param
		 *            Element
		 */
		public void setElement(org.apache.axis2.om.OMElement param) {

			this.localElement = param;
		}

		/**
		 * databinding method to get an XML representation of this object
		 *
		 */
		public javax.xml.stream.XMLStreamReader getPullParser(
				javax.xml.namespace.QName qName) {

			java.util.ArrayList elementList = new java.util.ArrayList();
			java.util.ArrayList attribList = new java.util.ArrayList();

			elementList.add(new javax.xml.namespace.QName(
					"http://org.apache.axis2/xsd", "element"));
			elementList.add(org.apache.axis2.databinding.utils.ConverterUtil
					.convertToString(localElement));

			return org.apache.axis2.databinding.utils.ADBPullParser
					.createPullParser(qName, elementList.toArray(), attribList
							.toArray());

		}

		/**
		 * static method to create the object Note - This is not complete
		 */
		public static EchoRequest parse(javax.xml.stream.XMLStreamReader reader)
				throws java.lang.Exception {
			EchoRequest object = new EchoRequest();
			try {
				int event = reader.getEventType();
				int count = 0;
				int argumentCount = 1;
				boolean done = false;
				// event better be a START_ELEMENT. if not we should go up to
				// the start element here
				while (!reader.isStartElement()) {
					event = reader.next();
				}

				while (!done) {
					if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {

						if ("element".equals(reader.getLocalName())) {

							String content = reader.getElementText();
							object
									.setElement(org.apache.axis2.databinding.utils.ConverterUtil
											.convertToanyType(content));
							count++;

						}

					}

					if (argumentCount == count) {
						done = true;
					}

					if (!done) {
						event = reader.next();
					}

				}

			} catch (javax.xml.stream.XMLStreamException e) {
				throw new java.lang.Exception(e);
			}

			return object;
		}

	}

	private static javax.xml.namespace.QName[] qNameArray = {

	};

	private org.apache.axis2.om.OMElement toOM(
			TestservicePortStub.EchoRequest param) {
		if (param instanceof org.apache.axis2.databinding.ADBBean) {
			org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new
org.apache.axis2.om.impl.llom.builder.StAXOMBuilder(
					org.apache.axis2.om.OMAbstractFactory.getOMFactory(),
					param
							.getPullParser(TestservicePortStub.EchoRequest.MY_QNAME));
			org.apache.axis2.om.OMElement documentElement = builder
					.getDocumentElement();
			((org.apache.axis2.om.impl.OMNodeEx) documentElement)
					.setParent(null); // remove the parent link
			return documentElement;
		} else {

			// todo finish this onece the bean serializer has the necessary
			// methods
			return null;
		}
	}

	private org.apache.axis2.soap.SOAPEnvelope toEnvelope(
			org.apache.axis2.soap.SOAPFactory factory,
			TestservicePortStub.EchoRequest param) {
		if (param instanceof org.apache.axis2.databinding.ADBBean) {
			org.apache.axis2.databinding.ADBSOAPModelBuilder builder = new
org.apache.axis2.databinding.ADBSOAPModelBuilder(
					param
							.getPullParser(TestservicePortStub.EchoRequest.MY_QNAME),
					factory);
			return builder.getEnvelope();
		} else {

			// todo finish this onece the bean serializer has the necessary
			// methods
			return null;
		}
	}

	private org.apache.axis2.om.OMElement toOM(
			TestservicePortStub.EchoResponse param) {
		if (param instanceof org.apache.axis2.databinding.ADBBean) {
			org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new
org.apache.axis2.om.impl.llom.builder.StAXOMBuilder(
					org.apache.axis2.om.OMAbstractFactory.getOMFactory(),
					param
							.getPullParser(TestservicePortStub.EchoResponse.MY_QNAME));
			org.apache.axis2.om.OMElement documentElement = builder
					.getDocumentElement();
			((org.apache.axis2.om.impl.OMNodeEx) documentElement)
					.setParent(null); // remove the parent link
			return documentElement;
		} else {

			// todo finish this onece the bean serializer has the necessary
			// methods
			return null;
		}
	}

	private org.apache.axis2.soap.SOAPEnvelope toEnvelope(
			org.apache.axis2.soap.SOAPFactory factory,
			TestservicePortStub.EchoResponse param) {
		if (param instanceof org.apache.axis2.databinding.ADBBean) {
			org.apache.axis2.databinding.ADBSOAPModelBuilder builder = new
org.apache.axis2.databinding.ADBSOAPModelBuilder(
					param
							.getPullParser(TestservicePortStub.EchoResponse.MY_QNAME),
					factory);
			return builder.getEnvelope();
		} else {

			// todo finish this onece the bean serializer has the necessary
			// methods
			return null;
		}
	}

	private java.lang.Object fromOM(org.apache.axis2.om.OMElement param,
			java.lang.Class type) {
		Object obj;
		try {
			java.lang.reflect.Method parseMethod = type.getMethod("parse",
					new Class[] { javax.xml.stream.XMLStreamReader.class });
			obj = null;
			if (parseMethod != null) {
				obj = parseMethod.invoke(null, new Object[] { param
						.getXMLStreamReaderWithoutCaching() });
			} else {
				// oops! we don't know how to deal with this. Perhaps the
				// reflective one is a good choice here
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}

		return obj;
	}

}









Eric

Re: java.lang.NullPointerException when invoking axis2 web service !!!

Posted by Anne Thomas Manes <at...@gmail.com>.
Eric,

You have errors in your WSDL. You must remove the "namespace" attribute from
your <soap:body> definitions in the <binding>. You use the "namespace"
attribute only when using RPC style.

Anne

On 2/22/06, Eric Chow <er...@gmail.com> wrote:
>
> Hello,
>
>
> When I test the web service by using the code that generated by the
> wsdl2java tools provided in axis2, it just raised
> NullPointerException:
>
>
> java.lang.NullPointerException
>         at
> org.apache.axis2.databinding.utils.ConverterUtil.convertToString(
> ConverterUtil.java:195)
>         at test.client.TestservicePortStub$EchoRequest.getPullParser(
> TestservicePortStub.java:264)
>         at test.client.TestservicePortStub.toEnvelope(
> TestservicePortStub.java:353)
>         at test.client.TestservicePortStub.echo(TestservicePortStub.java
> :90)
>         at test.client.Client1.main(Client1.java:41)
>
>
> But if I followed the client coding in the userguide sample, it works
> fine.
>
> Is there any problem in the code generator ?
>
>
> The wsdl.
>
> <wsdl:definitions xmlns:ns1="http://org.apache.axis2/xsd"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:tns="http://org.apache.axis2/"
> targetNamespace="http://org.apache.axis2/"><wsdl:types><xs:schema
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:ns1="http://org.apache.axis2/xsd"
> targetNamespace="http://org.apache.axis2/xsd"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> <xs:element name="echoRequest">
> <xs:complexType>
> <xs:sequence>
> <xs:element type="xs:anyType" name="element" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="echoResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element type="xs:anyType" name="return" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema></wsdl:types><wsdl:message
> name="echoResponseMessage"><wsdl:part name="part1"
> element="ns1:echoResponse" /></wsdl:message><wsdl:message
> name="echoRequestMessage"><wsdl:part name="part1"
> element="ns1:echoRequest" /></wsdl:message><wsdl:portType
> name="testservicePort"><wsdl:operation name="echo"><wsdl:input
> message="tns:echoRequestMessage" /><wsdl:output
> message="tns:echoResponseMessage"
> /></wsdl:operation></wsdl:portType><wsdl:binding
> name="testserviceBinding" type="tns:testservicePort"><soap:binding
> transport="http://schemas.xmlsoap.org/soap/http" style="document"
> /><wsdl:operation name="echo"><soap:operation name="operation"
> soapAction="echo" style="document" /><wsdl:input><soap:body
> use="literal" namespace="http://www.org.apache.axis2"
> /></wsdl:input><wsdl:output><soap:body use="literal"
> namespace="http://www.org.apache.axis2"
> /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service
> name="testservice"><wsdl:port name="testservicePortType"
> binding="tns:testserviceBinding"><soap:address
> location="http://localhost/axis2/services/testservice"
> /></wsdl:port></wsdl:service></wsdl:definitions>
>
>
>
> The client code:
>
> /**
> * Client1.java
> *
> * Copyright (C) 2006 Eric Chow. All right Reserved.
> *
> * This software is the confidential and proprietary information of Eric
> Chow.
> */
> package test.client;
>
> import org.apache.axis2.databinding.ADBBean;
>
> /**
> * Client1.java
> *
> * @author Chao Hoi Ka, Eric
> *
> */
> public class Client1 {
>
>         /**
>          *
>          */
>         public Client1() {
>                 super();
>                 // TODO Auto-generated constructor stub
>         }
>
>         /**
>          * @param args
>          */
>         public static void main(String[] args) {
>                 try {
>                         TestservicePortStub stub = new
> TestservicePortStub();
>                         TestservicePortStub.EchoRequest req =
> (TestservicePortStub.EchoRequest)
> getTestObject(TestservicePortStub.EchoRequest.class);
>
>                         System.out.println(stub.echo(req));
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>
>         }
>
>         public static ADBBean getTestObject(Class type) throws Exception {
>                 return (ADBBean) type.newInstance();
>         }
>
>
> }
>
>
>
>
> The code that generate from wsdl2java
>
> /**
> * TestservicePortStub.java
> *
> * This file was auto-generated from WSDL
> * by the Apache Axis2 version: 0.94 Jan 11, 2006 (08:01:58 LKT)
> */
> package test.client;
>
> /*
> * TestservicePortStub java implementation
> */
>
> public class TestservicePortStub extends org.apache.axis2.client.Stub {
>         // default axis home being null forces the system to pick up the
> mars from
>         // the axis2 library
>         public static final String AXIS2_HOME = null;
>
>         protected static org.apache.axis2.description.AxisOperation[]
> _operations;
>
>         static {
>
>                 // creating the Service
>                 _service = new org.apache.axis2.description.AxisService(
>                                 "TestservicePort");
>
>                 // creating the operations
>                 org.apache.axis2.description.AxisOperation __operation;
>                 _operations = new
> org.apache.axis2.description.OutInAxisOperation[1];
>
>                 __operation = new
> org.apache.axis2.description.OutInAxisOperation();
>                 __operation.setName(new javax.xml.namespace.QName(
>                                 "http://org.apache.axis2/", "echo"));
>                 _operations[0] = __operation;
>                 _service.addOperation(__operation);
>
>         }
>
>         public TestservicePortStub(
>                         org.apache.axis2.context.ConfigurationContextconfigurationContext,
>                         String targetEndpoint) throws java.lang.Exception{
>
>                 _serviceClient = new org.apache.axis2.client.ServiceClient
> (
>                                 configurationContext, _service);
>                 _serviceClient.getOptions().setTo(
>                                 new
> org.apache.axis2.addressing.EndpointReference(
>                                                 targetEndpoint));
>
>         }
>
>         /**
>          * Default Constructor
>          */
>         public TestservicePortStub() throws java.lang.Exception {
>
>                 this("http://localhost/axis2/services/testservice");
>
>         }
>
>         /**
>          * Constructor taking the traget endpoint
>          */
>         public TestservicePortStub(String targetEndpoint)
>                         throws java.lang.Exception {
>                 this(new
> org.apache.axis2.context.ConfigurationContextFactory()
>
>                                 .createConfigurationContextFromFileSystem(AXIS2_HOME),
>                                 targetEndpoint);
>         }
>
>         /**
>          * Auto generated method signature
>          *
>          * @see test.services.TestservicePort#echo
>          * @param param0
>          *
>          */
>         public TestservicePortStub.EchoResponse echo(
>                         TestservicePortStub.EchoRequest param0)
>                         throws java.rmi.RemoteException {
>
>                 org.apache.axis2.client.OperationClient _operationClient =
> _serviceClient
>                                 .createClient(_operations[0].getName());
>                 _operationClient.getOptions().setSoapAction("echo");
>
>                 _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
>
>                 // create SOAP envelope with that payload
>                 org.apache.axis2.soap.SOAPEnvelope env = null;
>
>                 // Style is Doc.
>
>                 env = toEnvelope(getFactory(_options.getSoapVersionURI()),
> param0);
>
>                 // create message context with that soap envelope
>                 org.apache.axis2.context.MessageContext _messageContext =
> new
> org.apache.axis2.context.MessageContext();
>                 _messageContext.setEnvelope(env);
>
>                 // add the message contxt to the operation client
>                 _operationClient.addMessageContext(_messageContext);
>                 // set the options hierarchy
>                 _options.setParent(_operationClient.getOptions());
>                 _operationClient.setOptions(_options);
>
>                 // execute the operation client
>                 _operationClient.execute(true);
>
>                 org.apache.axis2.context.MessageContext_returnMessageContext =
> _operationClient
>                                 .getMessageContext(
> org.apache.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
>                 org.apache.axis2.soap.SOAPEnvelope _returnEnv =
> _returnMessageContext
>                                 .getEnvelope();
>
>                 java.lang.Object object = fromOM(getElement(_returnEnv,
> "doc"),
>                                 TestservicePortStub.EchoResponse.class);
>                 return (TestservicePortStub.EchoResponse) object;
>
>         }
>
>         // http://localhost/axis2/services/testservice
>         public static class EchoResponse implements
>                         org.apache.axis2.databinding.ADBBean {
>
>                 public static final javax.xml.namespace.QName MY_QNAME =
> new
> javax.xml.namespace.QName(
>                                 "http://org.apache.axis2/xsd",
> "echoResponse", "ns1");
>
>                 /**
>                  * field for _return
>                  */
>                 private org.apache.axis2.om.OMElement local_return;
>
>                 /**
>                  * Auto generated getter method
>                  *
>                  * @return org.apache.axis2.om.OMElement
>                  */
>                 public org.apache.axis2.om.OMElement get_return() {
>                         return local_return;
>                 }
>
>                 /**
>                  * Auto generated setter method
>                  *
>                  * @param param
>                  *            _return
>                  */
>                 public void set_return(org.apache.axis2.om.OMElementparam) {
>
>                         this.local_return = param;
>                 }
>
>                 /**
>                  * databinding method to get an XML representation of this
> object
>                  *
>                  */
>                 public javax.xml.stream.XMLStreamReader getPullParser(
>                                 javax.xml.namespace.QName qName) {
>
>                         java.util.ArrayList elementList = new
> java.util.ArrayList();
>                         java.util.ArrayList attribList = new
> java.util.ArrayList();
>
>                         elementList.add(new javax.xml.namespace.QName(
>                                         "http://org.apache.axis2/xsd",
> "return"));
>                         elementList.add(
> org.apache.axis2.databinding.utils.ConverterUtil
>                                         .convertToString(local_return));
>
>                         return
> org.apache.axis2.databinding.utils.ADBPullParser
>                                         .createPullParser(qName,
> elementList.toArray(), attribList
>                                                         .toArray());
>
>                 }
>
>                 /**
>                  * static method to create the object Note - This is not
> complete
>                  */
>                 public static EchoResponse parse(
> javax.xml.stream.XMLStreamReader reader)
>                                 throws java.lang.Exception {
>                         EchoResponse object = new EchoResponse();
>                         try {
>                                 int event = reader.getEventType();
>                                 int count = 0;
>                                 int argumentCount = 1;
>                                 boolean done = false;
>                                 // event better be a START_ELEMENT. if not
> we should go up to
>                                 // the start element here
>                                 while (!reader.isStartElement()) {
>                                         event = reader.next();
>                                 }
>
>                                 while (!done) {
>                                         if (
> javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {
>
>                                                 if ("return".equals(
> reader.getLocalName())) {
>
>                                                         String content =
> reader.getElementText();
>                                                         object
>
>                                                                         .set_return(
> org.apache.axis2.databinding.utils.ConverterUtil
>
>                                                                                         .convertToanyType(content));
>                                                         count++;
>
>                                                 }
>
>                                         }
>
>                                         if (argumentCount == count) {
>                                                 done = true;
>                                         }
>
>                                         if (!done) {
>                                                 event = reader.next();
>                                         }
>
>                                 }
>
>                         } catch (javax.xml.stream.XMLStreamException e) {
>                                 throw new java.lang.Exception(e);
>                         }
>
>                         return object;
>                 }
>
>         }
>
>         public static class EchoRequest implements
>                         org.apache.axis2.databinding.ADBBean {
>
>                 public static final javax.xml.namespace.QName MY_QNAME =
> new
> javax.xml.namespace.QName(
>                                 "http://org.apache.axis2/xsd",
> "echoRequest", "ns1");
>
>                 /**
>                  * field for Element
>                  */
>                 private org.apache.axis2.om.OMElement localElement;
>
>                 /**
>                  * Auto generated getter method
>                  *
>                  * @return org.apache.axis2.om.OMElement
>                  */
>                 public org.apache.axis2.om.OMElement getElement() {
>                         return localElement;
>                 }
>
>                 /**
>                  * Auto generated setter method
>                  *
>                  * @param param
>                  *            Element
>                  */
>                 public void setElement(org.apache.axis2.om.OMElementparam) {
>
>                         this.localElement = param;
>                 }
>
>                 /**
>                  * databinding method to get an XML representation of this
> object
>                  *
>                  */
>                 public javax.xml.stream.XMLStreamReader getPullParser(
>                                 javax.xml.namespace.QName qName) {
>
>                         java.util.ArrayList elementList = new
> java.util.ArrayList();
>                         java.util.ArrayList attribList = new
> java.util.ArrayList();
>
>                         elementList.add(new javax.xml.namespace.QName(
>                                         "http://org.apache.axis2/xsd",
> "element"));
>                         elementList.add(
> org.apache.axis2.databinding.utils.ConverterUtil
>                                         .convertToString(localElement));
>
>                         return
> org.apache.axis2.databinding.utils.ADBPullParser
>                                         .createPullParser(qName,
> elementList.toArray(), attribList
>                                                         .toArray());
>
>                 }
>
>                 /**
>                  * static method to create the object Note - This is not
> complete
>                  */
>                 public static EchoRequest parse(
> javax.xml.stream.XMLStreamReader reader)
>                                 throws java.lang.Exception {
>                         EchoRequest object = new EchoRequest();
>                         try {
>                                 int event = reader.getEventType();
>                                 int count = 0;
>                                 int argumentCount = 1;
>                                 boolean done = false;
>                                 // event better be a START_ELEMENT. if not
> we should go up to
>                                 // the start element here
>                                 while (!reader.isStartElement()) {
>                                         event = reader.next();
>                                 }
>
>                                 while (!done) {
>                                         if (
> javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {
>
>                                                 if ("element".equals(
> reader.getLocalName())) {
>
>                                                         String content =
> reader.getElementText();
>                                                         object
>
>                                                                         .setElement(
> org.apache.axis2.databinding.utils.ConverterUtil
>
>                                                                                         .convertToanyType(content));
>                                                         count++;
>
>                                                 }
>
>                                         }
>
>                                         if (argumentCount == count) {
>                                                 done = true;
>                                         }
>
>                                         if (!done) {
>                                                 event = reader.next();
>                                         }
>
>                                 }
>
>                         } catch (javax.xml.stream.XMLStreamException e) {
>                                 throw new java.lang.Exception(e);
>                         }
>
>                         return object;
>                 }
>
>         }
>
>         private static javax.xml.namespace.QName[] qNameArray = {
>
>         };
>
>         private org.apache.axis2.om.OMElement toOM(
>                         TestservicePortStub.EchoRequest param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder(
>
> org.apache.axis2.om.OMAbstractFactory.getOMFactory(),
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoRequest.MY_QNAME));
>                         org.apache.axis2.om.OMElement documentElement =
> builder
>                                         .getDocumentElement();
>                         ((org.apache.axis2.om.impl.OMNodeEx)
> documentElement)
>                                         .setParent(null); // remove the
> parent link
>                         return documentElement;
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private org.apache.axis2.soap.SOAPEnvelope toEnvelope(
>                         org.apache.axis2.soap.SOAPFactory factory,
>                         TestservicePortStub.EchoRequest param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>                         org.apache.axis2.databinding.ADBSOAPModelBuilderbuilder = new
> org.apache.axis2.databinding.ADBSOAPModelBuilder(
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoRequest.MY_QNAME),
>                                         factory);
>                         return builder.getEnvelope();
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private org.apache.axis2.om.OMElement toOM(
>                         TestservicePortStub.EchoResponse param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder(
>
> org.apache.axis2.om.OMAbstractFactory.getOMFactory(),
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoResponse.MY_QNAME));
>                         org.apache.axis2.om.OMElement documentElement =
> builder
>                                         .getDocumentElement();
>                         ((org.apache.axis2.om.impl.OMNodeEx)
> documentElement)
>                                         .setParent(null); // remove the
> parent link
>                         return documentElement;
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private org.apache.axis2.soap.SOAPEnvelope toEnvelope(
>                         org.apache.axis2.soap.SOAPFactory factory,
>                         TestservicePortStub.EchoResponse param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>                         org.apache.axis2.databinding.ADBSOAPModelBuilderbuilder = new
> org.apache.axis2.databinding.ADBSOAPModelBuilder(
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoResponse.MY_QNAME),
>                                         factory);
>                         return builder.getEnvelope();
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private java.lang.Object fromOM(org.apache.axis2.om.OMElementparam,
>                         java.lang.Class type) {
>                 Object obj;
>                 try {
>                         java.lang.reflect.Method parseMethod =
> type.getMethod("parse",
>                                         new Class[] {
> javax.xml.stream.XMLStreamReader.class });
>                         obj = null;
>                         if (parseMethod != null) {
>                                 obj = parseMethod.invoke(null, new
> Object[] { param
>                                                 .getXMLStreamReaderWithoutCaching()
> });
>                         } else {
>                                 // oops! we don't know how to deal with
> this. Perhaps the
>                                 // reflective one is a good choice here
>                         }
>                 } catch (Exception e) {
>                         throw new RuntimeException(e);
>                 }
>
>                 return obj;
>         }
>
> }
>
>
>
>
>
>
>
>
>
> Eric
>

Re: java.lang.NullPointerException when invoking axis2 web service !!!

Posted by robert lazarski <ro...@gmail.com>.
Looks like your using adb. You might try xmlbeans, -d xmlbeans. If that
doesn't work, post your options to wsdl2java.

HTH,
Robert
http://www.braziloutsource.com/

On 2/22/06, Eric Chow <er...@gmail.com> wrote:
>
> Hello,
>
>
> When I test the web service by using the code that generated by the
> wsdl2java tools provided in axis2, it just raised
> NullPointerException:
>
>
> java.lang.NullPointerException
>         at
> org.apache.axis2.databinding.utils.ConverterUtil.convertToString(
> ConverterUtil.java:195)
>         at test.client.TestservicePortStub$EchoRequest.getPullParser(
> TestservicePortStub.java:264)
>         at test.client.TestservicePortStub.toEnvelope(
> TestservicePortStub.java:353)
>         at test.client.TestservicePortStub.echo(TestservicePortStub.java
> :90)
>         at test.client.Client1.main(Client1.java:41)
>
>
> But if I followed the client coding in the userguide sample, it works
> fine.
>
> Is there any problem in the code generator ?
>
>
> The wsdl.
>
> <wsdl:definitions xmlns:ns1="http://org.apache.axis2/xsd"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:tns="http://org.apache.axis2/"
> targetNamespace="http://org.apache.axis2/"><wsdl:types><xs:schema
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:ns1="http://org.apache.axis2/xsd"
> targetNamespace="http://org.apache.axis2/xsd"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> <xs:element name="echoRequest">
> <xs:complexType>
> <xs:sequence>
> <xs:element type="xs:anyType" name="element" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="echoResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element type="xs:anyType" name="return" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema></wsdl:types><wsdl:message
> name="echoResponseMessage"><wsdl:part name="part1"
> element="ns1:echoResponse" /></wsdl:message><wsdl:message
> name="echoRequestMessage"><wsdl:part name="part1"
> element="ns1:echoRequest" /></wsdl:message><wsdl:portType
> name="testservicePort"><wsdl:operation name="echo"><wsdl:input
> message="tns:echoRequestMessage" /><wsdl:output
> message="tns:echoResponseMessage"
> /></wsdl:operation></wsdl:portType><wsdl:binding
> name="testserviceBinding" type="tns:testservicePort"><soap:binding
> transport="http://schemas.xmlsoap.org/soap/http" style="document"
> /><wsdl:operation name="echo"><soap:operation name="operation"
> soapAction="echo" style="document" /><wsdl:input><soap:body
> use="literal" namespace="http://www.org.apache.axis2"
> /></wsdl:input><wsdl:output><soap:body use="literal"
> namespace="http://www.org.apache.axis2"
> /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service
> name="testservice"><wsdl:port name="testservicePortType"
> binding="tns:testserviceBinding"><soap:address
> location="http://localhost/axis2/services/testservice"
> /></wsdl:port></wsdl:service></wsdl:definitions>
>
>
>
> The client code:
>
> /**
> * Client1.java
> *
> * Copyright (C) 2006 Eric Chow. All right Reserved.
> *
> * This software is the confidential and proprietary information of Eric
> Chow.
> */
> package test.client;
>
> import org.apache.axis2.databinding.ADBBean;
>
> /**
> * Client1.java
> *
> * @author Chao Hoi Ka, Eric
> *
> */
> public class Client1 {
>
>         /**
>          *
>          */
>         public Client1() {
>                 super();
>                 // TODO Auto-generated constructor stub
>         }
>
>         /**
>          * @param args
>          */
>         public static void main(String[] args) {
>                 try {
>                         TestservicePortStub stub = new
> TestservicePortStub();
>                         TestservicePortStub.EchoRequest req =
> (TestservicePortStub.EchoRequest)
> getTestObject(TestservicePortStub.EchoRequest.class);
>
>                         System.out.println(stub.echo(req));
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>
>         }
>
>         public static ADBBean getTestObject(Class type) throws Exception {
>                 return (ADBBean) type.newInstance();
>         }
>
>
> }
>
>
>
>
> The code that generate from wsdl2java
>
> /**
> * TestservicePortStub.java
> *
> * This file was auto-generated from WSDL
> * by the Apache Axis2 version: 0.94 Jan 11, 2006 (08:01:58 LKT)
> */
> package test.client;
>
> /*
> * TestservicePortStub java implementation
> */
>
> public class TestservicePortStub extends org.apache.axis2.client.Stub {
>         // default axis home being null forces the system to pick up the
> mars from
>         // the axis2 library
>         public static final String AXIS2_HOME = null;
>
>         protected static org.apache.axis2.description.AxisOperation[]
> _operations;
>
>         static {
>
>                 // creating the Service
>                 _service = new org.apache.axis2.description.AxisService(
>                                 "TestservicePort");
>
>                 // creating the operations
>                 org.apache.axis2.description.AxisOperation __operation;
>                 _operations = new
> org.apache.axis2.description.OutInAxisOperation[1];
>
>                 __operation = new
> org.apache.axis2.description.OutInAxisOperation();
>                 __operation.setName(new javax.xml.namespace.QName(
>                                 "http://org.apache.axis2/", "echo"));
>                 _operations[0] = __operation;
>                 _service.addOperation(__operation);
>
>         }
>
>         public TestservicePortStub(
>                         org.apache.axis2.context.ConfigurationContextconfigurationContext,
>                         String targetEndpoint) throws java.lang.Exception{
>
>                 _serviceClient = new org.apache.axis2.client.ServiceClient
> (
>                                 configurationContext, _service);
>                 _serviceClient.getOptions().setTo(
>                                 new
> org.apache.axis2.addressing.EndpointReference(
>                                                 targetEndpoint));
>
>         }
>
>         /**
>          * Default Constructor
>          */
>         public TestservicePortStub() throws java.lang.Exception {
>
>                 this("http://localhost/axis2/services/testservice");
>
>         }
>
>         /**
>          * Constructor taking the traget endpoint
>          */
>         public TestservicePortStub(String targetEndpoint)
>                         throws java.lang.Exception {
>                 this(new
> org.apache.axis2.context.ConfigurationContextFactory()
>
>                                 .createConfigurationContextFromFileSystem(AXIS2_HOME),
>                                 targetEndpoint);
>         }
>
>         /**
>          * Auto generated method signature
>          *
>          * @see test.services.TestservicePort#echo
>          * @param param0
>          *
>          */
>         public TestservicePortStub.EchoResponse echo(
>                         TestservicePortStub.EchoRequest param0)
>                         throws java.rmi.RemoteException {
>
>                 org.apache.axis2.client.OperationClient _operationClient =
> _serviceClient
>                                 .createClient(_operations[0].getName());
>                 _operationClient.getOptions().setSoapAction("echo");
>
>                 _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
>
>                 // create SOAP envelope with that payload
>                 org.apache.axis2.soap.SOAPEnvelope env = null;
>
>                 // Style is Doc.
>
>                 env = toEnvelope(getFactory(_options.getSoapVersionURI()),
> param0);
>
>                 // create message context with that soap envelope
>                 org.apache.axis2.context.MessageContext _messageContext =
> new
> org.apache.axis2.context.MessageContext();
>                 _messageContext.setEnvelope(env);
>
>                 // add the message contxt to the operation client
>                 _operationClient.addMessageContext(_messageContext);
>                 // set the options hierarchy
>                 _options.setParent(_operationClient.getOptions());
>                 _operationClient.setOptions(_options);
>
>                 // execute the operation client
>                 _operationClient.execute(true);
>
>                 org.apache.axis2.context.MessageContext_returnMessageContext =
> _operationClient
>                                 .getMessageContext(
> org.apache.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
>                 org.apache.axis2.soap.SOAPEnvelope _returnEnv =
> _returnMessageContext
>                                 .getEnvelope();
>
>                 java.lang.Object object = fromOM(getElement(_returnEnv,
> "doc"),
>                                 TestservicePortStub.EchoResponse.class);
>                 return (TestservicePortStub.EchoResponse) object;
>
>         }
>
>         // http://localhost/axis2/services/testservice
>         public static class EchoResponse implements
>                         org.apache.axis2.databinding.ADBBean {
>
>                 public static final javax.xml.namespace.QName MY_QNAME =
> new
> javax.xml.namespace.QName(
>                                 "http://org.apache.axis2/xsd",
> "echoResponse", "ns1");
>
>                 /**
>                  * field for _return
>                  */
>                 private org.apache.axis2.om.OMElement local_return;
>
>                 /**
>                  * Auto generated getter method
>                  *
>                  * @return org.apache.axis2.om.OMElement
>                  */
>                 public org.apache.axis2.om.OMElement get_return() {
>                         return local_return;
>                 }
>
>                 /**
>                  * Auto generated setter method
>                  *
>                  * @param param
>                  *            _return
>                  */
>                 public void set_return(org.apache.axis2.om.OMElementparam) {
>
>                         this.local_return = param;
>                 }
>
>                 /**
>                  * databinding method to get an XML representation of this
> object
>                  *
>                  */
>                 public javax.xml.stream.XMLStreamReader getPullParser(
>                                 javax.xml.namespace.QName qName) {
>
>                         java.util.ArrayList elementList = new
> java.util.ArrayList();
>                         java.util.ArrayList attribList = new
> java.util.ArrayList();
>
>                         elementList.add(new javax.xml.namespace.QName(
>                                         "http://org.apache.axis2/xsd",
> "return"));
>                         elementList.add(
> org.apache.axis2.databinding.utils.ConverterUtil
>                                         .convertToString(local_return));
>
>                         return
> org.apache.axis2.databinding.utils.ADBPullParser
>                                         .createPullParser(qName,
> elementList.toArray(), attribList
>                                                         .toArray());
>
>                 }
>
>                 /**
>                  * static method to create the object Note - This is not
> complete
>                  */
>                 public static EchoResponse parse(
> javax.xml.stream.XMLStreamReader reader)
>                                 throws java.lang.Exception {
>                         EchoResponse object = new EchoResponse();
>                         try {
>                                 int event = reader.getEventType();
>                                 int count = 0;
>                                 int argumentCount = 1;
>                                 boolean done = false;
>                                 // event better be a START_ELEMENT. if not
> we should go up to
>                                 // the start element here
>                                 while (!reader.isStartElement()) {
>                                         event = reader.next();
>                                 }
>
>                                 while (!done) {
>                                         if (
> javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {
>
>                                                 if ("return".equals(
> reader.getLocalName())) {
>
>                                                         String content =
> reader.getElementText();
>                                                         object
>
>                                                                         .set_return(
> org.apache.axis2.databinding.utils.ConverterUtil
>
>                                                                                         .convertToanyType(content));
>                                                         count++;
>
>                                                 }
>
>                                         }
>
>                                         if (argumentCount == count) {
>                                                 done = true;
>                                         }
>
>                                         if (!done) {
>                                                 event = reader.next();
>                                         }
>
>                                 }
>
>                         } catch (javax.xml.stream.XMLStreamException e) {
>                                 throw new java.lang.Exception(e);
>                         }
>
>                         return object;
>                 }
>
>         }
>
>         public static class EchoRequest implements
>                         org.apache.axis2.databinding.ADBBean {
>
>                 public static final javax.xml.namespace.QName MY_QNAME =
> new
> javax.xml.namespace.QName(
>                                 "http://org.apache.axis2/xsd",
> "echoRequest", "ns1");
>
>                 /**
>                  * field for Element
>                  */
>                 private org.apache.axis2.om.OMElement localElement;
>
>                 /**
>                  * Auto generated getter method
>                  *
>                  * @return org.apache.axis2.om.OMElement
>                  */
>                 public org.apache.axis2.om.OMElement getElement() {
>                         return localElement;
>                 }
>
>                 /**
>                  * Auto generated setter method
>                  *
>                  * @param param
>                  *            Element
>                  */
>                 public void setElement(org.apache.axis2.om.OMElementparam) {
>
>                         this.localElement = param;
>                 }
>
>                 /**
>                  * databinding method to get an XML representation of this
> object
>                  *
>                  */
>                 public javax.xml.stream.XMLStreamReader getPullParser(
>                                 javax.xml.namespace.QName qName) {
>
>                         java.util.ArrayList elementList = new
> java.util.ArrayList();
>                         java.util.ArrayList attribList = new
> java.util.ArrayList();
>
>                         elementList.add(new javax.xml.namespace.QName(
>                                         "http://org.apache.axis2/xsd",
> "element"));
>                         elementList.add(
> org.apache.axis2.databinding.utils.ConverterUtil
>                                         .convertToString(localElement));
>
>                         return
> org.apache.axis2.databinding.utils.ADBPullParser
>                                         .createPullParser(qName,
> elementList.toArray(), attribList
>                                                         .toArray());
>
>                 }
>
>                 /**
>                  * static method to create the object Note - This is not
> complete
>                  */
>                 public static EchoRequest parse(
> javax.xml.stream.XMLStreamReader reader)
>                                 throws java.lang.Exception {
>                         EchoRequest object = new EchoRequest();
>                         try {
>                                 int event = reader.getEventType();
>                                 int count = 0;
>                                 int argumentCount = 1;
>                                 boolean done = false;
>                                 // event better be a START_ELEMENT. if not
> we should go up to
>                                 // the start element here
>                                 while (!reader.isStartElement()) {
>                                         event = reader.next();
>                                 }
>
>                                 while (!done) {
>                                         if (
> javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {
>
>                                                 if ("element".equals(
> reader.getLocalName())) {
>
>                                                         String content =
> reader.getElementText();
>                                                         object
>
>                                                                         .setElement(
> org.apache.axis2.databinding.utils.ConverterUtil
>
>                                                                                         .convertToanyType(content));
>                                                         count++;
>
>                                                 }
>
>                                         }
>
>                                         if (argumentCount == count) {
>                                                 done = true;
>                                         }
>
>                                         if (!done) {
>                                                 event = reader.next();
>                                         }
>
>                                 }
>
>                         } catch (javax.xml.stream.XMLStreamException e) {
>                                 throw new java.lang.Exception(e);
>                         }
>
>                         return object;
>                 }
>
>         }
>
>         private static javax.xml.namespace.QName[] qNameArray = {
>
>         };
>
>         private org.apache.axis2.om.OMElement toOM(
>                         TestservicePortStub.EchoRequest param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder(
>
> org.apache.axis2.om.OMAbstractFactory.getOMFactory(),
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoRequest.MY_QNAME));
>                         org.apache.axis2.om.OMElement documentElement =
> builder
>                                         .getDocumentElement();
>                         ((org.apache.axis2.om.impl.OMNodeEx)
> documentElement)
>                                         .setParent(null); // remove the
> parent link
>                         return documentElement;
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private org.apache.axis2.soap.SOAPEnvelope toEnvelope(
>                         org.apache.axis2.soap.SOAPFactory factory,
>                         TestservicePortStub.EchoRequest param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>                         org.apache.axis2.databinding.ADBSOAPModelBuilderbuilder = new
> org.apache.axis2.databinding.ADBSOAPModelBuilder(
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoRequest.MY_QNAME),
>                                         factory);
>                         return builder.getEnvelope();
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private org.apache.axis2.om.OMElement toOM(
>                         TestservicePortStub.EchoResponse param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new
> org.apache.axis2.om.impl.llom.builder.StAXOMBuilder(
>
> org.apache.axis2.om.OMAbstractFactory.getOMFactory(),
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoResponse.MY_QNAME));
>                         org.apache.axis2.om.OMElement documentElement =
> builder
>                                         .getDocumentElement();
>                         ((org.apache.axis2.om.impl.OMNodeEx)
> documentElement)
>                                         .setParent(null); // remove the
> parent link
>                         return documentElement;
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private org.apache.axis2.soap.SOAPEnvelope toEnvelope(
>                         org.apache.axis2.soap.SOAPFactory factory,
>                         TestservicePortStub.EchoResponse param) {
>                 if (param instanceof org.apache.axis2.databinding.ADBBean)
> {
>                         org.apache.axis2.databinding.ADBSOAPModelBuilderbuilder = new
> org.apache.axis2.databinding.ADBSOAPModelBuilder(
>                                         param
>                                                         .getPullParser(
> TestservicePortStub.EchoResponse.MY_QNAME),
>                                         factory);
>                         return builder.getEnvelope();
>                 } else {
>
>                         // todo finish this onece the bean serializer has
> the necessary
>                         // methods
>                         return null;
>                 }
>         }
>
>         private java.lang.Object fromOM(org.apache.axis2.om.OMElementparam,
>                         java.lang.Class type) {
>                 Object obj;
>                 try {
>                         java.lang.reflect.Method parseMethod =
> type.getMethod("parse",
>                                         new Class[] {
> javax.xml.stream.XMLStreamReader.class });
>                         obj = null;
>                         if (parseMethod != null) {
>                                 obj = parseMethod.invoke(null, new
> Object[] { param
>                                                 .getXMLStreamReaderWithoutCaching()
> });
>                         } else {
>                                 // oops! we don't know how to deal with
> this. Perhaps the
>                                 // reflective one is a good choice here
>                         }
>                 } catch (Exception e) {
>                         throw new RuntimeException(e);
>                 }
>
>                 return obj;
>         }
>
> }
>
>
>
>
>
>
>
>
>
> Eric
>