You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ge...@apache.org on 2009/06/04 16:21:48 UTC

svn commit: r781747 - in /camel/trunk/components/camel-scala/src: main/scala/org/apache/camel/scala/dsl/ main/scala/org/apache/camel/scala/dsl/builder/ test/scala/org/apache/camel/scala/dsl/

Author: gertv
Date: Thu Jun  4 14:21:47 2009
New Revision: 781747

URL: http://svn.apache.org/viewvc?rev=781747&view=rev
Log:
CAMEL-463: Adding support for onCompletion clause

Added:
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/Config.scala
      - copied, changed from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnCompletionDefinition.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionGlobalTest.scala
      - copied, changed from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnCompleteOnlyTest.scala
      - copied, changed from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnFailureOnlyTest.scala
      - copied, changed from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionWhenTest.scala
      - copied, changed from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
Modified:
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExceptionHandlerTest.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RollbackTest.scala
    camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/TryCatchFinallyTest.scala

Copied: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/Config.scala (from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/Config.scala?p2=camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/Config.scala&p1=camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala&r1=781745&r2=781747&rev=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/Config.scala Thu Jun  4 14:21:47 2009
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.scala.dsl;
+package org.apache.camel.scala.dsl
 
-import org.apache.camel.model.RouteDefinition
-import org.apache.camel.scala.dsl.builder.RouteBuilder
+/**
+ * Generic trait to represent a configuration that can be applied to a target
+ */
+trait Config[T] {
 
-case class SRouteDefinition(override val target: RouteDefinition, val builder: RouteBuilder) extends SAbstractDefinition[RouteDefinition] {
- 
-  def ==> : SRouteDefinition = this
+  def configure(target: T)
 
-}
+}
\ No newline at end of file

Modified: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala Thu Jun  4 14:21:47 2009
@@ -40,9 +40,13 @@
   def loop(expression: Exchange => Any) : SLoopDefinition
   def marshal(format : DataFormatDefinition) : DSL
   def multicast : SMulticastDefinition
-  def otherwise : DSL
+  def otherwise : DSL with Block
+  def onCompletion : SOnCompletionDefinition
+  def onCompletion(predicate: Exchange => Boolean) : SOnCompletionDefinition
+  def onCompletion(config: Config[SOnCompletionDefinition]) : SOnCompletionDefinition
   def policy(policy: Policy) : DSL
   def process(function: Exchange => Unit) : DSL
+  def process(processor: Processor) : DSL
   def recipients(expression: Exchange => Any) : DSL
   def resequence(expression: Exchange => Any) : SResequenceDefinition
   def rollback : DSL
@@ -52,7 +56,7 @@
   def throttle(frequency: Frequency) : SThrottleDefinition
   def to(uris: String*) : DSL
   def unmarshal(format: DataFormatDefinition) : DSL
-  def when(filter: Exchange => Boolean) : SChoiceDefinition
+  def when(filter: Exchange => Boolean) : DSL with Block
   
   def wiretap(uri: String) : DSL
   def wiretap(uri: String, expression: Exchange => Any) : DSL

Modified: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala Thu Jun  4 14:21:47 2009
@@ -31,6 +31,7 @@
   val unwrap = target
   implicit val builder: RouteBuilder
   implicit def expressionBuilder(expression: Exchange => Any) = new ScalaExpression(expression)
+  implicit def predicateBuilder(predicate: Exchange => Boolean) = new ScalaPredicate(predicate)
   
   def -->(uris: String*) = to(uris:_*)
   def to(uris: String*) = {
@@ -44,7 +45,7 @@
     this
   }
   
-  def when(filter: Exchange => Boolean) : SChoiceDefinition = SChoiceDefinition(target.choice).when(filter)
+  def when(filter: Exchange => Boolean) : DSL with Block = SChoiceDefinition(target.choice).when(filter)
     
   def as[Target](toType: Class[Target]) = wrap(target.convertBodyTo(toType))
   
@@ -82,6 +83,7 @@
   def multicast = SMulticastDefinition(target.multicast)
   
   def process(function: Exchange => Unit) = wrap(target.process(new ScalaProcessor(function)))
+  def process(processor: Processor) = wrap(target.process(processor))
  
   def throttle(frequency: Frequency) = SThrottleDefinition(target.throttle(frequency.count).timePeriodMillis(frequency.period.milliseconds))
   
@@ -89,6 +91,19 @@
   
   def delay(period: Period) = SDelayDefinition(target.delay(period.milliseconds))
   
+  def onCompletion : SOnCompletionDefinition = {
+    var completion = SOnCompletionDefinition(target.onCompletion)
+    // let's end the block in the Java DSL, we have a better way of handling blocks here
+    completion.target.end
+    completion
+  }
+  def onCompletion(predicate: Exchange => Boolean) = onCompletion().when(predicate).asInstanceOf[SOnCompletionDefinition]
+  def onCompletion(config: Config[SOnCompletionDefinition]) = {
+    val completion = onCompletion().asInstanceOf[SOnCompletionDefinition]
+    config.configure(completion)
+    completion
+  }
+  
   def policy(policy: Policy) = wrap(target.policy(policy))
 
   def recipients(expression: Exchange => Any) = wrap(target.recipientList(expression))

Added: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnCompletionDefinition.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnCompletionDefinition.scala?rev=781747&view=auto
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnCompletionDefinition.scala (added)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnCompletionDefinition.scala Thu Jun  4 14:21:47 2009
@@ -0,0 +1,37 @@
+package org.apache.camel.scala.dsl
+
+import model.{WhenDefinition,OnCompletionDefinition}
+import org.apache.camel.scala.dsl.builder.RouteBuilder;
+
+case class SOnCompletionDefinition(override val target : OnCompletionDefinition)(implicit val builder : RouteBuilder) extends SAbstractDefinition[OnCompletionDefinition] {
+
+  import org.apache.camel.scala.dsl.SOnCompletionDefinition.{Strategy,FailureOnly}
+
+  override def when(predicate : Exchange => Boolean) : SOnCompletionDefinition = 
+    wrap(target.setOnWhen(new WhenDefinition(new ScalaPredicate(predicate))))
+
+  def strategy(strategy : Strategy) : SOnCompletionDefinition = {
+    strategy.applyTo(target)
+    this
+  }
+
+  def onFailureOnly = wrap(target.onFailureOnly)
+  def onCompleteOnly = wrap(target.onCompleteOnly)
+
+  override def wrap(block: => Unit) = super.wrap(block).asInstanceOf[SOnCompletionDefinition]
+
+}
+
+object SOnCompletionDefinition {
+  
+  abstract class Strategy {
+    def applyTo(target: OnCompletionDefinition)
+  }
+  case class FailureOnly extends Strategy {
+    def applyTo(target: OnCompletionDefinition) : Unit = target.onFailureOnly
+  }
+  case class CompleteOnly extends Strategy {
+    def applyTo(target: OnCompletionDefinition) : Unit = target.onCompleteOnly
+  }
+
+}

Modified: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala Thu Jun  4 14:21:47 2009
@@ -21,6 +21,6 @@
 
 case class SRouteDefinition(override val target: RouteDefinition, val builder: RouteBuilder) extends SAbstractDefinition[RouteDefinition] {
  
-  def ==> : SRouteDefinition = this
+  def ==> (block: => Unit) : SRouteDefinition = this.apply(block).asInstanceOf[SRouteDefinition]
 
 }

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=781747&r1=781746&r2=781747&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 Thu Jun  4 14:21:47 2009
@@ -66,6 +66,7 @@
   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)
