Author: gertv
Date: Fri Jul 18 00:26:01 2008
New Revision: 677842

URL: http://svn.apache.org/viewvc?rev=677842&view=rev
Log:
CAMEL-463: Some refactorings to the camel-scala component

Added:
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaProcessor.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/Wrapper.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilderSupport.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RichTestUri.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ScalaTestSupport.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/builder/
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/builder/RouteBuilderUnwrapTest.scala
Removed:
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/builder/
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/ScalaDsl.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/ScalaExpression.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/ScalaProcessor.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/WhenPredicate.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/Wrapper.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichTestUri.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTestSupport.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/builder/
Modified:
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SChoiceType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SDelayerType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SLoadBalanceType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SMulticastType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SProcessorType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SResequencerType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SSplitterType.scala
    
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThrottlerType.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/DelayerTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExplicitMulticastTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/LoadBalancerTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RecipientListRouteTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ResequencerTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SplitterRouteBuilderTest.scala
    
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ThrottlerTest.scala

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,26 @@
+/**
+ * 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;
+
+/**
+ * Scala implementation for an Apache Camel Expression
+ */
+class ScalaExpression(val expression: Exchange => Any) extends 
Expression[Exchange] {
+  
+  def evaluate(exchange: Exchange) = expression(exchange).asInstanceOf[Object]
+
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,31 @@
+/**
+ * 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 org.apache.camel.Predicate
+
+class ScalaPredicate(function: Exchange => Boolean) extends 
Predicate[Exchange]{
+
+  override def matches(exchange: Exchange) = {
+    function(exchange)
+  }
+
+  override def assertMatches(text: String, exchange: Exchange) = {
+    if (!matches(exchange)) throw new AssertionError(text + " : " + exchange + 
" doesn't match Scala function")
+  }
+
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaProcessor.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaProcessor.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaProcessor.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaProcessor.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,26 @@
+/**
+ * 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;
+
+/**
+ * Scala implementation for an Apache Camel Processor
+ */
+class ScalaProcessor(val function: Exchange => Any) extends Processor {
+  
+  def process(exchange: Exchange) = function(exchange)
+
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/Wrapper.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/Wrapper.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/Wrapper.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/Wrapper.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,26 @@
+/**
+ * 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;
+
+/**
+ * Wraps a given type T and supports unwrapping it on demand
+ */
+trait Wrapper[T] {
+
+  val unwrap : T
+  
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,39 @@
+/**
+ * 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
+
+/**
+ * Defines the 'keywords' in our Scala DSL
+ */
+trait DSL {
+  
+  def choice : SChoiceType
+  def -->(uris: String*) : DSL
+  def to(uris: String*) : DSL
+  def when(filter: Exchange => Boolean) : SChoiceType
+  def as[Target](toType: Class[Target]) : DSL
+  def recipients(expression: Exchange => Any) : DSL
+  def splitter(expression: Exchange => Any) : SSplitterType
+  def otherwise : DSL
+  def multicast : SMulticastType
+  def process(function: Exchange => Unit) : DSL
+  def throttle(frequency: Frequency) : SThrottlerType
+  def loadbalance : SLoadBalanceType
+  def delay(delay: Period) : SDelayerType
+  def resequence(expression: Exchange => Any) : SResequencerType
+
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractType.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractType.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractType.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,82 @@
+/**
+ * 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 org.apache.camel.model.ProcessorType
+import org.apache.camel.model.FilterType
+import org.apache.camel.model.ChoiceType
+
+import org.apache.camel.scala.dsl.builder.RouteBuilder
+
+abstract class SAbstractType extends DSL {
+  
+  val target : ProcessorType[T] forSome {type T}
+  implicit val builder: RouteBuilder
+  implicit def expressionBuilder(expression: Exchange => Any) = new 
ScalaExpression(expression)
+  
+  def -->(uris: String*) = to(uris:_*)
+  def to(uris: String*) = {
+    uris.length match {
+      case 1 => target.to(uris(0))
+      case _ => {
+        val multicast = target.multicast
+        uris.foreach(multicast.to(_))
+      }
+    }
+    this
+  }
+  
+  def when(filter: Exchange => Boolean) : SChoiceType =
+    new SChoiceType(target.choice).when(filter)
+    
+  def as[Target](toType: Class[Target]) = {
+    target.convertBodyTo(toType)
+    new SProcessorType(target.asInstanceOf[ProcessorType[P] forSome {type P}])
+  }
+  
+  def splitter(expression: Exchange => Any) = 
+    new SSplitterType(target.splitter(expression))
+    
+  def recipients(expression: Exchange => Any) = 
+    new 
SProcessorType(target.recipientList(expression).asInstanceOf[ProcessorType[P] 
forSome {type P}])
+
+  def apply(block: => Unit) = {
+    builder.build(this, block)
+    this
+  }
+  
+  def choice = new SChoiceType(target.choice)
+    
+  def otherwise : SChoiceType = 
+    throw new Exception("otherwise is only supported in a choice block or 
after a when statement")
+  
+  def multicast = new SMulticastType(target.multicast)
+  
+  def process(function: Exchange => Unit) = {
+    target.process(new ScalaProcessor(function))
+    this
+  }
+  
+  def throttle(frequency: Frequency) = new 
SThrottlerType(target.throttler(frequency.count).timePeriodMillis(frequency.period.milliseconds))
+  
+  def loadbalance = new SLoadBalanceType(target.loadBalance)
+  
+  def delay(period: Period) = new 
SDelayerType(target.delayer(period.milliseconds))
+  
+  def resequence(expression: Exchange => Any) = new 
SResequencerType(target.resequencer(expression))
+
+}

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SChoiceType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SChoiceType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SChoiceType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SChoiceType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,9 +17,9 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.ChoiceType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
-class SChoiceType(val target: ChoiceType)(implicit val builder: RouteBuilder) 
extends ScalaDsl with Wrapper[ChoiceType] {
+class SChoiceType(val target: ChoiceType)(implicit val builder: RouteBuilder) 
extends SAbstractType with Wrapper[ChoiceType] {
   
   val unwrap = target
   
@@ -29,7 +29,7 @@
   }
   
   override def when(filter: Exchange => Boolean) = {
-    target.when(new WhenPredicate(filter))
+    target.when(new ScalaPredicate(filter))
     this
   }
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SDelayerType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SDelayerType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SDelayerType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SDelayerType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,12 +17,12 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.DelayerType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
 /**
  * Scala enrichment for Camel's DelayerType
  */
-class SDelayerType(val target: DelayerType)(implicit val builder: 
RouteBuilder) extends ScalaDsl with Wrapper[DelayerType] {
+class SDelayerType(val target: DelayerType)(implicit val builder: 
RouteBuilder) extends SAbstractType with Wrapper[DelayerType] {
  
   val unwrap = target
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SLoadBalanceType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SLoadBalanceType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SLoadBalanceType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SLoadBalanceType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,12 +17,12 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.LoadBalanceType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
 /**
  * Scala enrichment for Camel's LoadBalanceType
  */
-class SLoadBalanceType(val target: LoadBalanceType)(implicit val builder: 
RouteBuilder) extends ScalaDsl with Wrapper[LoadBalanceType] {
+class SLoadBalanceType(val target: LoadBalanceType)(implicit val builder: 
RouteBuilder) extends SAbstractType with Wrapper[LoadBalanceType] {
  
   val unwrap = target
   

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SMulticastType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SMulticastType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SMulticastType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SMulticastType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,9 +17,9 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.MulticastType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
-class SMulticastType(val target: MulticastType)(implicit val builder: 
RouteBuilder) extends ScalaDsl with Wrapper[MulticastType] {
+class SMulticastType(val target: MulticastType)(implicit val builder: 
RouteBuilder) extends SAbstractType with Wrapper[MulticastType] {
   
   val unwrap = target
   

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SProcessorType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SProcessorType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SProcessorType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SProcessorType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,9 +17,9 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.ProcessorType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
-class SProcessorType(val target: ProcessorType[P] forSome {type P})(implicit 
val builder: RouteBuilder) extends ScalaDsl with Wrapper[ProcessorType[P] 
forSome {type P}] {
+class SProcessorType(val target: ProcessorType[P] forSome {type P})(implicit 
val builder: RouteBuilder) extends SAbstractType with Wrapper[ProcessorType[P] 
forSome {type P}] {
   
   val unwrap = target
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SResequencerType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SResequencerType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SResequencerType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SResequencerType.scala
 Fri Jul 18 00:26:01 2008
@@ -18,9 +18,9 @@
 
 import org.apache.camel.model.ResequencerType
 import org.apache.camel.model.config.BatchResequencerConfig
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
-class SResequencerType(val target: ResequencerType)(implicit val builder: 
RouteBuilder) extends ScalaDsl with Wrapper[ResequencerType] {
+class SResequencerType(val target: ResequencerType)(implicit val builder: 
RouteBuilder) extends SAbstractType with Wrapper[ResequencerType] {
   
   val unwrap = target
   

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,9 +17,9 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.RouteType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
-class SRouteType(val target: RouteType, val builder: RouteBuilder) extends 
ScalaDsl with Wrapper[RouteType] {
+class SRouteType(val target: RouteType, val builder: RouteBuilder) extends 
SAbstractType with Wrapper[RouteType] {
  
   val unwrap = target
   

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SSplitterType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SSplitterType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SSplitterType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SSplitterType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,9 +17,9 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.SplitterType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
-class SSplitterType(val target: SplitterType)(implicit val builder: 
RouteBuilder) extends ScalaDsl with Wrapper[SplitterType] {
+class SSplitterType(val target: SplitterType)(implicit val builder: 
RouteBuilder) extends SAbstractType with Wrapper[SplitterType] {
   
   val unwrap = target
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThrottlerType.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThrottlerType.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThrottlerType.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThrottlerType.scala
 Fri Jul 18 00:26:01 2008
@@ -17,12 +17,12 @@
 package org.apache.camel.scala.dsl;
 
 import org.apache.camel.model.ThrottlerType
-import org.apache.camel.scala.builder.RouteBuilder
+import org.apache.camel.scala.dsl.builder.RouteBuilder
 
 /**
  * Scala enrichment for Camel's ThrottlerType
  */
-class SThrottlerType(val target: ThrottlerType)(implicit val builder: 
RouteBuilder) extends ScalaDsl with Wrapper[ThrottlerType] {
+class SThrottlerType(val target: ThrottlerType)(implicit val builder: 
RouteBuilder) extends SAbstractType with Wrapper[ThrottlerType] {
  
   val unwrap = target
   

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,68 @@
+/**
+ * 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.builder;
+
+import org.apache.camel.model.ProcessorType
+import org.apache.camel.model.ChoiceType
+
+import collection.mutable.Stack
+
+import org.apache.camel.scala.dsl._
+
+/**
+ * Scala RouteBuilder implementation
+ */
+class RouteBuilder extends Preamble with DSL {
+
+  val builder = new org.apache.camel.builder.RouteBuilder {
+    override def configure() =  {}
+  }
+
+  val stack = new Stack[DSL];
+
+  implicit def stringToRoute(target: String) : SRouteType = new 
SRouteType(builder.from(target), this)  
+  implicit def unwrap[W](wrapper: Wrapper[W]) = wrapper.unwrap
+
+  def print() = {
+    println(builder)
+    this
+  }
+
+  def build(context: DSL, block: => Unit) {
+    stack.push(context)
+    block
+    stack.pop()
+  }
+
+  def from(uri: String) = new SRouteType(builder.from(uri), this)
+
+  def choice = stack.top.choice
+  def -->(uris: String*) = stack.top.to(uris: _*)
+  def to(uris: String*) = stack.top.to(uris: _*)
+  def when(filter: Exchange => Boolean) = stack.top.when(filter)
+  def as[Target](toType: Class[Target]) = stack.top.as(toType)
+  def recipients(expression: Exchange => Any) = 
stack.top.recipients(expression)
+  def splitter(expression: Exchange => Any) = stack.top.splitter(expression)
+  def otherwise = stack.top.otherwise
+  def multicast = stack.top.multicast
+  def process(function: Exchange => Unit) = stack.top.process(function)
+  def throttle(frequency: Frequency) = stack.top.throttle(frequency)
+  def loadbalance = stack.top.loadbalance
+  def delay(delay: Period) = stack.top.delay(delay)
+  def resequence(expression: Exchange => Any) = 
stack.top.resequence(expression)
+
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilderSupport.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilderSupport.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilderSupport.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilderSupport.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,23 @@
+/**
+ * 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.builder;
+
+trait RouteBuilderSupport {
+
+  implicit def scalaToJavaBuilder(scalaBuilder: RouteBuilder) = 
scalaBuilder.builder
+
+}

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,8 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
 
-import org.apache.camel.scala.ScalaTestSupport
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 class BasicRouteBuilderTest extends ScalaTestSupport {
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
  
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 class ContentBasedRouterTest extends ScalaTestSupport {
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
  
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 class ContentEnricherTest extends ScalaTestSupport {
   

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/DelayerTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/DelayerTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/DelayerTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/DelayerTest.scala
 Fri Jul 18 00:26:01 2008
@@ -17,7 +17,7 @@
 package org.apache.camel.scala.dsl;
  
 import org.w3c.dom.Document
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 /**
  * Test case for message delayer

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExplicitMulticastTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExplicitMulticastTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExplicitMulticastTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExplicitMulticastTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
  
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 class ExplicitMulticastTest extends ScalaTestSupport {
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
  
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 class FilterRouteBuilderTest extends ScalaTestSupport {
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/LoadBalancerTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/LoadBalancerTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/LoadBalancerTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/LoadBalancerTest.scala
 Fri Jul 18 00:26:01 2008
@@ -17,7 +17,7 @@
 package org.apache.camel.scala.dsl;
  
 import org.w3c.dom.Document
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 /**
  * Test case for message load balancer

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
  
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 class PipelineAndMulticastTest extends ScalaTestSupport {
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
 
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
  
 class PipelineRouteBuilderTest extends ScalaTestSupport {
 

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RecipientListRouteTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RecipientListRouteTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RecipientListRouteTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RecipientListRouteTest.scala
 Fri Jul 18 00:26:01 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.scala.dsl;
 
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 import scala.test.{Adult, Toddler, Envelope}
  
 class RecipientListRouteTest extends ScalaTestSupport {

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ResequencerTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ResequencerTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ResequencerTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ResequencerTest.scala
 Fri Jul 18 00:26:01 2008
@@ -17,7 +17,7 @@
 package org.apache.camel.scala.dsl;
  
 import org.w3c.dom.Document
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 /**
  * Test case for message resequencer

Added: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RichTestUri.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RichTestUri.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RichTestUri.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RichTestUri.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,34 @@
+/**
+ * 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 org.apache.camel.component.mock.MockEndpoint
+
+class RichTestUri(uri: String, support: ScalaTestSupport) {
+
+  def !(messages: Any*) = {
+    messages.foreach(support.getTemplate().sendBody(uri, _))
+  }
+
+  def expect(block: MockEndpoint => Unit) = {
+    val mock = support.mock(uri)
+    block(mock)
+  }
+
+  def assert() = support.mock(uri).assertIsSatisfied()
+
+}

Added: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ScalaTestSupport.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ScalaTestSupport.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ScalaTestSupport.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ScalaTestSupport.scala
 Fri Jul 18 00:26:01 2008
@@ -0,0 +1,60 @@
+/**
+ * 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 org.apache.camel.ContextTestSupport
+import org.apache.camel.component.mock.MockEndpoint
+import builder.{RouteBuilder,RouteBuilderSupport}
+import org.apache.camel.scala.dsl._
+import _root_.scala.collection.mutable.ArrayBuffer
+
+abstract class ScalaTestSupport extends ContextTestSupport with 
RouteBuilderSupport with Preamble {
+  
+  implicit def stringToUri(uri:String) = new RichTestUri(uri, this)
+  implicit def mockWrapper(endpoint: MockEndpoint) = new 
RichMockEndpoint(endpoint)
+  val endpoints = new ArrayBuffer[MockEndpoint]()
+
+  def assert(uri: String) = getMockEndpoint(uri).assertIsSatisfied
+
+  protected[scala] def getTemplate() = template
+
+  protected[scala] def mock(uri: String) = {
+    val mock = getMockEndpoint(uri)
+    endpoints += mock
+    mock
+  }
+
+  def in(message: Any) : Exchange = {
+    val exchange = createExchangeWithBody(message)
+    println(exchange)
+    exchange
+  }
+  
+  val builder : RouteBuilder
+  
+  override protected def createRouteBuilder = builder.print
+  
+  override def setUp = {
+    super.setUp
+    endpoints.foreach(_.reset())
+  }
+  
+  def test(block : => Unit) = {
+    block
+    endpoints.foreach(_.assertIsSatisfied)
+  }
+}

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SplitterRouteBuilderTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SplitterRouteBuilderTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SplitterRouteBuilderTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SplitterRouteBuilderTest.scala
 Fri Jul 18 00:26:01 2008
@@ -18,7 +18,7 @@
  
 import org.w3c.dom.Document
 import languages.XPath
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 /**
  * Test case for Splitter

Modified: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ThrottlerTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ThrottlerTest.scala?rev=677842&r1=677841&r2=677842&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ThrottlerTest.scala
 (original)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ThrottlerTest.scala
 Fri Jul 18 00:26:01 2008
@@ -17,7 +17,7 @@
 package org.apache.camel.scala.dsl;
  
 import org.w3c.dom.Document
-import scala.builder.RouteBuilder
+import scala.dsl.builder.RouteBuilder
 
 /**
  * Test case for message throttler

Added: 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/builder/RouteBuilderUnwrapTest.scala
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/builder/RouteBuilderUnwrapTest.scala?rev=677842&view=auto
==============================================================================
--- 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/builder/RouteBuilderUnwrapTest.scala
 (added)
+++ 
activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/builder/RouteBuilderUnwrapTest.scala
 Fri Jul 18 00:26:01 2008
@@ -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.builder;
+ 
+import org.apache.camel.scala.dsl.Wrapper
+import org.apache.camel.scala.test.{Person,Adult}
+import junit.framework.TestCase
+import junit.framework.Assert._
+
+class RouteBuilderUnwrapTest extends TestCase {
+
+  def builder = new RouteBuilder {
+    
+    val person = new PersonWrapper
+    
+    def testUnwrap = {
+      //access the wrapper
+      assertEquals("Apache Camel", person.vote)
+      
+      //unwrap when necessary
+      assertTrue(person.canVote)
+    }
+    
+  }
+
+  
+  def testUnwrapWhenNecessary() = builder.testUnwrap
+  
+  class PersonWrapper extends Wrapper[Person] {
+    
+    val person = new Adult("Gert")
+    val unwrap = person
+    
+    def vote = "Apache Camel"
+    
+  }
+  
+}


Reply via email to