You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/08/17 17:34:08 UTC

svn commit: r567070 - /activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java

Author: jstrachan
Date: Fri Aug 17 08:34:07 2007
New Revision: 567070

URL: http://svn.apache.org/viewvc?view=rev&rev=567070
Log:
added test case for discussion:  http://www.nabble.com/MethodName-in-header-is-ignored-by-beanRef%28%29-tf4285009s22882.html#a12197583

Added:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java
      - copied, changed from r566911, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java

Copied: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java (from r566911, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java?view=diff&rev=567070&p1=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java&r1=566911&p2=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java&r2=567070
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java Fri Aug 17 08:34:07 2007
@@ -17,77 +17,90 @@
 package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Header;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
 import org.apache.camel.Processor;
-import org.apache.camel.ValidationException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.bean.BeanProcessor;
 import org.apache.camel.util.jndi.JndiContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import javax.naming.Context;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * @version $Revision: 1.1 $
  */
-public class BeanWithExceptionTest extends ContextTestSupport {
-    protected Processor validator = new MyValidator();
-    protected MockEndpoint validEndpoint;
-    protected MockEndpoint invalidEndpoint;
+public class BeanRouteTest extends ContextTestSupport {
+    private static final transient Log LOG = LogFactory.getLog(BeanRouteTest.class);
+    protected MyBean myBean = new MyBean();
 
-    public void testValidMessage() throws Exception {
-        validEndpoint.expectedMessageCount(1);
+    public void testSendingMessageWithMethodNameHeader() throws Exception {
+        String expectedBody = "Wobble";
 
-        template.sendBodyAndHeader("direct:start", "<valid/>", "foo", "bar");
+        template.sendBodyAndHeader("direct:in", expectedBody, BeanProcessor.METHOD_NAME, "read");
 
-        MockEndpoint.assertIsSatisfied(validEndpoint, invalidEndpoint);
+        assertEquals("bean received correct value for: " + myBean, expectedBody, myBean.body);
     }
 
-    public void testInvalidMessage() throws Exception {
-        invalidEndpoint.expectedMessageCount(1);
+    public void testSendingMessageWithMethodNameHeaderWithMoreVerboseCoe() throws Exception {
+        final String expectedBody = "Wibble";
 
-        template.sendBodyAndHeader("direct:start", "<invalid/>", "foo", "notMatchedHeaderValue");
-
-        MockEndpoint.assertIsSatisfied(validEndpoint, invalidEndpoint);
+        template.send("direct:in", new Processor() {
+            public void process(Exchange exchange) {
+                Message in = exchange.getIn();
+                in.setBody(expectedBody);
+                in.setHeader(BeanProcessor.METHOD_NAME, "read");
+            }
+        });
+        assertEquals("bean received correct value", expectedBody, myBean.body);
     }
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
-        validEndpoint = resolveMandatoryEndpoint("mock:valid", MockEndpoint.class);
-        invalidEndpoint = resolveMandatoryEndpoint("mock:invalid", MockEndpoint.class);
+        Object lookedUpBean = context.getRegistry().lookup("myBean");
+        assertSame("Lookup of 'myBean' should return same object!", myBean, lookedUpBean);
     }
 
     @Override
     protected Context createJndiContext() throws Exception {
         JndiContext answer = new JndiContext();
-        answer.bind("myBean", new ValidationBean());
+        answer.bind("myBean", myBean);
         return answer;
     }
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                exception(ValidationException.class).to("mock:invalid");
-
-                from("direct:start").
-                        beanRef("myBean").
-                        to("mock:valid");            }
+                from("direct:in").beanRef("myBean").to("seda:out");
+            }
         };
     }
 
-    public static class ValidationBean {
-        private static final transient Log LOG = LogFactory.getLog(ValidationBean.class);
+    public static class MyBean {
+        public String body;
+        private static AtomicInteger counter = new AtomicInteger(0);
+        private int id;
+
+        public MyBean() {
+            id = counter.incrementAndGet();
+        }
+
+        @Override
+        public String toString() {
+            return "MyBean:" + id;
+        }
+
+        public void read(String body) {
+            this.body = body;
+            LOG.info("read() method on " + this + " with body: " + body);
+        }
 
-        public void someMethod(String body, @Header(name = "foo") String header) throws ValidationException {
-            if ("bar".equals(header)) {
-                LOG.info("someMethod() called with valid header and body: " + body);
-            }
-            else {
-                throw new ValidationException(null, "Invalid header foo: " + header);
-            }
+        public void wrongMethod(String body) {
+            fail("wrongMethod() called with: " + body);
         }
     }
 }