Regression with base64Binary and simpleType elements
----------------------------------------------------

         Key: AXIS-2138
         URL: http://issues.apache.org/jira/browse/AXIS-2138
     Project: Apache Axis
        Type: Bug
  Components: WSDL processing  
    Versions: current (nightly)    
    Reporter: Steve Green


The following xsd snippet is cut down from http://www.w3.org/2000/09/xmldsig#

       <complexType name="ReferenceType">
         <sequence>
           <element ref="ds:DigestValue"/>
         </sequence>
       </complexType>
 
       <element name="DigestValue" type="ds:DigestValueType"/>
 
       <simpleType name="DigestValueType">
         <restriction base="base64Binary"/>
       </simpleType>
 
Once upon a time, the bean metadata for the DigestValue element looked like 
this:
 
         elemField.setXmlName(
             new javax.xml.namespace.QName(
                 "http://www.w3.org/2000/09/xmldsig#";, "DigestValue"));
         elemField.setXmlType(
             new javax.xml.namespace.QName(
                 "http://www.w3.org/2001/XMLSchema";, "base64Binary"));
 
But now it looks like this:

         elemField.setXmlName(
             new javax.xml.namespace.QName(
                 "http://www.w3.org/2000/09/xmldsig#";, "DigestValue"));
         elemField.setXmlType(
             new javax.xml.namespace.QName(
                 "http://www.w3.org/2000/09/xmldsig#";, "DigestValue"));
 
And as a result, I get this:
 
         org.xml.sax.SAXException: Found character data inside an array element 
while deserializing

It looks like the problem is in JavaBeanHelperWriter and came as the result of:

        revision 1.50
        date: 2005/03/20 18:58:49;  author: gdaniels;  state: Exp;
        lines: +6 -7
        branches:  1.50.2;
        Fix:
        
        http://issues.apache.org/jira/browse/AXIS-1869
        
        Don't walk the ref chain unless the TypeEntry is a CollectionTE
        - this should DTRT for true derived types.

Specifically,

        // Otherwise, use the type at the end of the ref
        // chain.
        while (elemType.getRefType() != null) {
            elemType = elemType.getRefType();
        }

was changed to

        // Otherwise, use the first non-Collection type we
        // encounter up the ref chain.
        while (elemType instanceof CollectionTE) {
            elemType = elemType.getRefType();
        }


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to