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
>