Yeah, you are missing something..

If  WSDL2Java (or ?WSDL) cannot convert a java class into a wsdl type, then
a message is issued and an anyType is used instead in the wsdl document
(need to use something).  This support has been there for a long time and
was accidentally changed by my 12347 change today.
The WSDL2Java processing now works the same as it did before.

Any change to this behavior should be addressed post 1.0.

Rich Scheuerle
IBM WebSphere & Axis Web Services Development
512-838-5115  (IBM TL 678-5115)


                                                                                       
                                      
                      Glen Daniels                                                     
                                      
                      <gdaniels@macrome        To:       "'[EMAIL PROTECTED]'" 
<[EMAIL PROTECTED]>               
                      dia.com>                 cc:                                     
                                      
                                               Subject:  RE: anyType support fixed     
                                      
                      09/26/2002 05:09                                                 
                                      
                      PM                                                               
                                      
                      Please respond to                                                
                                      
                      axis-dev                                                         
                                      
                                                                                       
                                      
                                                                                       
                                      




WHOA!

Why do we WANT anyType appearing anywhere for this?  IMO, we don't.

If you have myop(Object obj), THAT should generate anyType, because we have
a mapping for Object<->anyType in the registry.  Then at runtime, we're
free to do something like:

   if (obj instanceof SomeClassIHaveAMappingFor)...

Just saying that any class we don't have a mapping for generates anyTypes
if it appears in signatures will cause all kinds of headaches.  They should
fail if there is no explicit mapping for the class in question, since as
you say there's no way we could expect to serialize/deserialize them!!

If I'm understanding what you're proposing here, I'm -1 to it.  (am I
missing something?)

--Glen

> -----Original Message-----
> From: Tom Jordahl [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, September 26, 2002 5:59 PM
> To: '[EMAIL PROTECTED]'
> Subject: RE: anyType support fixed
>
>
>
> Thanks Rich!
> Verified that anyType comes out in the right places for this service:
>
> public class MyService {
>     public String myop(MyStruct in, java.util.Locale locin) {
>         return "out";
>     }
> }
> public class MyStruct {
>     public java.util.Locale loc;
>     public String name;
> }
>
>
> I don't know how to make a test for this, which isn't so
> important since this service will never work.
>
> Anyone have any thoughts on how we might get a service like this work?
> --
> Tom Jordahl
> Macromedia Server Development
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, September 26, 2002 5:52 PM
> To: [EMAIL PROTECTED]
> Subject: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/fromJava
> Emitter.java Types.java
>
>
> scheu       2002/09/26 14:52:13
>
>   Modified:    java/src/org/apache/axis/wsdl/fromJava Emitter.java
>                         Types.java
>   Log:
>   More changes per review of code by Tom and I.  this is all related
>   to the 12347 bug fix.
>
>   Revision  Changes    Path
>   1.65      +1 -1
> xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
>
>   Index: Emitter.java
>   ===================================================================
>   RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emit
> ter.java,v
>   retrieving revision 1.64
>   retrieving revision 1.65
>   diff -u -r1.64 -r1.65
>   --- Emitter.java           26 Sep 2002 21:13:25 -0000          1.64
>   +++ Emitter.java           26 Sep 2002 21:52:12 -0000          1.65
>   @@ -1088,7 +1088,7 @@
>                QName typeQName =
>                    types.writeTypeForPart(javaType,
>                                           param.getTypeQName());
>   -            types.writeElementForPart(javaType,
>   +            QName elemQName = types.writeElementForPart(javaType,
>                                          param.getTypeQName());
>                if (typeQName != null) {
>                    part.setName(param.getName());
>
>
>
>   1.63      +13 -7
> xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
>
>   Index: Types.java
>   ===================================================================
>   RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
>   retrieving revision 1.62
>   retrieving revision 1.63
>   diff -u -r1.62 -r1.63
>   --- Types.java             26 Sep 2002 21:13:25 -0000          1.62
>   +++ Types.java             26 Sep 2002 21:52:13 -0000          1.63
>   @@ -231,7 +231,9 @@
>         * @param type <code>Class</code> to generate the XML
> Schema info for
>         * @param qname <code>QName</code> of the type.  If
> null, qname is
>         *             defaulted from the class.
>   -     * @return the QName of the generated Schema type, null if void
>   +     * @return the QName of the generated Schema type,
> null if void,
>   +     *         if the Class type cannot be converted to a
> schema type
>   +     *         then xsd:anytype is returned.
>         */
>        public QName writeTypeForPart(Class type, QName qname)
> throws AxisFault {
>            //patch by costin to fix an NPE; commented out
> till we find out what the problem is
>   @@ -265,8 +267,10 @@
>                writeWsdlTypesElement();
>            }
>
>   -        // write the type
>   -        writeType(type, qname);
>   +        // Write the type, if problems occur use ANYTYPE
>   +        if (writeType(type, qname) == null) {
>   +            qname = Constants.XSD_ANYTYPE;
>   +        }
>            return qname;
>        }
>
>   @@ -318,8 +322,10 @@
>                writeWsdlTypesElement();
>            }
>
>   -        // Write Element
>   -        writeTypeAsElement(type, qname);
>   +        // Write Element, if problems occur return null.
>   +        if (writeTypeAsElement(type, qname) == null) {
>   +            qname = null;
>   +        }
>            return qname;
>        }
>
>   @@ -380,7 +386,7 @@
>        /**
>         * Create a schema element for the given type
>         * @param type the class type
>   -     * @return the QName of the generated Element or null
> if no element written
>   +     * @return the QName of the generated Element or problems occur
>         */
>        private QName writeTypeAsElement(Class type, QName
> qName) throws AxisFault {
>            if (qName == null ||
>   @@ -598,7 +604,7 @@
>         *
>         * @param type Class for which to generate schema
>         * @param qName of the type to write
>   -     * @return a prefixed string for the schema type
>   +     * @return a prefixed string for the schema type or
> null if problems occur
>         */
>        public String writeType(Class type, QName qName)
> throws AxisFault {
>            // Get a corresponding QName if one is not provided
>
>
>
>




Reply via email to