Apache camel 推土机和骆驼式推土机的动态映射

Apache camel 推土机和骆驼式推土机的动态映射,apache-camel,dozer,Apache Camel,Dozer,我正在考虑实现一个集成场景,在这个场景中,我需要执行从源到目标的动态映射,问题是映射应该是可配置的,并且不能链接到固定值 我使用Camel作为集成框架并导入一个文件(可以有不同的数据结构,但我们假设它是一个CSV文件),然后我需要将该文件中的数据映射到内部格式。我正在考虑使用Dozer和XML映射配置来执行此映射 因此,我想做的是加载文件,解组CSV,然后分割文件,接下来我想将camel body中的HashMap(由CSV解组生成)映射到另一个HashMap,但更改键的值 http://ww

我正在考虑实现一个集成场景,在这个场景中,我需要执行从源到目标的动态映射,问题是映射应该是可配置的,并且不能链接到固定值

我使用Camel作为集成框架并导入一个文件(可以有不同的数据结构,但我们假设它是一个CSV文件),然后我需要将该文件中的数据映射到内部格式。我正在考虑使用Dozer和XML映射配置来执行此映射

因此,我想做的是加载文件,解组CSV,然后分割文件,接下来我想将camel body中的HashMap(由CSV解组生成)映射到另一个HashMap,但更改键的值

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd “>


Mapping.xml
${body}

映射文件如下所示(仅作为示例,这显然会随着更多字段映射而扩展)


java.util.HashMap
java.util.HashMap
这
目标地图
然而,当我执行驼峰路线时,我不断得到一个异常“org.dozer.MappingException:Destination类不能为null”


我做错了什么?还欢迎任何其他建议来实现动态映射功能。

我不确定您是否可以直接引用dozerBeanMapper类来调用特定的映射。您可以使用
,但由于它已经是一个HashMap,我不知道这是否可行。您可以在hashmap用于目标类型,然后使用

您需要显示动态映射器的代码,因为这是失败的推土机代码。还要阅读推土机文档,了解该错误在推土机land中的含义。
<bean id="Debug" class="com.mycompany.camel.spring.DebugProcessor" />
<bean id="dozerConverterLoader"
    class="org.apache.camel.converter.dozer.DozerTypeConverterLoader" />

<bean id="DynamicMapper" class="org.dozer.DozerBeanMapper">
    <property name="mappingFiles">
        <list>
            <value>Mapping.xml</value>
        </list>
    </property>
</bean>

<camelContext trace="false"
    xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from uri="file:src?fileName=sample_data.csv&amp;noop=true" />
        <unmarshal>
            <csv delimiter="," skipHeaderRecord="true" useMaps="true" />
        </unmarshal>
        <split>
            <simple>${body}</simple>
            <bean ref="Debug" />
            <bean ref="DynamicMapper" />
            <bean ref="Debug" />
        </split>
    </route>
</camelContext>
    <?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
    <mapping>
        <class-a>java.util.HashMap</class-a>
        <class-b>java.util.HashMap</class-b>
        <field>
            <a key="overtimehours">this</a>
            <b key="OVT_HRS">TargetMap</b>
        </field>
    </mapping>
</mappings>