Author: davsclaus
Date: Mon Apr 25 07:33:27 2011
New Revision: 1096423

URL: http://svn.apache.org/viewvc?rev=1096423&view=rev
Log:
CAMEL-463: Added additional languages to camel-scala DSL.

Added:
    
camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/HeaderContentBasedRouterTest.scala
Modified:
    
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
    
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/languages/Languages.scala

Modified: 
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala?rev=1096423&r1=1096422&r2=1096423&view=diff
==============================================================================
--- 
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
 (original)
+++ 
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
 Mon Apr 25 07:33:27 2011
@@ -18,7 +18,6 @@ package org.apache.camel
 package scala
 package dsl.builder
 
-import org.apache.camel.model.{ChoiceDefinition, ProcessorDefinition}
 import org.apache.camel.model.DataFormatDefinition
 import org.apache.camel.{Exchange, RoutesBuilder}
 import org.apache.camel.builder.{DeadLetterChannelBuilder, ErrorHandlerBuilder}
@@ -40,7 +39,7 @@ import java.util.Comparator
 class RouteBuilder extends Preamble with DSL with RoutesBuilder with Languages 
with Functions {
 
   val builder = new org.apache.camel.builder.RouteBuilder {
-    override def configure() =  {
+    override def configure() = {
       onJavaBuilder(this)
     }
   }

Modified: 
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/languages/Languages.scala
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/languages/Languages.scala?rev=1096423&r1=1096422&r2=1096423&view=diff
==============================================================================
--- 
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/languages/Languages.scala
 (original)
+++ 
camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/languages/Languages.scala
 Mon Apr 25 07:33:27 2011
@@ -17,8 +17,6 @@
 package org.apache.camel
 package scala.dsl.languages
 
-import org.apache.camel.builder.Builder
-
 /**
  * Trait to support the different expression languages available in Camel 
  */
@@ -28,32 +26,38 @@ trait Languages {
    * Implicitly make a method for every language available on the Camel 
Exchange
    */
   implicit def addLanguageMethodsToExchange(exchange: Exchange) = new {
-    def bean(ref: String) =          Builder.bean(ref).evaluate(exchange, 
classOf[Any])
-    def el(expression: String) =     Languages.this.el(expression)(exchange)
-    def groovy(expression: String) = 
Languages.this.groovy(expression)(exchange)
-    def jxpath(expression: String) = 
Languages.this.jxpath(expression)(exchange)
-    def mvel(expression: String) =   Languages.this.mvel(expression)(exchange)
-    def ognl(expression: String) =   Languages.this.ognl(expression)(exchange) 
-    def php(expression: String) =    Languages.this.php(expression)(exchange)
-    def python(expression: String) = 
Languages.this.python(expression)(exchange)
-    def ruby(expression: String) =   Languages.this.ruby(expression)(exchange)
-    def simple(expression: String) = 
Languages.this.simple(expression)(exchange)
-    def sql(expression: String) =    Languages.this.sql(expression)(exchange)
-    def xpath(expression: String) =  Languages.this.xpath(expression)(exchange)
-    def xquery(expression: String) = 
Languages.this.xquery(expression)(exchange)
+    def el(expression: String) =         
Languages.this.el(expression)(exchange)
+    def groovy(expression: String) =     
Languages.this.groovy(expression)(exchange)
+    def header(headerName: String) =     
Languages.this.header(headerName)(exchange)
+    def javascript(expression: String) = 
Languages.this.javascript(expression)(exchange)
+    def jxpath(expression: String) =     
Languages.this.jxpath(expression)(exchange)
+    def mvel(expression: String) =       
Languages.this.mvel(expression)(exchange)
+    def ognl(expression: String) =       
Languages.this.ognl(expression)(exchange)
+    def php(expression: String) =        
Languages.this.php(expression)(exchange)
+    def property(propertyName: String) = 
Languages.this.property(propertyName)(exchange)
+    def python(expression: String) =     
Languages.this.python(expression)(exchange)
+    def ruby(expression: String) =       
Languages.this.ruby(expression)(exchange)
+    def simple(expression: String) =     
Languages.this.simple(expression)(exchange)
+    def spel(expression: String) =       
Languages.this.spel(expression)(exchange)
+    def sql(expression: String) =        
Languages.this.sql(expression)(exchange)
+    def xpath(expression: String) =      
Languages.this.xpath(expression)(exchange)
+    def xquery(expression: String) =     
Languages.this.xquery(expression)(exchange)
   }
   
   // a set of methods to allow direct use of the language as an expression
   def el(expression: String)(exchange: Exchange) =         
Languages.evaluate(expression)(exchange)("el")
   def groovy(expression: String)(exchange: Exchange) =     
Languages.evaluate(expression)(exchange)("groovy")
+  def header(headerName: String)(exchange: Exchange) =     
Languages.evaluate(headerName)(exchange)("header")
   def javascript(expression: String)(exchange: Exchange) = 
Languages.evaluate(expression)(exchange)("javascript")
   def jxpath(expression: String)(exchange: Exchange) =     
Languages.evaluate(expression)(exchange)("jxpath")
   def mvel(expression: String)(exchange: Exchange) =       
Languages.evaluate(expression)(exchange)("mvel")
   def ognl(expression: String)(exchange: Exchange) =       
Languages.evaluate(expression)(exchange)("ognl")
   def php(expression: String)(exchange: Exchange) =        
Languages.evaluate(expression)(exchange)("php")
+  def property(propertyName: String)(exchange: Exchange) = 
Languages.evaluate(propertyName)(exchange)("property")
   def python(expression: String)(exchange: Exchange) =     
Languages.evaluate(expression)(exchange)("python")
   def ruby(expression: String)(exchange: Exchange) =       
Languages.evaluate(expression)(exchange)("ruby")
   def simple(expression: String)(exchange: Exchange) =     
Languages.evaluate(expression)(exchange)("simple")
+  def spel(expression: String)(exchange: Exchange) =       
Languages.evaluate(expression)(exchange)("spel")
   def sql(expression: String)(exchange: Exchange) =        
Languages.evaluate(expression)(exchange)("sql")
   def xpath(expression: String)(exchange: Exchange) =      
Languages.evaluate(expression)(exchange)("xpath")
   def xquery(expression: String)(exchange: Exchange) =     
Languages.evaluate(expression)(exchange)("xquery")
@@ -65,7 +69,7 @@ trait Languages {
  */
 object Languages {
 
-  def evaluate(expression: String)(exchange: Exchange)(lang: String) : Any = { 
+  def evaluate(expression: String)(exchange: Exchange)(lang: String) : Any = {
     val language = exchange.getContext().resolveLanguage(lang)
     language.createExpression(expression).evaluate(exchange, classOf[Object])
   }

Added: 
camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/HeaderContentBasedRouterTest.scala
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/HeaderContentBasedRouterTest.scala?rev=1096423&view=auto
==============================================================================
--- 
camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/HeaderContentBasedRouterTest.scala
 (added)
+++ 
camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/HeaderContentBasedRouterTest.scala
 Mon Apr 25 07:33:27 2011
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.scala.dsl
+
+import builder.RouteBuilder
+
+/**
+ * Content Based Router test with XPath expressions
+ */
+class HeaderContentBasedRouterTest extends ScalaTestSupport {
+
+  def testXPathContentBasedRouter = {
+    "mock:foo" expect {_.expectedBodiesReceived("Hello Foo")}
+    "mock:bar" expect {_.expectedBodiesReceived("Hello Bar")}
+    "mock:other" expect {_.expectedBodiesReceived("Hello World")}
+
+    test {
+      template.sendBodyAndHeader("direct:a", "Hello Foo", "foo", 123)
+      template.sendBodyAndHeader("direct:a", "Hello Bar", "bar", 456)
+      template.sendBody("direct:a", "Hello World")
+    }
+
+    assertMockEndpointsSatisfied()
+  }
+
+  val builder = new RouteBuilder {
+     //START SNIPPET: cbr
+     "direct:a" ==> {
+     choice {
+        when (header("foo")) to ("mock:foo")
+        when (header("bar")) to ("mock:bar")
+        otherwise to ("mock:other")
+      }
+    }
+    //END SNIPPET: cbr
+  }
+
+}
\ No newline at end of file


Reply via email to