You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Kevin D <ke...@mindspring.com> on 2002/04/18 01:32:36 UTC
Axis beta 1 interop with .Net [Flags] (WSDL2Java)
I created a doc/literal web service using .Net which uses an [Flags] style
enumeration, which is basically an enum which consists of flags that can be
bitwise-OR'd together. In C# you declare this as:
[Flags]
public enum MyFlags
{
Flag1 = 1,
Flag2 = 2,
Flag3 = 4
}
The generated WSDL for this type looks like this:
<s:simpleType name="MyFlags">
<s:list>
<s:simpleType>
<s:restriction base="s:string">
<s:enumeration value="Flag1" />
<s:enumeration value="Flag2" />
<s:enumeration value="Flag3" />
</s:restriction>
</s:simpleType>
</s:list>
</s:simpleType>
When I try running WSDL2Java on the web service, it barfs. The exception is:
java.io.IOException: http://tempuri.org/:MyFlags already exists at
org.apache.axis.wsdl.toJava.SymbolTable.symbolTablePut(Unknown Source)
at
org.apache.axis.wsdl.toJava.SymbolTable.createTypeFromDef(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.addTypes(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.populateTypes(Unknown
Source)
at org.apache.axis.wsdl.toJava.SymbolTable.populate(Unknown Source)
at org.apache.axis.wsdl.toJava.SymbolTable.add(Unknown Source)
at org.apache.axis.wsdl.toJava.Emitter.emit(Unknown Source)
at org.apache.axis.wsdl.toJava.Emitter.emit(Unknown Source)
at org.apache.axis.wsdl.WSDL2Java$WSDLRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:484)
(sorry if that word-wraps poorly).
If I use a regular enumeration, it all works fine. The WSDL looks like this:
<s:simpleType name="MyEnum">
<s:restriction base="s:string">
<s:enumeration value="Flag1" />
<s:enumeration value="Flag2" />
<s:enumeration value="Flag3" />
</s:restriction>
</s:simpleType>
Note the absence of the <list> element.
Anybody know why this doesn't work? It should work, shouldn't it?
Kevin