You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by mta38 <mt...@orange-ftgroup.com> on 2008/10/16 16:06:18 UTC
Is it possible to use aggregator with xpath
Hi all,
I try to use "aggregator" with "xpath" but i have some strange behaviour.
Here is my spring config file :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tns="http://activemq.apache.org/schema/core"
xmlns:g1="urn:mynamespace:myservice"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring/camel-spring-1.4.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<bean id="myProcessor" class="aggregator.MyProcessor" />
<bean id="myAggregatorStrategy" class="aggregator.MyAggregationStrategy"/>
<camelContext id="myCamelContext"
xmlns="http://activemq.apache.org/camel/schema/spring">
<!-- Let's try processor "aggregator" -->
<!-- We use our own aggregation strategy define in
aggregator.MyAggregationStrategy class -->
<!-- Route with a defined batch size to stop collection of exchange. -->
<route>
<from uri="direct:aggreg-start" />
<aggregator strategyRef="myAggregatorStrategy" batchSize="2">
<xpath>/soapenv:Envelope/soapenv:Body/g1:creerMarche</xpath>
<!-- simple>header.client</simple-->
<to uri="mock:result" />
</aggregator>
</route>
</camelContext>
</beans>
This is my java code
public void testSendingMessagesWithCustomAggregator() throws Exception {
result.expectedMessageCount(1);
producer.sendBodyAndHeader(REQUEST_MESSAGE, "client","client");
producer.sendBodyAndHeader(REQUEST_MESSAGE2, "client","client");
result.await(20,TimeUnit.SECONDS);
List<Exchange> list = result.getReceivedExchanges();
for (Exchange exchange : list) {
Message in = exchange.getIn();
String body = in.getBody(String.class);
LOG.info("Result: " + body);
}
When I use <simple>header.client</simple> as predicate, my aggregation
strategy code is executed.
But when I try to use
<xpath>/soapenv:Envelope/soapenv:Body/g1:creerMarche</xpath> my aggregation
strategy code is never executed.
Here is the REQUEST_MESSAGE values:
private static final String REQUEST_MESSAGE = "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:g1=\"
urn:mynamespace:myservice\" xmlns:g11=\"urn:mynamespace:myservice \">"
+"<soapenv:Header/>"
+ "<soapenv:Body>"
+ "<g1:creerMarche>"
+ "<g1:marche>"
+ "<g11:description>une desc1</g11:description>"
+ "<g11:nom>nom1</g11:nom>"
+ "<g11:id>id1</g11:id>"
+ "</g1:marche>"
+ "</g1:creerMarche>"
+ "</soapenv:Body>"
+ "</soapenv:Envelope>";
All help are welcome.
Thanks in advance
Mta38
--
View this message in context: http://www.nabble.com/Is-it-possible-to-use-aggregator-with-xpath-tp20014324s22882p20014324.html
Sent from the Camel - Users mailing list archive at Nabble.com.