Hi

Could you try the xpath stuff without the aggregator to make sure the matching 
works. You can try some unit test using xpath evaluation.


PS: Maybe we should add some TRACE logging in Camel to the expression evaluator 
so you can check what the result was evaluated to.


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: mta38 [mailto:[EMAIL PROTECTED] 
Sent: 16. oktober 2008 16:20
To: [email protected]
Subject: 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-tp20014512s22882p20014512.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to