[ 
https://issues.apache.org/jira/browse/AXIS2-3723?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wicus Ross updated AXIS2-3723:
------------------------------

    Attachment: 20080522_00.diff

We have tracked down the cause relating to the reported issue. It would seem 
that JAXB is not following the JavaBean specification. The following link, 
http://www.mojavelinux.com/blog/archives/2006/09/the_great_jaxb_api_blunder/, 
describes our situation. From the aforementioned URL you can follow 
https://jaxb.dev.java.net/issues/show_bug.cgi?id=131 for more details.
 
We will start in module ADB, which is the closest to the issue. Specifically 
method org.apache.axis2.databinding.utils.BeanUtil.getPullParser(...) +-line 
128. The line reads as follows: BeanInfo beanInfo = 
Introspector.getBeanInfo(beanObject.getClass()); If you debug from here you 
will eventually hit the point of interest, 
java.beans.Introspector.getTargetProperty(...). Lines 537 through 567 (JDK6_04) 
is the focus point. Evidently the PropertyDescriptor (pd) readMethod (isXxx) 
will not be set if the resultType is of type java.lang.Boolean (lines 549 - 
552, JDK6_04).
 
To address the issue we made a small modification to method 
org.apache.axis2.databinding.utils.BeanUtil.getPullParser(...). Please find 
attached diff (20080522_00.diff).

> AXIS2 is not aware of "is" methods when generating soap messages from JAXB 
> java beans
> -------------------------------------------------------------------------------------
>
>                 Key: AXIS2-3723
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3723
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: databinding
>    Affects Versions: nightly
>         Environment: Win XP Pro, JDK 6_04, Tomcat 5.5.26, JAXB 2.1.6
>            Reporter: Glen Verran
>            Priority: Blocker
>             Fix For: nightly
>
>         Attachments: 20080522_00.diff
>
>
> I have an XSD which contains an element of type xs:boolean.  This element is 
> called "redirect".  I use JAXB 2.1.6 to generate the java beans from the XSD. 
> The methods for the "redirect" variable in the java bean are isRedirect and 
> setRedirect.
> I created a web service with the method below:
>   public RetrieveConfigurationDataResponse 
> retrieveConfigurationData(RetrieveConfigurationDataRequest req) {
>     RetrieveConfigurationDataResponse rsp = new 
> RetrieveConfigurationDataResponse();
>     rsp.setData("1234");
>     rsp.setDataEncodingType(req.getDataEncodingType());
>     rsp.setEchoData(req.getEchoData());
>     rsp.setIdentifier(req.getIdentifier());
>     rsp.setIdentifierType(req.getIdentifierType());
>     rsp.setRedirect(Boolean.FALSE);
>     rsp.setResponseCode("00");
>     rsp.setRevision(req.getRevision());
>     return rsp;
>   }
> Both the (RetrieveConfigurationDataRequest  and 
> RetrieveConfigurationDataResponse are JAXB generated java beans.  The 
> RetrieveConfigurationDataResponse class is the one that contains this 
> redirect variable.  I generated the client code and went on to test this 
> method to the web service.
> I got the following AxisFault saying that it could not find the read method 
> for "redirect".
> Exception in thread "main" org.apache.axis2.AxisFault: 
> org.apache.axis2.AxisFault: can not find read method for : redirect
>       at 
> org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
>       at 
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
>       at 
> com.traderoot.webservices.configurationdistribwebservice.ConfigurationDistribWebServiceStub.retrieveConfigurationData(ConfigurationDistribWebServiceStub.java:172)
>       at Test.main(Test.java:23)
> To confirm my assumptions, I went into the JAXB code and changed the 
> isRedirect method to getRedirect.  This fault did not occure.
> I do not consider this a workaround since JAXB classes are to be untouched.  
> It seems that AXIS2 is not looking for "is" methods when binding the java 
> bean.
> This is an absoluate blocker and prevents us from being able to use AXIS2.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to