You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-user@ws.apache.org by Shantanu Sen <ss...@pacbell.net> on 2005/10/10 21:16:04 UTC

Re: WSIF bug reporting.


--- Aleksander Slominski <as...@cs.indiana.edu> wrote:

> Shantanu Sen wrote:
> 
> >--- Aleksander Slominski <as...@cs.indiana.edu> wrote:
> >
> >  
> >
> >>Shantanu Sen wrote:
> >>
> >>    
> >>
> >>>Sorry, I sent out the previou mail without finishing
> >>>it...here is the complete one..
> >>>
> >>>--- Shantanu Sen <ss...@pacbell.net> wrote:
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>Please see below for my response
> >>>>
> >>>>--- Aleksander Slominski <as...@cs.indiana.edu>
> >>>>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
> 
> 
Hi Alek,

Did you get a chance to try this out?

Thanks,
Shantanu

Re: WSIF bug reporting.

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
Shantanu Sen wrote:

>--- Aleksander Slominski <as...@cs.indiana.edu> wrote:
>
>  
>
>>Shantanu Sen wrote:
>>
>>    
>>
>>>--- Aleksander Slominski <as...@cs.indiana.edu> wrote:
>>>
>>> 
>>>
>>>      
>>>
>>>>Shantanu Sen wrote:
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>Sorry, I sent out the previou mail without finishing
>>>>>it...here is the complete one..
>>>>>
>>>>>--- Shantanu Sen <ss...@pacbell.net> wrote:
>>>>>
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>>>Please see below for my response
>>>>>>
>>>>>>--- Aleksander Slominski <as...@cs.indiana.edu>
>>>>>>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