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

概要

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

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

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

カスタマイズの追加

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

例38.13「SimpleTypes の Java クラスの生成を強制するインラインカスタマイズ」 は、コードジェネレーターに名前付きの単純型の Java クラスを生成させるインラインカスタマイズを示しています。

例38.13 SimpleTypes の 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 プロパティー getter と setter があります。

例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;
    }

}