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 はルート作成時に例外を出力します。生成されたビルダーを使用して、既存のドメインクラスのデータを変換します。