Re: WSIF bug reporting.
Aleksander Slominski <[email protected]> Wed, 12 Oct 2005 12:43:04 -0500
| Newsgroups | gmane.comp.apache.webservices.wsif.user |
|---|---|
| Message-ID | <[email protected]> |
Shantanu Sen wrote: >--- Aleksander Slominski <[email protected]> wrote: > > > >>Shantanu Sen wrote: >> >> >> >>>--- Aleksander Slominski <[email protected]> wrote: >>> >>> >>> >>> >>> >>>>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 >>>> >>>> >>>> >>>> >>>> >>>> >>>I think the code that I supplied should satsify all of us. >>> >>>===== >>>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; >>>} >>>============ >>> >>>Note the following about this code: >>> >>>1. It takes care of the possibility of a child element of types to be of type >>>UnknownExtensibilityElement >>>2. It takes care of the current scenario with WSDL4J1.5 - where the type is of >>>javax.wsdl.extensions.schema.Schema. >>>3. It ignores any other type - so if the WSDL contains other types in the types >>> >>> >>section >> >> >>>then there will not be any classcastexception. >>> >>>This satisfies all the cases that I can think of. If you think of anything that I am >>>missing please let me know. Else, I feel this should work. >>> >>>The only drawback is that we cannot compile against a previous version of WSDL4J. But >>> >>> >>I >> >> >>>think that should be acceptable - there is no requirement for it to be backward >>>compatible right? >>> >>> >>> >>> >>> >>Shantanu, >> >>i will try to apply this patch to SVN and see what happens. could you open JIRA issue >>for it? >> >>thanks, >> >>alek >> >> >> >> > >Did you get a chance to try this out? > > hi, i am busy but i plan to regenerate wsif website with new info (CVS => SVN etc) and go over list of issues in JIRA during weekend. thanks, alek -- The best way to predict the future is to invent it - Alan Kay