I think the problem is the leading slash / so your root element has to be
<authorizationCheck>.
Because I think this is not the case (but you havent shown that xml) other
xpaths will work
Jan
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
public class XPathHeaderTest extends CamelTestSupport {
@Test
public void authEnabled() throws InterruptedException {
getMockEndpoint("mock:end").expectedHeaderReceived("WITH_AUTHENTIFICATION",
true);
String xml =
"<order><authorizationCheck>enabled</authorizationCheck><id>123</id></order>
";
template.sendBody("direct:in", xml);
assertMockEndpointsSatisfied();
}
@Test
public void authDisabled() throws InterruptedException {
getMockEndpoint("mock:end").expectedHeaderReceived("NO_AUTHENTIFICATION",
true);
String xml =
"<order><authorizationCheck>disabled</authorizationCheck><id>123</id></order
>";
template.sendBody("direct:in", xml);
assertMockEndpointsSatisfied();
}
@Test
public void authUnknown1() throws InterruptedException {
getMockEndpoint("mock:end").expectedHeaderReceived("NO_AUTHENTIFICATION",
true);
String xml =
"<order><authorizationCheck>unknown</authorizationCheck><id>123</id></order>
";
template.sendBody("direct:in", xml);
assertMockEndpointsSatisfied();
}
@Test
public void authUnknown2() throws InterruptedException {
getMockEndpoint("mock:end").expectedHeaderReceived("NO_AUTHENTIFICATION",
true);
String xml = "<order><id>123</id></order>";
template.sendBody("direct:in", xml);
assertMockEndpointsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:in")
.choice()
.when().xpath("/order/authorizationCheck='enabled'")
.setHeader("WITH_AUTHENTIFICATION",
constant(true))
.otherwise()
.setHeader("NO_AUTHENTIFICATION",
constant(true))
.end()
.to("mock:end");
}
};
}
}
> -----Ursprüngliche Nachricht-----
> Von: Lydie [mailto:[email protected]]
> Gesendet: Donnerstag, 10. April 2014 06:29
> An: [email protected]
> Betreff: Re: camel xpath
>
> So I still have an error:
>
> I never go to my first choice: 'enabled':
>
>
> <choice>
> <when>
> <xpath
> headerName="ROUTE_CONFIGURATION_HEADER">/authorizationCheck='enabled'</
> xpath>
> <log message="**** Authorization enabled" />
> <process ref="authorizationProcessor" />
> </when>
> <otherwise>
> <log message="**** Authorization disabled" />
> </otherwise>
> </choice>
>
>
>
> This what I get when I print my ROUTE_CONFIGURATION_HEADER:
>
>
> 21:17:30,030 INFO [proxy] (qtp1338864318-153)
> +++++{RouteConfiguration=<authorizationCheck>enabled</authorizationChec
> k
> +++++>Accept-Encoding=gzip,deflate,sdch,
> Host=localhost:8888, breadcrumbId=ID-dt-lprevost-61655-1397103421574-0-
> 2,
> CamelHttpServletResponse=HTTP/1.1 200
>
> ****
> 21:17:30,103 INFO [proxy] (qtp1338864318-153) **** Authorization
> disabled
>
>
> Message History
> -----------------------------------------------------------------------
> ----------------------------------------------------------------
> RouteId ProcessorId Processor
> Elapsed (ms)
> [proxy ] [proxy ] [http://0.0.0.0:8888
> ] [ 23187]
> [proxy ] [convertBodyTo1 ]
> [convertBodyTo[java.lang.String]
> ] [ 2]
> [proxy ] [log1 ] [log
> ] [ 1]
> [proxy ] [process1 ]
> [ref:routeConfiguratorProcessor
> ] [ 22078]
> [proxy ] [log2 ] [log
> ] [ 4]
> [proxy ] [log3 ] [log
> ] [ 1]
> [proxy ] [doTry1 ] [doTry
> ] [ 70]
> [proxy ] [choice1 ] [when[xpath{XPath:
> /authorizationCheck="enabled"}]choice[] ] [
> 69]
> [proxy ] [log5 ] [log
> ] [ 1]
> [proxy ] [log6 ] [log
> ] [ 0]
> [proxy ] [process4 ] [ref:inputProcessor
> ] [ 1028]
>
>
>
> why do I have :
> [when[xpath{XPath: /authorizationCheck="enabled"}]choice[] not
> validated as true??????
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/camel-
> xpath-tp5749754p5750025.html
> Sent from the Camel - Users mailing list archive at Nabble.com.