266.6. Java クラスの生成

Protobuf SDK は、.proto ファイルで定義した形式の Java クラスを生成するコンパイラーを提供します。お使いのオペレーティングシステムが Protobuf Java コードジェネレーター maven プラグイン をサポートしている場合、pom.xml に次の設定を追加することで、protobuf Java コードの生成を自動化できます。

プロジェクト pom.xml の <build> タグ内にオペレーティングシステムと CPU アーキテクチャー検出拡張機能を挿入するか、手動で ${os.detected.classifier} パラメーターを設定します。

<extensions>
  <extension>
    <groupId>kr.motd.maven</groupId>
    <artifactId>os-maven-plugin</artifactId>
    <version>1.4.1.Final</version>
  </extension>
</extensions>

プロジェクト pom.xml の gRPC および protobuf Java コードジェネレータープラグイン <plugins> タグを挿入します。

<plugin>
  <groupId>org.xolstice.maven.plugins</groupId>
  <artifactId>protobuf-maven-plugin</artifactId>
  <version>0.5.0</version>
  <extensions>true</extensions>
  <executions>
    <execution>
      <goals>
        <goal>test-compile</goal>
        <goal>compile</goal>
      </goals>
      <configuration>
        <protocArtifact>com.google.protobuf:protoc:${protobuf-version}:exe:${os.detected.classifier}</protocArtifact>
      </configuration>
    </execution>
  </executions>
</plugin>

手動で必要な追加のサポート対象言語に対してコンパイラーを実行することもできます。

protoc --java_out=. ./proto/addressbook.proto

これにより、Person と AddressBook の内部クラスを含む AddressBookProtos という名前の単一の Java クラスが生成されます。ビルダーも実装されています。生成されたクラスは、シリアル化メカニズムに必要な com.google.protobuf.Message を実装します。このため、これらのクラスのみがエクスチェンジのボディーで使用されることが重要です。com.google.protobuf.Message を実装しないクラスを使用するようにデータ形式に指示しようとすると、Camel はルート作成時に例外を出力します。生成されたビルダーを使用して、既存のドメインクラスのデータを変換します。