Java骆驼路线永远不会达到否则声明

时间:2019-06-17 14:58:45

标签: java apache-camel

我正在创建一个基于文件名将文件传输到新位置的服务。问题是,即使第一个when为假(文件名不是以“ START”开头),也不会到达第二个else语句。另外,from uri具有delete = true选项,可能会影响某些内容。结果是该文件被删除。

        <route id="outgoing" errorHandlerRef="outgoingDeadLetterErrorHandler">
            <from uri="OutgoingSource"/>

            <choice>
                <when>
                    <simple>${file:name} starts with 'START'</simple>

                    <convertBodyTo type="java.lang.String"/>
                    <choice>
                        <when>
                            <xpath>/File/Header/@x = 'X'</xpath>
                            <to ref="OutgoingErrorDestination"/>
                        </when>
                        <when>
                            <xpath>/Header/@y = 'Y'</xpath>
                            <to ref="OutgoingDestination"/>
                        </when>
                        <otherwise>
                            <to ref="OutgoingErrorDestination"/>
                        </otherwise>
                    </choice>
                </when>
                <otherwise>
                    <to ref="OutgoingErrorDestination"/>
                </otherwise>
            </choice>
        </route>

1 个答案:

答案 0 :(得分:0)

file:name相对于起始目录(即file:name = test \ hello.txt)

如果只想测试文件名,则应使用file:onlyname.noext

<simple>${file:onlyname.noext} starts with 'START'</simple>