@@ -82,12 +83,22 @@
   def otherwise = stack.top.otherwise
   def marshal(format: DataFormatDefinition) = stack.top.marshal(format)
   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 enrich(uri: String, strategy: AggregationStrategy) = stack.top.enrich(uri, strategy)
+  def onCompletion = {
+    stack.size match {
+      case 0 => SOnCompletionDefinition(builder.onCompletion)(this)
+      case _ => stack.top.onCompletion;
+    }
+  }
+  def onCompletion(predicate: Exchange => Boolean) = stack.top.onCompletion(predicate)
+  def onCompletion(config: Config[SOnCompletionDefinition]) = stack.top.onCompletion(config)
   def policy(policy: Policy) = stack.top.policy(policy)
+  def process(function: Exchange => Unit) = stack.top.process(function)
+  def process(processor: Processor) = stack.top.process(processor)
   def resequence(expression: Exchange => Any) = stack.top.resequence(expression)
   def rollback = stack.top.rollback
   def setbody(expression : Exchange => Any) = stack.top.setbody(expression)
@@ -103,4 +114,13 @@
   def setContext(context: CamelContext) = builder.setContext(context)
   
   val serialization = new org.apache.camel.model.dataformat.SerializationDataFormat
+
+  val failureOnly = new Config[SOnCompletionDefinition] {
+    def configure(target: SOnCompletionDefinition) = target.onFailureOnly()
+  }
+
+  val completeOnly = new Config[SOnCompletionDefinition] {
+    def configure(target: SOnCompletionDefinition) = target.onCompleteOnly()
+  }
+
 }

