Re: WSIF bug reporting.
Shantanu Sen <ssen-yBeKhBN/[email protected]> Fri, 23 Sep 2005 16:42:14 -0700 (PDT)
| Newsgroups | gmane.comp.apache.webservices.wsif.user |
|---|---|
| Message-ID | <[email protected]> |
Sorry, I sent out the previou mail without finishing it...here is the complete one.. --- Shantanu Sen <ssen-yBeKhBN/[email protected]> wrote: > Please see below for my response > > --- Aleksander Slominski <[email protected]> > wrote: > > > Shantanu Sen wrote: > > > > >What is the version of the wsdl4j.jar that is > > present > > >in the current CVS repo of WSIF? It says > > >wsdl4j-20030807.jar > > > > > >I tried to run with the wsdl4j-1.5.1 - but it > fails > > at > > >runtime although the WSIF build is fine. > > > > > >The error is that when parsing a WSDL with the > > 1.5.1 > > >version the > > >Definition.getTypes().getExtensibilityElements() > > >returns a list of objects of type > > >com.ibm.wsdl.extensions.schema.SchemaImpl. > > > > > >But when I invoke the > > >org.apache.wsif.schema.Parser.getAllSchemaTypes, > it > > >invokes the Parser.getTypesSchemas method, which > > >expects the list of extensibility elements > returned > > by > > >the above call to be of type > > >UnknownExtensibilityElement. > > > > > >Hence a ClassCastException is thrown. > > > > > >So, is there any plan to upgrade to the latest > > wsdl4j? > > >Does the latest wsdl4j give us any added benefit? > > > > > >I am curious - is the latest version correct in > > using > > >SchemaImpl as the type of the extensibility > > elements > > >rather than the UnknownExtensibilityElement? > > > > > > > > hi, > > > > i have added a check to Parser.getTypesSchemas to > > skip non > > UnknownExtensibilityElement and i have also > upgraded > > the WSIF in CVS to > > use the 1.5.1 WSDL4J and i have updated AXIS to > > 1.2.1 - that should help > > to avoid jar linking problems. > > > > please try the version from CVS or nightly build > (in > > few hours) and send > > email if you find other problems. > > > > thanks, > > > > alek > > Alek, > > This will not work. The def.getTypes() returns the > types section of the document and that has typically > one child element - the schema. The code that you > added is skipping over that element since it is no > longer an UnknownExtensibilityElement, but a > com.ibm.wsdl.extensions.schema.SchemaImpl which is > an > ExtensibilityElement. > > Here is the part of the code that you added > =============================== > Types types = def.getTypes(); > if (types != null) { > Iterator extEleIt = > types.getExtensibilityElements().iterator(); > while (extEleIt.hasNext()) { > Object nextEl = extEleIt.next(); > > >>>--- added by you in the current CVS tree > if(!(nextEl instanceof > UnknownExtensibilityElement)) { > continue; > } > >>>------------------- > UnknownExtensibilityElement typesElement = > (UnknownExtensibilityElement) nextEl; > > Element schemaEl = typesElement.getElement(); > .... > ============= > > I think it should test for an ExtensibilityElement > rather than UnkownExtensibilityElement since both > SchemaImpl and UnknownExtensibilityElement are a > type > of ExtensibilityElement. > > I thought that we could check for > ExtensibilityElement, but unfortunately it does not > have a getElement API. > > The other option is to check if the element (the > object nextEl above) is of type > javax.wsdl.extensions.schema.Schema and cast it to > that: > ------------ > Element schemaEl = null; > if(nextEl instanceof > javax.wsdl.extensions.schema.Schema) { > javax.wsdl.extensions.schema.Schema typesElement = > (javax.wsdl.extensions.schema.Schema)nextEl; > schemaEl = typesElement.getElement(); > } else if (nextEl instanceof > UnknownExtensibilityElement)) { > UnknownExtensibilityElement typesElement = > (UnknownExtensibilityElement) nextEl; > schemaEl = typesElement.getElement(); > } else { continue; } ------------ The issue is that once you add javax.wsdl.extensions.schema.Schema reference in the code, you can no longer build with the previous version of wsdl4j since I think this type was added later in WSDL4J. Please let me know what you think. Shantanu Sen