Я использую Apache Camel 2.13.1 и MongoDB 2.2.2. У меня следующий маршрут:
<route id="camel-route" autoStartup="true">
<from uri="file:/dir?move=${date:now:yyyyMMdd}\processed\${file:name}&moveFailed=${date:now:yyyyMMdd}\failed\${file:name}" />
<unmarshal>
<jaxb prettyPrint="false" contextPath="com.example.model" />
</unmarshal>
<to uri="mongodb:connectionBean?database=db&collection=coll&operation=save" />
</route>
Конечная точка потребителя файла принимает XML-файл и демаршалирует его в POJO, который содержит несколько полей с типами данных int, String и java.util.Date. Он сохраняет / вставляет нормально, но поле даты сохраняется как тип NumberLong вместо типа ISODate.
Но если я сохраню его с помощью драйвера Java MongoDB (т.е. создав DBObject, сопоставлю ключ с полем «new Date ()»), он будет сохранен как ISODate в MongoDB. В любом случае, я могу сделать это, просто используя верблюжий XML DSL?
РЕДАКТИРОВАТЬ: копаясь в кодах и документации, camel-mongodb использует Джексона, который сначала преобразует его в карту, а затем в BasicDBObject. Есть ли способ в XML DSL настроить поведение Джексона? В крайнем случае, можно написать собственный преобразователь типов.