如何避免在apache camel路由中影响xpath返回类型的mvn cobertura插件

时间:2015-02-06 14:30:43

标签: apache-camel cobertura maven-cobertura-plugin

我正在使用apache camel 2.12.0(也试过2.14.0)。 我有一个从远程服务器接收xml的路由:

<?xml version='1.0' encoding='UTF-8'?> <response><meta><code>200</code></meta><data><person><name>John</name></person></data></response>

from("direct:start")
.to("jetty:http://localhost/something")
.transform().xpath("/response/data")
.log("${body.class}")
.unmarshal().xstream();

我剪掉了解散它的身体。使用xstream。

.log("${body.class}") -> net.sf.saxon.dom.DOMNodeList

直到现在一切正常。 mvn test,mvn camel:run ..一切都很好。

现在出现错误部分

mvn cobertura:cobertura抛出异常

org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: [net.sf.saxon.tree.tiny.TinyElementImpl@90400f] of type: java.util.ArrayList on: Message: [net.sf.saxon.tree.tiny.TinyElementImpl@90400f]

.log("${body.class}") -> java.util.ArrayList

帮助

你能否提出一个建议,为什么cobertura会改变xpath()的返回类型?

更新(已解决)

我发现了依赖项的问题。 如果我使用camel-xstream和cobertura,我会在.xpath()中得到奇怪的行为。 但是,如果我在依赖项中包含camel-xmljson lib,那么一切正常。 我想coberturas对jaxen的依赖之一:jaxen:jar:1.1-beta-8:compile或者其他一些加载与camel冲突的xml类。

0 个答案:

没有答案