Do you have the latest code? Try with the latest sources from CVS. It
should be working fine.

Jayachandra

On Tue, 18 Jan 2005 19:30:46 -0600, Michael Ryan
<[EMAIL PROTECTED]> wrote:
> 
> 
> OK, I'll provide a bit more info to see if that helps elicit some
> assistance.  We are using Axis 1.2RC2.  We are only using Axis on the client
> side.
> 
> We are using anyType to allow us to pass any object type to our server app. 
> We need to use the XSD types, and several types defined by our WSDL.  The
> WSDL segment that declares this is:
> 
>   <complexType name="Option"> 
>   <sequence> 
>    <element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"
> nillable="true"/> 
>    <element name="value" type="xsd:anyType" minOccurs="1" maxOccurs="1"
> nillable="true"/> 
>   </sequence> 
>  </complexType> 
> 
> When run through Wsdl2Java, it produces a class named Option.java (see below
> for src). 
> 
> 
> Now, when the value field in the Option class is actually a
> java.lang.Boolean, this field gets serialized as a soapenc:boolean, as
> opposed to a xsd:boolean.  This causes interop issues.  I know there have
> been other issues similar to this in the past; I reported one of them about
> 2 years ago, and it was finally fixed for complex types in the 1.2 RC
> releases, but apparently, similar things still happen in other
> circumstances.  This did work fine in the original 1.0RC1, which has only
> recently upgraded from (finally).  The same thing happens when using other
> native types, such as int, long, string, etcâ  here is a snippet of the SOAP
> generated:
> 
>             <item xsi:type="ns1:Option"> 
>                <name xsi:type="xsd:string">noSourceFormatting</name> 
>                <value xsi:type="soapenc:boolean">true</value> 
>             </item> 
> 
> Here's my questions: 
> 1.  What is the correct behavior?  Is this a bug?  I believe that classes
> such as Boolean, String, Integer, should always be serialized using the XSD
> types.  There seems to be some belief that if an element is nillable, it
> needs to use the soapenc types, but I don't see why that is.  Obviously, if
> the value field in the Option class has a java.lang.Boolean, it is not nill.
> 
> 2.  Is there a way to control this?  Is there a property that can be set to
> control this?  Can I write custom (de)serializers to properly handle types
> such as java.lang.Boolean?    Is there a method/class that I can modify to
> change this behavior?  I'm more than willing to modify the behavior of Axis
> to do this, and see what other repurcussions the change has, but I don't
> know where to start inside the code.
> 
> Thanks for any help and/or commiseration with this issue, 
> Mike Ryan 
> 
> 
> 
> Option.java src: 
> /** 
>  * Option.java 
>  * 
>  * This file was auto-generated from WSDL 
>  * by the Apache Axis 1.2RC2 Nov 16, 2004 (12:19:44 EST) WSDL2Java emitter. 
>  */ 
> 
> package samurai.ws.axis.transform; 
> 
> public class Option  implements java.io.Serializable { 
>     private java.lang.String name; 
>     private java.lang.Object value; 
> 
>     public Option() { 
>     } 
> 
>     public Option( 
>            java.lang.String name, 
>            java.lang.Object value) { 
>            this.name = name; 
>            this.value = value; 
>     } 
> 
> 
>     /** 
>      * Gets the name value for this Option. 
>      * 
>      * @return name 
>      */ 
>     public java.lang.String getName() { 
>         return name; 
>     } 
> 
> 
>     /** 
>      * Sets the name value for this Option. 
>      * 
>      * @param name 
>      */ 
>     public void setName(java.lang.String name) { 
>         this.name = name; 
>     } 
> 
> 
>     /** 
>      * Gets the value value for this Option. 
>      * 
>      * @return value 
>      */ 
>     public java.lang.Object getValue() { 
>         return value; 
>     } 
> 
> 
>     /** 
>      * Sets the value value for this Option. 
>      * 
>      * @param value 
>      */ 
>     public void setValue(java.lang.Object value) { 
>         this.value = value; 
>     } 
> 
>     private java.lang.Object __equalsCalc = null; 
>     public synchronized boolean equals(java.lang.Object obj) { 
>         if (!(obj instanceof Option)) return false; 
>         Option other = (Option) obj; 
>         if (obj == null) return false; 
>         if (this == obj) return true; 
>         if (__equalsCalc != null) { 
>             return (__equalsCalc == obj); 
>         } 
>         __equalsCalc = obj; 
>         boolean _equals; 
>         _equals = true && 
>             ((this.name==null && other.getName()==null) || 
>              (this.name!=null && 
>               this.name.equals(other.getName()))) && 
>             ((this.value==null && other.getValue()==null) || 
>              (this.value!=null && 
>               this.value.equals(other.getValue()))); 
>         __equalsCalc = null; 
>         return _equals; 
>     } 
> 
>     private boolean __hashCodeCalc = false; 
>     public synchronized int hashCode() { 
>         if (__hashCodeCalc) { 
>             return 0; 
>         } 
>         __hashCodeCalc = true; 
>         int _hashCode = 1; 
>         if (getName() != null) { 
>             _hashCode += getName().hashCode(); 
>         } 
>         if (getValue() != null) { 
>             _hashCode += getValue().hashCode(); 
>         } 
>         __hashCodeCalc = false; 
>         return _hashCode; 
>     } 
> 
>     // Type metadata 
>     private static org.apache.axis.description.TypeDesc typeDesc = 
>         new org.apache.axis.description.TypeDesc(Option.class, true); 
> 
>     static { 
>         typeDesc.setXmlType(new
> javax.xml.namespace.QName("http://www.outsideinsdk.com/transformation_server/transform/1/0/";,
> "Option"));
> 
>         org.apache.axis.description.ElementDesc elemField = new
> org.apache.axis.description.ElementDesc(); 
>         elemField.setFieldName("name"); 
>         elemField.setXmlName(new javax.xml.namespace.QName("", "name")); 
>         elemField.setXmlType(new
> javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "string")); 
>         elemField.setMinOccurs(0); 
>         typeDesc.addFieldDesc(elemField); 
>         elemField = new org.apache.axis.description.ElementDesc(); 
>         elemField.setFieldName("value"); 
>         elemField.setXmlName(new javax.xml.namespace.QName("", "value")); 
>         elemField.setXmlType(new
> javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "anyType")); 
>         elemField.setMinOccurs(0); 
>         typeDesc.addFieldDesc(elemField); 
>     } 
> 
>     /** 
>      * Return type metadata object 
>      */ 
>     public static org.apache.axis.description.TypeDesc getTypeDesc() { 
>         return typeDesc; 
>     } 
> 
>     /** 
>      * Get Custom Serializer 
>      */ 
>     public static org.apache.axis.encoding.Serializer getSerializer( 
>            java.lang.String mechType, 
>            java.lang.Class _javaType,  
>            javax.xml.namespace.QName _xmlType) { 
>         return 
>           new  org.apache.axis.encoding.ser.BeanSerializer( 
>             _javaType, _xmlType, typeDesc); 
>     } 
> 
>     /** 
>      * Get Custom Deserializer 
>      */ 
>     public static org.apache.axis.encoding.Deserializer getDeserializer( 
>            java.lang.String mechType, 
>            java.lang.Class _javaType,  
>            javax.xml.namespace.QName _xmlType) { 
>         return 
>           new  org.apache.axis.encoding.ser.BeanDeserializer( 
>             _javaType, _xmlType, typeDesc); 
>     } 
> 
> 
> } 
> 
>  -----Original Message----- 
> From:   Michael Ryan [mailto:[EMAIL PROTECTED] 
> Sent:   Monday, January 17, 2005 11:05 AM 
> To:     [EMAIL PROTECTED] 
> Subject:        How to set the marshalled type for anyType? 
> 
> Hello- 
> 
> I have a service that has a parameter that is defined as anyType.  When this
> parameter is passed a java Boolean, it is serialized as a "soapenc:boolean".
>  In order to interoperate with another SOAP impl, I would like to have this
> serialized as an "xsd:boolean".  How do I configure Axis to do this?
> 
> Thanks, 
> Mike Ryan 


-- 
-- Jaya

Reply via email to