wstools not generating Java for enum pattern
vlewis May 15, 2006 1:51 PMI am using jbossws-1.0.0 in JBoss 4.0.2 CR2 with JDK 1.5.0_6.
I have a web service that uses a value type implementing the enum pattern:
public class MembershipStatus { public static final String _current = "current"; public static final String _expired = "expired"; public static final String _unknown = "unknown"; public static final MembershipStatus CURRENT = new MembershipStatus(_current); public static final MembershipStatus EXPIRED = new MembershipStatus(_expired); public static final MembershipStatus UNKNOWN = new MembershipStatus(_unknown); private static Map<String, MembershipStatus> statuses; static { statuses = new HashMap<String, MembershipStatus>(); statuses.put(_current, CURRENT); statuses.put(_expired, EXPIRED); statuses.put(_unknown, UNKNOWN); } public static MembershipStatus fromValue(String candiateValue) { MembershipStatus result = statuses.get(candiateValue); if (result == null) { throw new IllegalArgumentException(candiateValue); } return result; } private String value; protected MembershipStatus(String newValue) { value = newValue; } public String getValue() { return value; } }
jbossws recognizes this pattern enough to generate the correct WSDL:
. . . <simpleType name='MembershipStatus'> <restriction base='string'> <enumeration value='current'/> <enumeration value='expired'/> <enumeration value='unknown'/> </restriction> </simpleType> . . .
but when I run wstools using this wstools-confg.xml
<configuration xmlns="http://www.jboss.org/jbossws-tools" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd"> <wsdl-java file="Generated-src/META-INF/wsdl/FBCMembershipVerification.wsdl"> <mapping file="META-INF/jaxrpc-mapping.xml" /> </wsdl-java> </configuration>
It generates Java code for everything except the MembershipStatus type. It also generates other classes which the type as though it is expected to have been generated.
I tried supplying my own implementation of MembershipStatus but a call which returns the type fails because it cannot obtain deserializer factory for MembershipStatus.
Am I doing something wrong or is this a missing feature?
I know that generating for JDK5 enums is not yet supported from reading bug JBWS-446 but reading JBWS-231 lead me to believe this problem had been fixed.