[ http://jira.codehaus.org/browse/XFIRE-915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tomasz Sztelak resolved XFIRE-915. ---------------------------------- Assignee: Tomasz Sztelak (was: Dan Diephouse) Resolution: Fixed Fix Version/s: 1.2.6 Should be fixed in svn > NullPointerException with code generated from PayPal wsdl > --------------------------------------------------------- > > Key: XFIRE-915 > URL: http://jira.codehaus.org/browse/XFIRE-915 > Project: XFire > Issue Type: Bug > Components: Aegis Module > Affects Versions: 1.2.4 > Environment: Linux/Gentoo, Java 1.6, eclipse 3.2 > Reporter: Lado Kumsiashvili > Assignee: Tomasz Sztelak > Fix For: 1.2.6 > > Attachments: generated.jar > > > I'd lige to use xFire FW for making PayPal SOAP API calls. So i've generated > Java classes from PayPal wsdl and i have wroten a small test class, that uses > this classes. > hier are links to PayPal wsdl and belonging XML Schemas: > PayPal Schema tps://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl > eBL Base Components https://www.sandbox.paypal.com/wsdl/eBLBaseComponents.xsd > Component Types > https://www.sandbox.paypal.com/wsdl/CoreComponentTypes.xsd > I use in my client(see code below) some dummy params. They do not really > matter. So i must receive some erros(Incorrect params, etc) as replay. > I have used debugger, and i receive a soap response, but then an > NullPointerException occures. So a can not read any errors or transaction > details in my programm. > ..... > The code(I ve generated java classes with eclipse plugin and choose package > name jira.xfire. If you choose another package name, please change this name > on the test program too. > package jira.xfire; > import java.util.List; > import javax.xml.ws.Holder; > import xfire.jira.PayPalAPIInterface; > import xfire.jira.PayPalAPIInterfaceServiceClient; > import ebay.api.paypalapi.GetTransactionDetailsReq; > import ebay.api.paypalapi.GetTransactionDetailsRequestType; > import ebay.api.paypalapi.GetTransactionDetailsResponseType; > import ebay.apis.eblbasecomponents.CustomSecurityHeaderType; > import ebay.apis.eblbasecomponents.ErrorType; > import ebay.apis.eblbasecomponents.UserIdPasswordType; > /** > * @author lado > * > */ > public class Main { > /** > * @param args > */ > public static void main(String[] args) { > GetTransactionDetailsRequestType r = new > GetTransactionDetailsRequestType(); > r.setVersion("1.0"); > r.setTransactionID("87K78012VR671152J");// some dummy value > PayPalAPIInterfaceServiceClient cc = new > PayPalAPIInterfaceServiceClient(); > PayPalAPIInterface api = cc.getPayPalAPI(); > GetTransactionDetailsReq request = new GetTransactionDetailsReq(); > request.setGetTransactionDetailsRequest(r); > CustomSecurityHeaderType requesterCredentials = new > CustomSecurityHeaderType(); > UserIdPasswordType auth = new UserIdPasswordType(); > auth.setUsername("sdk-seller_api1.sdk.com");// We use some dummy > // user and password. > // But response must > // come > auth.setPassword("12345678"); // and contain errors > requesterCredentials.setCredentials(auth); > Holder<CustomSecurityHeaderType> a2 = new > Holder<CustomSecurityHeaderType>(); > a2.value = requesterCredentials; > // call > GetTransactionDetailsResponseType response = api.getTransactionDetails( > request, requesterCredentials, a2); > List<ErrorType> errors = response.getErrors(); > if (errors != null && errors.size() > 0) { > System.out.println("\nERROR"); > for (ErrorType error : errors) { > System.out.println("\nErrorCode: " + error.getErrorCode()); > System.out.println("\nShortErrorMessage: " > + error.getShortMessage()); > System.out.println("\nLongErrorMessage: " > + error.getLongMessage()); > } > } else { > System.out.println(response.getPaymentTransactionDetails() > .getPayerInfo());// some dummy code > } > } > } > and the Stacktrace: > Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could > not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: > Fault: java.lang.NullPointerException > org.codehaus.xfire.fault.XFireFault: Fault: java.lang.NullPointerException > at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89) > at org.codehaus.xfire.client.Client.onReceive(Client.java:386) > at > org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139) > at > org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48) > at > org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26) > at > org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) > at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:75) > at org.codehaus.xfire.client.Client.invoke(Client.java:335) > at > org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77) > at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57) > at $Proxy13.getTransactionDetails(Unknown Source) > at jira.xfire.Main.main(Main.java:48) > Caused by: java.lang.NullPointerException > at > org.codehaus.xfire.aegis.AegisBindingProvider.getReadType(AegisBindingProvider.java:186) > at > org.codehaus.xfire.aegis.type.basic.BeanType.readObject(BeanType.java:152) > at > org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:162) > at > org.codehaus.xfire.service.binding.ServiceInvocationHandler.readHeaders(ServiceInvocationHandler.java:181) > at > org.codehaus.xfire.client.ClientReceiveHandler.invoke(ClientReceiveHandler.java:32) > at > org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) > at org.codehaus.xfire.client.Client.onReceive(Client.java:382) > ... 10 more > The problem occures beacuse in the Method public static Type > getReadType(XMLStreamReader xsr, MessageContext context, Type type, > TypeMapping tm) > null as type is passed. an then on the line 186 the code tries to read some > member of type(null) > i've fixed this problem temporary with replaceing line 186 code > if (!overrideTypeName.equals(type.getSchemaType())) with if ( type!= null > && !overrideTypeName.equals(type.getSchemaType())) > but i do not know if this solussion is good. > P.S. > I habe also atteched the all the generated code incl. my test Program > Main.java > So long, > Lado -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email