from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
Camel ルートは inbox ディレクトリーの up ファイルを選択し、CSV レコードをモデルオブジェクトのコレクションにアンマーシャリングし、コレクション
を handleOrders
によって参照されるルートに送信します。
List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();
int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
for (String className : model.keySet()) {
Object obj = model.get(className);
LOG.info("Count : " + modelCount + ", " + obj.toString());
}
modelCount++;
}
LOG.info("Total CSV records received by the csv bean : " + modelCount);
List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();
int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
for (String className : model.keySet()) {
Object obj = model.get(className);
LOG.info("Count : " + modelCount + ", " + obj.toString());
}
modelCount++;
}
LOG.info("Total CSV records received by the csv bean : " + modelCount);
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
ルートでの処理のためにこのマップから単一の Order オブジェクトを抽出する場合、以下のように Splitter と Processor の組み合わせを使用できます。
from("file://inbox")
.unmarshal(bindy)
.split(body())
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
in.setBody(modelMap.get(Order.class.getCanonicalName()));
}
})
.to("direct:handleSingleOrder")
.end();
from("file://inbox")
.unmarshal(bindy)
.split(body())
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
in.setBody(modelMap.get(Order.class.getCanonicalName()));
}
})
.to("direct:handleSingleOrder")
.end();
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
Bindy が CHARSET_NAME プロパティーまたは CHARSET_NAME ヘッダーをエクスチェンジインターフェイスで定義として使用して、アンマーシャリングのために受信した入力ストリームの文字セット変換を行うため、これに対応する必要があります。一部のプロデューサー(例:file-endpoint)では、文字セットを定義できます。文字セット変換は、このプロデューサーによってすでに実行されています。アンマーシャリングに送信する前に、このプロパティーまたはヘッダーをエクスチェンジから削除しないといけない場合があります。削除しない場合には、変換が 2 回実行され、不要な結果が生じる可能性があります。
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow