[ 
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

Reply via email to