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"; + } + } }