[ http://jira.codehaus.org/browse/XFIRE-705?page=comments#action_80106 ]
Pascal Lalonde commented on XFIRE-705:
--------------------------------------
The source of the NPE is that the InterfaceInvocationHandler doesn't have all
bean properties in it, because they were not specified into the Request. So the
readProperty method is returning null.
This happens on server side, when the service is getting the arguments, has
proxy objects, but implementing my interfaces. So when calling the
getMinimumPriceRange of my object (But the instance is a proxy object
implementing this interface). Somewhere, it ends in the
InterfaceInvocationHandler, and the invoke methods is returning null.
I do understand why, but I can't avoid the NPE, so I need to do the following
everywhere:
[...]
int priceRange = 0;
try{
int priceRange = foo.getMinimumPriceRange();
} catch(NullPointerException npe){
priceRange = -1;
}
[...]
I'm not sure if this is clear enough.
> NullPointerException when accessing an interface method and the property was
> not set in the WSDL.
> -------------------------------------------------------------------------------------------------
>
> Key: XFIRE-705
> URL: http://jira.codehaus.org/browse/XFIRE-705
> Project: XFire
> Issue Type: Bug
> Affects Versions: 1.2.2
> Environment: Windows / JBoss 4.0
> Reporter: Pascal Lalonde
> Assigned To: Dan Diephouse
> Fix For: 1.2.3
>
> Attachments: MetaSearchWebService.java,
> searchFlights_withoutPriceRange.xml, searchFlights_withPriceRange.xml
>
>
> SOAP request is sent via SoapUI without specifying a none-mandatory property,
> when getting in the server, a NullPointerException is thrown when accessing
> the property.
> This is explained by the fact that in the InterfaceInvocationHandler, the
> property is not found in the mapped properties.
> 08:20:14,194 ERROR [DefaultFaultHandler] Fault occurred!
> java.lang.NullPointerException
> at $Proxy567.getMinimumPriceRange(Unknown Source)
> at
> ca.synopsis.sef.data.factory.impl.SefDataFactoryImpl.convertFlight(SefDataFactoryImpl.java:51)
> at
> ca.synopsis.sef.ws.impl.MetaSearchWebServiceImpl.search(MetaSearchWebServiceImpl.java:58)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:54)
> at
> org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:271)
> at
> org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:84)
> at
> org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:132)
> at
> org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:107)
> at
> org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
> at
> org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
> at
> org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
> at
> org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
> at
> org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
> at
> org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> at
> org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> at
> org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
> at
> org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
> at
> org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> at
> org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
> at java.lang.Thread.run(Thread.java:595)
> The method signature is the following:
> /**
> * @return The minimum price to consider in the search.
> */
> int getMinimumPriceRange();
> I first tough it was related to XFIRE-653, but I tried the patch and didn't
> change anything.
--
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