第121章 Olingo2
Olingo2 コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.14 から利用可能
Olingo2 コンポーネントは Apache Olingo バージョン 2.0 API を使用して OData 2.0 準拠のサービスと対話します。数多くの一般的な商用およびエンタープライズベンダーおよび製品が OData プロトコルをサポートします。サポートする製品のサンプルリストは、OData の Web サイト を参照してください。
Olingo2 コンポーネントは、カスタムおよび OData システムクエリーパラメーターを使用したフィード、デルタフィード、エンティティー、単純および複雑なプロパティー、リンク、カウントをサポートします。エンティティー、プロパティー、および関連リンクの更新をサポートします。また、単一の OData バッチ操作としてクエリーおよび変更リクエストの送信もサポートします。
コンポーネントは、OData サービスコネクションの HTTP 接続パラメーターおよびヘッダーの設定をサポートします。これにより、ターゲット OData サービスによって必要に応じて SSL、OAuth2.0 などを使用できます。
TLS (Transport Layer Security)を使用するように
camel-olingo2 コンポーネントを設定するには、Security Guide の Configuring Transport Security for Camel Components の章を参照してください。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-olingo2</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-olingo2</artifactId>
<version>${camel-version}</version>
</dependency>
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
olingo2://endpoint/<resource-path>?[options]
olingo2://endpoint/<resource-path>?[options]
Olingo2Component リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Olingo2 コンポーネントは、以下のオプションで設定できます。これらのオプションは、
org.apache.camel.component.olingo2.Olingo2Configuration タイプのコンポーネントの Bean プロパティー configuration を使用して提供できます。
|
オプション
|
タイプ
|
説明
|
|
serviceUri
|
文字列
|
ターゲット OData サービスベース URI (例: http://services.odata.org/OData/OData.svc)
|
|
contentType
|
文字列
|
Content-Type ヘッダーの値を使用して JSON または XML メッセージ形式を指定できます。デフォルトは application/json;charset=utf-8です。
|
|
connectTimeout
|
int
|
HTTP 接続作成のタイムアウト(ミリ秒単位)。デフォルトは 30,000 (30 秒)です。
|
|
socketTimeout
|
int
|
HTTP 要求のタイムアウト(ミリ秒単位)。デフォルトは 30,000 (30 秒)です。
|
|
httpHeaders
|
java.util.Map<String, String>
|
すべてのリクエストに挿入するカスタム HTTP ヘッダー。これには OAuth トークンが含まれる場合があります。
|
|
proxy
|
org.apache.http.HttpHost
|
HTTP プロキシーサーバーの設定
|
|
sslContext
|
javax.net.ssl.SSLContext
|
HTTP SSL 設定
|
|
httpAsyncClientBuilder
|
org.apache.http.impl.nio.client.HttpAsyncClientBuilder
|
より複雑な HTTP クライアント設定のカスタム HTTP 非同期クライアントビルダーは、connectionTimeout、socketTimeout、proxy、および sslContext を上書きします。socketTimeout はビルダーで指定する 必要 があります。指定しないと、OData リクエストが永久にブロックされる可能性があることに注意してください。
|
プロデューサーエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロデューサーエンドポイントは、次に一覧表示されるエンドポイント名とオプションを使用できます。プロデューサーエンドポイントは、Camel Exchange In メッセージに含まれる値を持つ endpoint オプションの名前が含まれる必要がある特別なオプション
inBody を使用することもできます。inBody オプションのデフォルトは、このオプションを取るエンドポイントの data に設定されます。
エンドポイントオプションは、エンドポイント URI またはメッセージヘッダーで動的に指定できます。メッセージヘッダー名は
CamelOlingo2.<option> の形式で指定する必要があります。inBody オプションはメッセージヘッダーを上書きすることに注意してください。つまり、エンドポイントオプション inBody=option は CamelOlingo2.option ヘッダーを上書きすることに注意してください。さらに、クエリーパラメーターを指定することもできます。
resourcePath オプションは、URI パスの一部として URI に指定されるか、エンドポイントオプション ?resourcePath=<resource-path> として指定するか、ヘッダー値 CamelOlingo2.resourcePath として指定できることに注意してください。OData エンティティーキー述語はリソースパスの一部にすることができます(例: Manufacturer s ('1')、'1 ' はキー述語です。または、リソースパス Manufacturers および keyPredicate オプション '1' で個別に指定できます。
|
エンドポイント
|
オプション
|
HTTP メソッド
|
結果ボディーのタイプ
|
|
batch
|
data
|
POST with multipart/mixed batch request
|
java.util.List<org.apache.camel.component.olingo2.api.batch.Olingo2BatchResponse>
|
|
create
|
data、resourcePath
|
POST
|
org.apache.olingo.odata2.api.ep.entry.ODataEntry for new entries org.apache.olingo.odata2.api.commons.HttpStatusCodes for other OData resources
|
|
delete
|
resourcePath
|
DELETE
|
org.apache.olingo.odata2.api.commons.HttpStatusCodes
|
|
merge
|
data、resourcePath
|
MERGE
|
org.apache.olingo.odata2.api.commons.HttpStatusCodes
|
|
patch
|
data、resourcePath
|
PATCH
|
org.apache.olingo.odata2.api.commons.HttpStatusCodes
|
|
read
|
queryParams, resourcePath
|
GET
|
Depends on OData resource being queried as described next
|
|
update
|
data、resourcePath
|
PUT
|
org.apache.olingo.odata2.api.commons.HttpStatusCodes
|
OData リソースタイプマッピング リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
データオプションの 読み取り エンドポイントおよびデータタイプの結果は、クエリー、作成、または変更を行う OData リソースによって異なります。
|
OData リソースタイプ
|
resourcePath および keyPredicate からのリソース URI
|
in または Out Body タイプ
|
|
エンティティーデータモデル
|
$metadata
|
org.apache.olingo.odata2.api.edm.Edm
|
|
サービスドキュメント
|
/
|
org.apache.olingo.odata2.api.servicedocument.ServiceDocument
|
|
OData フィード
|
<entity-set>
|
org.apache.olingo.odata2.api.ep.feed.ODataFeed
|
|
OData エントリー
|
<entity-set>(<key-predicate>)
|
org.apache.olingo.odata2.api.ep.entry.ODataEntry Out body (応答)の場合、java.util.Map<String, Object> は In body (要求)です。
|
|
単純なプロパティー
|
<entity-set>(<key-predicate>)/<simple-property>
|
Appropriate Java data type as described by <link xlink:href="http://olingo.apache.org/javadoc/odata2/index.html?org/apache/olingo/odata2/api/edm/class-use/EdmProperty.html" >Olingo EdmProperty</link>
|
|
単純なプロパティー値
|
<entity-set>(<key-predicate>)/<simple-property>/$value
|
Appropriate Java data type as described by <link xlink:href="http://olingo.apache.org/javadoc/odata2/index.html?org/apache/olingo/odata2/api/edm/class-use/EdmProperty.html" >Olingo EdmProperty</link>
|
|
複雑なプロパティー
|
<entity-set>(<key-predicate>)/<complex-property>
|
java.util.Map<String, Object>
|
|
ゼロまたは 1 つの関連付けリンク
|
<entity-set>(<key-predicate>/$link/<one-to-one-entity-set-property>
|
String for response java.util.Map<String, Object> with key property names and values for request
|
|
リンクの 0 個または多数
|
<entity-set>(<key-predicate>/$link/<one-to-many-entity-set-property>
|
java.util.List<String> for response java.util.List<java.util.Map<String, Object>> containing list of key property names and values for request
|
|
Count
|
<resource-uri>/$count
|
java.lang.Long
|
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンドポイント URI またはメッセージヘッダーのいずれかで queryParams に値が指定されていない場合、これは
null であると想定されます。null 値は、他のオプションが一致するエンドポイントを満たさない場合にのみ使用されることに注意してください。
|
名前
|
タイプ
|
説明
|
|
data
|
Object
|
OData リソースの作成または変更に使用される適切なタイプを持つデータ
|
|
keyPredicate
|
String
|
パラメーター化された OData リソースエンドポイントを作成するためのキー述語。キー述語の値がヘッダーに動的に提供される作成/更新操作に役立ちます。
|
|
queryParams
|
java.util.Map<String, String>
|
OData システムオプションおよびカスタムクエリーオプション。詳細は OData 2.0 URI Conventions を参照してください。
|
|
resourcePath
|
String
|
OData リソースパス(キー述語が含まれるか、または含まれない場合あり)
|
|
*
|
String
|
その他の URI オプションはクエリーパラメーターとして扱われ、クエリーパラメーターマップに追加され、queryParams オプションのエントリーを上書きします(これも指定されている場合)。
|
コンシューマーエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーエンドポイントとして使用できる read エンドポイントのみです。コンシューマーエンドポイントは、
consumer. 接頭辞が付い た Scheduled Poll Consumer オプション を使用して、エンドポイントの呼び出しをスケジュールできます。デフォルトでは、配列またはコレクションを返すコンシューマーエンドポイントは、要素ごとにエクスチェンジを 1 つ生成し、それらのルートはエクスチェンジごとに 1 回実行されます。この動作は、エンドポイントプロパティー consumer.splitResult=false を設定して無効にできます。
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
URI オプションは、
CamelOlingo2. 接頭辞が付いたプロデューサーエンドポイントのメッセージヘッダーで指定できます。
メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
すべての結果メッセージ本文は、Olingo2Component によって使用される基盤となる Apache Olingo 2.0 API によって提供されるオブジェクトを使用します。プロデューサーエンドポイントは、
inBody エンドポイント URI パラメーターに受信メッセージボディーのオプション名を指定できます。配列またはコレクションを返すエンドポイントでは、consumer.splitResult が false に設定されていない限り、コンシューマーエンドポイントはすべての要素を個別のメッセージにマップします。
ユースケース リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のルートは、Mufacturer フィードから上位 5 つのエントリーを昇順で読み取ります。
from("direct:...")
.setHeader("CamelOlingo2.$top","5")
.to("olingo2://read/Manufacturers?orderBy=Name%20asc");
from("direct:...")
.setHeader("CamelOlingo2.$top","5")
.to("olingo2://read/Manufacturers?orderBy=Name%20asc");
以下のルートは、受信 id ヘッダーの key プロパティーの値を使用して Manufacturer エントリーを読み取ります。
from("direct:...")
.setHeader("CamelOlingo2.keyPredicate", header("id"))
.to("olingo2://read/Manufacturers");
from("direct:...")
.setHeader("CamelOlingo2.keyPredicate", header("id"))
.to("olingo2://read/Manufacturers");
以下のルートは、ボディーメッセージの java.util.Map<String, Object> を使用して Manufacturer エントリーを作成します。
from("direct:...")
.to("olingo2://create/Manufacturers");
from("direct:...")
.to("olingo2://create/Manufacturers");
以下のルートは、30 秒ごとに Manufacturer デルタフィード をポーリングします。Bean blah は Bean paramsBean を更新し、ODataDeltaFeed の結果で返された値で更新された !deltatoken プロパティーを追加します。最初のデルタトークンが不明なため、コンシューマーエンドポイントは最初に ODataFeed 値を生成し、後続のポーリングで ODataDeltaFeed を生成します。
from("olingo2://read/Manufacturers?queryParams=#paramsBean&consumer.timeUnit=SECONDS&consumer.delay=30")
.to("bean:blah");
from("olingo2://read/Manufacturers?queryParams=#paramsBean&consumer.timeUnit=SECONDS&consumer.delay=30")
.to("bean:blah");