Modified: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentEnricherTest.scala Thu Jun  4 14:21:47 2009
@@ -50,15 +50,15 @@
     // END SNIPPET: simple
     
     // START SNIPPET: def
-    "direct:b" process(myProcessor) to ("mock:b")
-    
-    def myProcessor(exchange: Exchange) = {
+    val myProcessor = (exchange: Exchange) => {
       exchange.in match {
         case "hello" => exchange.in = "hello from the UK"
         case "hallo" => exchange.in = "hallo vanuit Belgie"
         case "bonjour" => exchange.in = "bonjour de la douce France"
       }
-    }
+    }    
+
+    "direct:b" process(myProcessor) to ("mock:b")
     // END SNIPPET: def
     
     // START SNIPPET: velocity

Modified: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExceptionHandlerTest.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExceptionHandlerTest.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExceptionHandlerTest.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ExceptionHandlerTest.scala Thu Jun  4 14:21:47 2009
@@ -35,12 +35,12 @@
       test {
        "direct:a" ! ("any given message", 'Symbol, 256)
       }
-    }catch { case _ => System.out.println("get the exception here")}
+    } catch { case _ => System.out.println("get the exception here")}
   }
 
   val builder =
     new RouteBuilder {
-       def failingProcessor(exchange: Exchange) = {
+       val failingProcessor = (exchange: Exchange) => {
          exchange.in match {
            case text: String => //graciously do nothing
            case symbol: Symbol => throw new UnsupportedOperationException("We don't know how to deal with this symbolically correct")
@@ -48,7 +48,7 @@
          }
        }
 
-       def catchProcessor(exchange: Exchange) = {
+       val catchProcessor = (exchange: Exchange) => {
           // we shouldn't get any Strings here
           assertFalse(exchange.getIn().getBody().getClass().equals(classOf[String]))
           // the exchange shouldn't have been marked failed

Modified: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RollbackTest.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RollbackTest.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RollbackTest.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/RollbackTest.scala Thu Jun  4 14:21:47 2009
@@ -58,7 +58,7 @@
   val builder =
     new RouteBuilder {
        //START SNIPPET: simple
-       "direct:a" to("mock:a") when(_.in != "Batman") rollback
+       "direct:a" to("mock:a") when(_.in != "Batman") rollback;
        //END SNIPPET: simple
       
        //START SNIPPET: block

Copied: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionGlobalTest.scala (from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionGlobalTest.scala?p2=camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionGlobalTest.scala&p1=camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala&r1=781745&r2=781747&rev=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionGlobalTest.scala Thu Jun  4 14:21:47 2009
@@ -16,11 +16,18 @@
  */
 package org.apache.camel.scala.dsl;
 
-import org.apache.camel.model.RouteDefinition
-import org.apache.camel.scala.dsl.builder.RouteBuilder
+import org.apache.camel.processor.OnCompletionGlobalTest
+import org.apache.camel.processor.OnCompletionGlobalTest.MyProcessor
+import org.apache.camel.scala.dsl.builder.{RouteBuilderSupport, RouteBuilder}
 
-case class SRouteDefinition(override val target: RouteDefinition, val builder: RouteBuilder) extends SAbstractDefinition[RouteDefinition] {
- 
-  def ==> : SRouteDefinition = this
+class SOnCompletionGlobalTest extends OnCompletionGlobalTest with RouteBuilderSupport {
 
-}
+  override def createRouteBuilder = new RouteBuilder {
+
+    onCompletion to "mock:sync"
+
+    "direct:start" process (new MyProcessor()) to ("mock:result")
+
+  }
+
+}
\ No newline at end of file

Copied: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnCompleteOnlyTest.scala (from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnCompleteOnlyTest.scala?p2=camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnCompleteOnlyTest.scala&p1=camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala&r1=781745&r2=781747&rev=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnCompleteOnlyTest.scala Thu Jun  4 14:21:47 2009
@@ -16,11 +16,23 @@
  */
 package org.apache.camel.scala.dsl;
 
-import org.apache.camel.model.RouteDefinition
-import org.apache.camel.scala.dsl.builder.RouteBuilder
+import dsl.SOnCompletionDefinition.CompleteOnly
+import org.apache.camel.processor.OnCompletionGlobalTest.MyProcessor
+import org.apache.camel.scala.dsl.builder.{RouteBuilderSupport, RouteBuilder}
+import processor.OnCompletionOnCompleteOnlyTest
 
-case class SRouteDefinition(override val target: RouteDefinition, val builder: RouteBuilder) extends SAbstractDefinition[RouteDefinition] {
- 
-  def ==> : SRouteDefinition = this
+class SOnCompletionOnCompleteOnlyTest extends OnCompletionOnCompleteOnlyTest with RouteBuilderSupport {
+
+  override def createRouteBuilder = new RouteBuilder {
+
+    "direct:start" ==> {
+      onCompletion(completeOnly) {
+        to("mock:sync")
+      }
+      process(new MyProcessor())
+      to("mock:result")
+    }
+
+  }
 
 }

Copied: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnFailureOnlyTest.scala (from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnFailureOnlyTest.scala?p2=camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnFailureOnlyTest.scala&p1=camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala&r1=781745&r2=781747&rev=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionOnFailureOnlyTest.scala Thu Jun  4 14:21:47 2009
@@ -16,11 +16,24 @@
  */
 package org.apache.camel.scala.dsl;
 
-import org.apache.camel.model.RouteDefinition
-import org.apache.camel.scala.dsl.builder.RouteBuilder
+import dsl.SOnCompletionDefinition.{FailureOnly}
+import org.apache.camel.processor.OnCompletionGlobalTest.MyProcessor
+import org.apache.camel.scala.dsl.builder.{RouteBuilderSupport, RouteBuilder}
+import processor.OnCompletionOnFailureOnlyTest
 
-case class SRouteDefinition(override val target: RouteDefinition, val builder: RouteBuilder) extends SAbstractDefinition[RouteDefinition] {
- 
-  def ==> : SRouteDefinition = this
+class SOnCompletionOnFailureOnlyTest extends OnCompletionOnFailureOnlyTest with RouteBuilderSupport {
+
+  override def createRouteBuilder = new RouteBuilder {
+
+    "direct:start" ==> {
+      onCompletion(failureOnly) {
+        to("mock:sync")
+      }
+      process(new MyProcessor())
+      to("mock:result")
+    }
+
+    def containsHello(exchange: Exchange) = exchange.getIn().getBody(classOf[String]).contains("Hello");
+  }
 
 }

Copied: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionWhenTest.scala (from r781745, camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionWhenTest.scala?p2=camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionWhenTest.scala&p1=camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala&r1=781745&r2=781747&rev=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SRouteDefinition.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SOnCompletionWhenTest.scala Thu Jun  4 14:21:47 2009
@@ -16,11 +16,23 @@
  */
 package org.apache.camel.scala.dsl;
 
-import org.apache.camel.model.RouteDefinition
-import org.apache.camel.scala.dsl.builder.RouteBuilder
+import org.apache.camel.processor.OnCompletionGlobalTest.MyProcessor
+import org.apache.camel.scala.dsl.builder.{RouteBuilderSupport, RouteBuilder}
+import processor.OnCompletionWhenTest
+import reflect.Manifest
 
-case class SRouteDefinition(override val target: RouteDefinition, val builder: RouteBuilder) extends SAbstractDefinition[RouteDefinition] {
- 
-  def ==> : SRouteDefinition = this
+class SOnCompletionWhenTest extends OnCompletionWhenTest with RouteBuilderSupport {
 
-}
+  override def createRouteBuilder = new RouteBuilder {
+
+    "direct:start" ==> {
+      onCompletion(containsHello(_)) {
+        to("mock:sync")
+      }
+      to("mock:result")
+    }
+
+    def containsHello(exchange: Exchange) = exchange.getIn().getBody(classOf[String]).contains("Hello");
+  }
+
+}
\ No newline at end of file

Modified: camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/TryCatchFinallyTest.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/TryCatchFinallyTest.scala?rev=781747&r1=781746&r2=781747&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/TryCatchFinallyTest.scala (original)
+++ camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/TryCatchFinallyTest.scala Thu Jun  4 14:21:47 2009
@@ -38,14 +38,14 @@
     
   val builder =
     new RouteBuilder {
-       def failingProcessor(exchange: Exchange) = {
+       val failingProcessor = (exchange: Exchange) => {
          exchange.in match {
            case text: String => //graciously do nothing
            case _ => throw new RuntimeException("Strings are good, the rest is bad")
          }
        }
        
-       def catchProcessor(exchange: Exchange) = {
+       val catchProcessor = (exchange: Exchange) => {
           // we shouldn't get any Strings here
           assertFalse(exchange.getIn().getBody().getClass().equals(classOf[String]))
           // the exchange shouldn't have been marked failed