wsimport使用额外的下划线错误地生成枚举类型

时间:2012-10-04 16:33:59

标签: java jax-ws wsimport

我正在使用wsimport从WSDL文件(也是生成的)生成我的JAX-WS客户端,并且遇到问题,它在客户端生成与服务器端不匹配的枚举。

我的WSDL文件中的适用代码段显示了正确的条目:

<xs:simpleType name="type">
  <xs:restriction base="xs:string">
    <xs:enumeration value="BLAH_99X"/>
    <xs:enumeration value="BLAH_123"/>
    <xs:enumeration value="BLAH_ABC"/>
  </xs:restriction>
</xs:simpleType>

为客户生成的枚举的适用部分是:

@XmlType(name = "type")
@XmlEnum
public enum Type {
    @XmlEnumValue("BLAH_99X")
    BLAH_99_X("BLAH_99X"),
    BLAH_123("BLAH_123"),
    BLAH_ABC("BLAH_ABC");
}

我原本期望为客户端生成的枚举项与服务器端(以及WSDL中)的枚举项匹配。但是,当您查看它时,除了生成BLAH_99_X的第一个项目之外,它们都会正确生成它们,然后映射到正确的值。

是否有任何真正的原因必须按照它的方式生成该项目?有没有其他人遇到这个以及如何让它正确生成?

更新

我在预感中为我的枚举添加了一个疯狂的值(T1A32BCS12),并在客户端代码中生成T_1_A_32_BCS_12("T1A32BCS12")作为我的枚举项。所以,似乎任何时候你有一个字母和一个并排的数字wsimport在它们之间插入一个下划线。这是wsimport中的错误吗?似乎没有合理的理由会发生这种情况。

1 个答案:

答案 0 :(得分:3)

为了保持清洁并且没有毫无意义的开放性问题...这显然是JAX-WS RI 2.2.7中的一个错误。据我所知,没有解决方法。