BTW I've created a little test case for this kinda use case...

https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/routingUsingProcessor.xml

https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/CustomProcessorWithNamespacesTest.java


On 4/30/07, dr.jeff <[EMAIL PROTECTED]> wrote:

My xml looks like this:

<beans xmlns="http://www.springframework.org/schema/beans";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="
       http://www.springframework.org/schema/beans ./spring-beans-2.0.xsd
       http://activemq.apache.org/camel/schema/camel-1.0.xsd ./camel-1.0.xsd
">
  <bean id="stringProcessor" class="test.StringProcessor"
init-method="init"/>
  <camelContext id="camel"
xmlns="http://activemq.apache.org/camel/schema/camel-1.0.xsd";>
    <routes>
      <route>
        <from uri="direct:outgoing"/>
        <process ref="#stringProcessor"/>
      </route>
    </routes>
  </camelContext>
</beans>

StringProcessor.java looks like this:

public class StringProcessor implements Processor<Exchange> {

        public StringProcessor() {
        }
        public void init() {
                System.out.println("new string processor");
        }
        public void process(Exchange e) {
                System.out.println("process: " + e.getIn());
        }
}

I call it like this:

        public TestSimpleXml(String ctxFile) {
                ctx = new ClassPathXmlApplicationContext(ctxFile);
                try {
                        container = (CamelContext) ctx.getBean("camel");
                        Endpoint<Exchange> endpoint = 
container.getEndpoint("direct:incoming");
                        Exchange exchange = endpoint.createExchange();
                Message m = exchange.getIn();
                m.setBody("test message");
                Producer<Exchange> producer = endpoint.createProducer();
                producer.process(exchange);
                Thread.sleep(5000); //let queues clean out
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

I see that the init() method of StringProcessor is being called. I expect to
see the message reach the process() method, but I do not.

This seems so simple. Am I still missing something?

You're using 2 different URIs...

* direct:outgoing
* direct:incoming

shouldn't they be the same? :)

(I've started to use direct:start everywhere as the first entry point
to a test case to avoid myself getting confused :)

--
James
-------
http://macstrac.blogspot.com/

Reply via email to