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/08/06 00:36:58 UTC

Re: WSIF bug reporting.

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?

Thanks for any info,
Shantanu Sen

Re: WSIF bug reporting.

Posted by Shantanu Sen <ss...@pacbell.net>.
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 {

    
....
                   
                }



format:typeMap generation by the various binding generators

Posted by Shantanu Sen <ss...@pacbell.net>.
The EJB and Java Binding generators that are a part of
the wsif.tools package do not have any APIs to add
complex types in the format:typeMap. For example if I
run the generator to generate the AddressBook example
with java binding, I need to get something similar to
the what is shown below:

-----------
<wsdl:binding name="AddressBookPortBindingEjb"
type="impl:IAddressBook">
<ejb:binding/>
....
<format:typeMap formatType="mypackage.Address"
typeName="{http://mypackage}:Address"/>
----------
But the EJBBindingGenerator only adds (it is hardcoded
in the createFormatTypeMapping method) the
java.lang.String as the format:typeMap. 

Does this mean that there is no support for this, or
am I missing something?

Thanks,
Shantanu Sen

Re: WSIF bug reporting.

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
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

-- 
The best way to predict the future is to invent it - Alan Kay