Menu Close

38.3. 単純型の Java クラスの生成

概要

デフォルトでは、列挙でない限り、名前付き単純型が生成されることはありません。単純型を使用して定義された要素は、Java プリミティブ型のプロパティーにマッピングされます。

型置換を使用する場合など、単純型を Java クラスに生成する必要がある場合があります。

コードジェネレーターに対し、グローバルに定義したすべての単純型のクラスを生成するように指示するには、globalBindings カスタマイズ要素の mapSimpleTypeDeftrue に設定します。

カスタマイズの追加

名前付き単純型の Java クラスを作成するようにコードジェネレーターに指示するには、globalBinding 要素の mapSimpleTypeDef 属性を追加し、その値を true に設定します。

例38.13「単純型向けの Java クラスの生成を強制するためのインラインカスタマイズ」に、コードジェネレーターを名前付き単純型の Java クラスを生成するように強制するインラインのカスタマイズを示します。

例38.13 単純型向けの Java クラスの生成を強制するためのインラインカスタマイズ

<schema targetNamespace="http://widget.com/types/widgetTypes"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        jaxb:version="2.0">
  <annotation>
    <appinfo>
      <jaxb:globalBindings mapSimpleTypeDef="true" />
    </appinfo>
  </annotation>
  ...
</schema>

例38.14「定数の生成を強制するバインディングファイル」に、単純型の生成をカスタマイズする外部バインディングファイルを示します。

例38.14 定数の生成を強制するバインディングファイル

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               jaxb:version="2.0">
  <jaxb:bindings schemaLocation="types.xsd">
    <jaxb:globalBindings mapSimpleTypeDef="true" />
  <jaxb:bindings>
<jaxb:bindings>
重要

このカスタマイズは、グローバル スコープで定義される 名前付き 単純型にのみ影響します。

生成されるクラス

単純型用に生成されるクラスには、value という 1 つのプロパティーがあります。value プロパティーは、「プリミティブ型」のマッピングによって定義された Java 型です。生成されるクラスには、value プロパティーのゲッターとセッターがあります。

例38.16「単純型のカスタムマッピング」に、例38.15「カスタムマッピングの単純型」で定義される単純型に対して生成された Java クラスを示します。

例38.15 カスタムマッピングの単純型

<simpleType name="simpleton">
  <restriction base="xsd:string">
    <maxLength value="10"/>
  </restriction>
</simpleType>

例38.16 単純型のカスタムマッピング

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "simpleton", propOrder = {"value"})
public class Simpleton {

    @XmlValue
    protected String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}