私はクラスがタイプセーフ列挙型を実装するために使用するいくつかの古いコード(前のJava 1.5)を持って、何かのように:カスタムクラスをJAX-WSパラメータとして使用する:型安全なenumのJAXBアダプタを作成するには?
public class MyTypeSafeEnum implements java.io.Serializable {
private final int value;
private MyTypeSafeEnum(int value) {
this.value = value
}
public static final MyTypeSafeEnum FIRST_VALUE = new MyTypeSafeEnum(0)
public static final MyTypeSafeEnum SECOND_VALUE = new MyTypeSafeEnum(1)
public static final MyTypeSafeEnum THIRD_VALUE = new MyTypeSafeEnum(2)
public static fromInt(int value) {
//Builds a MyTypeSafeEnum from the value, implementation omitted
return theMyTypeSafeEnum;
}
public int getValue() {
return this.value;
}
}
私はJAX-WSの操作でparemetersとしてこれらの列挙クラスを使用したいのですが、タイプの定義が空であるWSDLを生成:
<xs:complexType name="myTypeSafeEnum">
<xs:sequence/>
</xs:complexType>
私はXmlAdapterを使用する必要があります考え出したので、私は次のクラスを作成しました:
を210@XmlJavaTypeAdapter(MyTypeSafeEnumXmlAdapter.class)
アノテーションをクラスに追加しましたが、生成されたWSDLには何の効果もありませんでした。
これらのクラスをJAX-WS操作のパラメータとしてどのように使用できますか?現時点では、enum
タイプを使用するようにコードをリファクタリングすることは問題になりません。それは、このようなXMLを生成します
public class MyClass {
private MyTypeSafeEnum someVar;
@XmlJavaTypeAdapter(MyTypeSafeEnumXmlAdapter.class)
public MyTypeSafeEnum getSomeVar() {
return someVar;
}
}
:あなたはこのようなクラスを持っているのであれば、その後
public class MyTypeSafeEnumXmlAdapter extends XmlAdapter<Integer, MyTypeSafeEnum> {
@Override
public Integer marshal(MyTypeSafeEnum v) throws Exception {
return v.getValue();
}
@Override
public MyTypeSafeEnum unmarshal(Integer v) throws Exception {
return MyTypeSafeEnum.fromInt(v);
}
}
:
これは機能します。ありがとう! – iruediger