You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/06/26 19:28:25 UTC

svn commit: r788778 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ main/java/org/apache/camel/component/bean/ test/java/org/apache/camel/component/bean/

Author: davsclaus
Date: Fri Jun 26 17:28:25 2009
New Revision: 788778

URL: http://svn.apache.org/viewvc?rev=788778&view=rev
Log:
CAMEL-1763: Added CamelContext and Registry as autoatic bean parameter bindings that Camel knows.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=788778&r1=788777&r2=788778&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Fri Jun 26 17:28:25 2009
@@ -219,6 +219,42 @@
     }
 
     /**
+     * Returns an expression for the {@link org.apache.camel.spi.Registry}
+     *
+     * @return an expression object which will return the registry
+     */
+    public static Expression registryExpression() {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                return exchange.getContext().getRegistry();
+            }
+
+            @Override
+            public String toString() {
+                return "registry";
+            }
+        };
+    }
+
+    /**
+     * Returns an expression for the {@link org.apache.camel.CamelContext}
+     *
+     * @return an expression object which will return the camel context
+     */
+    public static Expression camelContextExpression() {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                return exchange.getContext();
+            }
+
+            @Override
+            public String toString() {
+                return "camelContext";
+            }
+        };
+    }
+
+    /**
      * Returns an expression for an exception message set on the exchange
      *
      * @see <tt>Exchange.getException().getMessage()</tt>

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java?rev=788778&r1=788777&r2=788778&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java Fri Jun 26 17:28:25 2009
@@ -23,6 +23,8 @@
 import org.apache.camel.Expression;
 import org.apache.camel.Message;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.builder.ExpressionBuilder;
 
 /**
@@ -53,6 +55,8 @@
         addParameterMapping(Message.class, ExpressionBuilder.inMessageExpression());
         addParameterMapping(Exception.class, ExpressionBuilder.exchangeExceptionExpression());
         addParameterMapping(TypeConverter.class, ExpressionBuilder.typeConverterExpression());
+        addParameterMapping(Registry.class, ExpressionBuilder.registryExpression());
+        addParameterMapping(CamelContext.class, ExpressionBuilder.camelContextExpression());
     }
 
 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java?rev=788778&r1=788777&r2=788778&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java Fri Jun 26 17:28:25 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.bean;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -23,6 +24,7 @@
 import org.apache.camel.TypeConverter;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 
 /**
  * @version $Revision$
@@ -65,6 +67,18 @@
         assertMockEndpointsSatisfied();
     }
 
+    public void testRegistry() throws Exception {
+        getMockEndpoint("mock:result").expectedBodiesReceived("Registry");
+        template.sendBody("direct:e", "Hello");
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testCamelContext() throws Exception {
+        getMockEndpoint("mock:result").expectedBodiesReceived("CamelContext");
+        template.sendBody("direct:f", "Hello");
+        assertMockEndpointsSatisfied();
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
@@ -81,6 +95,10 @@
                 from("direct:c").to("mock:foo");
 
                 from("direct:d").beanRef("foo", "withTypeConverter").to("mock:result");
+
+                from("direct:e").beanRef("foo", "withRegistry").to("mock:result");
+
+                from("direct:f").beanRef("foo", "withCamelContext").to("mock:result");
             }
         };
     }
@@ -114,5 +132,21 @@
             return "TypeConverter";
         }
 
+        public String withRegistry(String body, Registry registry) {
+            assertNotNull(body);
+            assertNotNull(registry);
+            assertNotNull(registry.lookup("foo"));
+            assertEquals("Hello", body);
+            return "Registry";
+        }
+
+        public String withCamelContext(String body, CamelContext camel) {
+            assertNotNull(body);
+            assertNotNull(camel);
+            assertNotNull(camel.getRegistry().lookup("foo"));
+            assertEquals("Hello", body);
+            return "CamelContext";
+        }
+
     }
 }