Re: WSIF bug reporting.
Aleksander Slominski <[email protected]> Fri, 23 Sep 2005 20:31:04 -0500
| Newsgroups | gmane.comp.apache.webservices.wsif.user |
|---|---|
| Message-ID | <[email protected]> |
Shantanu Sen wrote: >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. > > it starts to look really complicated - what do you think would eb the best solution that works for you assuming we do depend on the latest WSDL4J? thanks, alek -- The best way to predict the future is to invent it - Alan Kay