camel-mongodb сохранить java.util.Date как ISODate вместо NumberLong

Я использую 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}&amp;moveFailed=${date:now:yyyyMMdd}\failed\${file:name}" />

    <unmarshal>
        <jaxb prettyPrint="false" contextPath="com.example.model" />
    </unmarshal>

    <to uri="mongodb:connectionBean?database=db&amp;collection=coll&amp;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 настроить поведение Джексона? В крайнем случае, можно написать собственный преобразователь типов.


person allancth    schedule 09.07.2014    source источник
comment
Связанный вопрос: stackoverflow.com/questions/47161264/   -  person gstackoverflow    schedule 07.11.2017
comment
И этот: stackoverflow.com/questions/47173504/   -  person gstackoverflow    schedule 08.11.2017
comment
Связанный ответ. Похоже, вам понадобится конвертер типов.   -  person madhead    schedule 12.11.2017