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