[jboss-user] [JBossWS] - enumerations in jboss ws...

mwiles do-not-reply at jboss.com
Mon Jan 29 12:47:56 EST 2007


I have an xsd which has an enumeration type:

	<xsd:simpleType name="IncomeTypeEnum">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="pension" id="pension"/>
			<xsd:enumeration value="salary" />
		</xsd:restriction>
	</xsd:simpleType>

The mapping snippet for that enum looks like this:

    <java-xml-type-mapping>
        <java-type>za.co.sanlam.employeebenefits.IncomeTypeEnum</java-type>
        <root-type-qname xmlns:rtq="http://sanlam.co.za/employeebenefits/dto/1">rtq:IncomeTypeEnum</root-type-qname>
        <qname-scope>simpleType</qname-scope>
        <variable-mapping>
            <java-variable-name>pension</java-variable-name>
            <xml-element-name>pension</xml-element-name>
        </variable-mapping>
        <variable-mapping>
            <java-variable-name>salary</java-variable-name>
            <xml-element-name>salary</xml-element-name>
        </variable-mapping>
    </java-xml-type-mapping>

But when I deploy the web service I get the following error: 

19:10:45,359 ERROR [MainDeployer] Could not start deployment: file:/C:/usr/jboss-4.0.5.GA/server/default/tmp/deploy/tmp50100EAR.ear-contents/EJB.jar
org.jboss.ws.WSException: Attribute pension found in jaxrpc-mapping but not in the schema: {http://sanlam.co.za/employeebenefits/dto/1}IncomeTypeEnum
	at org.jboss.ws.jaxb.SchemaBindingBuilder.processXmlAttributeName(SchemaBindingBuilder.java:260)
	at org.jboss.ws.jaxb.SchemaBindingBuilder.processNonArrayType(SchemaBindingBuilder.java:207)
	at org.jboss.ws.jaxb.SchemaBindingBuilder.processJavaXmlTypeMapping(SchemaBindingBuilder.java:147)
	at org.jboss.ws.jaxb.SchemaBindingBuilder.bindSchemaToJava(SchemaBindingBuilder.java:119)
	at org.jboss.ws.jaxb.SchemaBindingBuilder.buildSchemaBinding(SchemaBindingBuilder.java:99)
	at org.jboss.ws.metadata.ServiceMetaData.getSchemaBinding(ServiceMetaData.java:332)
	at org.jboss.ws.metadata.ServiceMetaData.eagerInitialize(ServiceMetaData.java:400)
	at org.jboss.ws.metadata.UnifiedMetaData.eagerInitialize(UnifiedMetaData.java:147)
	at org.jboss.ws.server.ServiceEndpoint.start(ServiceEndpoint.java:106)
	at org.jboss.ws.server.ServiceEndpointManager.startServiceEndpoint(ServiceEndpointManager.java:529)
	at org.jboss.ws.deployment.ServiceEndpointDeployer.start(ServiceEndpointDeployer.java:144)
	at org.jboss.ws.integration.jboss.DeployerInterceptor.start(DeployerInterceptor.java:104)
	at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
	at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)

Has anyone done enumerations with jboss and could shed some light on what is going on? I 

The java code for the enumration is as follows...

It does not seem as this is the problem as if I remove the java class, the error persists.

public class IncomeTypeEnum  {
    private java.lang.String _value_;
    private static java.util.HashMap _table_ = new java.util.HashMap();

    // Constructor
    protected IncomeTypeEnum(java.lang.String value) {
        _value_ = value;
        _table_.put(_value_,this);
    };

    public static final java.lang.String _pension = "pension";
    public static final java.lang.String _salary = "salary";
    public static final IncomeTypeEnum pension = new IncomeTypeEnum(_pension);
    public static final IncomeTypeEnum salary = new IncomeTypeEnum(_salary);
    public java.lang.String getValue() { return _value_;}
    public static IncomeTypeEnum fromValue(java.lang.String value)
          throws java.lang.IllegalArgumentException {
        IncomeTypeEnum enum = (IncomeTypeEnum)
            _table_.get(value);
        if (enum==null) throw new java.lang.IllegalArgumentException();
        return enum;
    }
    public static IncomeTypeEnum fromString(java.lang.String value)
          throws java.lang.IllegalArgumentException {
        return fromValue(value);
    }
    public boolean equals(java.lang.Object obj) {return (obj == this);}
    public int hashCode() { return toString().hashCode();}
    public java.lang.String toString() { return _value_;}

}

I've tried everything to find the answer to my problem but just can't get anything. Hopefully it's quite a simple solution.

Michael Wiles
Java Developer


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4007917#4007917

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4007917



More information about the jboss-user mailing list