Return-Path: Delivered-To: apmail-activemq-camel-commits-archive@locus.apache.org Received: (qmail 30854 invoked from network); 4 Apr 2008 16:17:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Apr 2008 16:17:50 -0000 Received: (qmail 80999 invoked by uid 500); 4 Apr 2008 16:17:51 -0000 Delivered-To: apmail-activemq-camel-commits-archive@activemq.apache.org Received: (qmail 80961 invoked by uid 500); 4 Apr 2008 16:17:50 -0000 Mailing-List: contact camel-commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: camel-dev@activemq.apache.org Delivered-To: mailing list camel-commits@activemq.apache.org Received: (qmail 80951 invoked by uid 99); 4 Apr 2008 16:17:50 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Apr 2008 09:17:50 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Apr 2008 16:17:05 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4ADD41A981A; Fri, 4 Apr 2008 09:17:16 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r644754 - in /activemq/camel/trunk/components: ./ camel-scala/ camel-scala/src/ camel-scala/src/main/ camel-scala/src/main/scala/ camel-scala/src/main/scala/org/ camel-scala/src/main/scala/org/apache/ camel-scala/src/main/scala/org/apache/c... Date: Fri, 04 Apr 2008 16:17:13 -0000 To: camel-commits@activemq.apache.org From: jstrachan@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080404161718.4ADD41A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jstrachan Date: Fri Apr 4 09:17:00 2008 New Revision: 644754 URL: http://svn.apache.org/viewvc?rev=644754&view=rev Log: applied patch https://issues.apache.org/activemq/browse/CAMEL-419 with huge thanks - this is awesome! :) Added: activemq/camel/trunk/components/camel-scala/ activemq/camel/trunk/components/camel-scala/pom.xml (with props) activemq/camel/trunk/components/camel-scala/src/ activemq/camel/trunk/components/camel-scala/src/main/ activemq/camel/trunk/components/camel-scala/src/main/scala/ activemq/camel/trunk/components/camel-scala/src/main/scala/org/ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichChoice.scala activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichExchange.scala activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichProcessor.scala activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichUriString.scala activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilder.scala activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilderSupport.scala activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/WhenPredicate.scala activemq/camel/trunk/components/camel-scala/src/test/ activemq/camel/trunk/components/camel-scala/src/test/scala/ activemq/camel/trunk/components/camel-scala/src/test/scala/org/ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichMockEndpoint.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/dsl/ 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/FilterRouteBuilderTest.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 Modified: activemq/camel/trunk/components/pom.xml Added: activemq/camel/trunk/components/camel-scala/pom.xml URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/pom.xml?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/pom.xml (added) +++ activemq/camel/trunk/components/camel-scala/pom.xml Fri Apr 4 09:17:00 2008 @@ -0,0 +1,100 @@ + + + 4.0.0 + + org.apache.camel + camel-parent + 1.3-SNAPSHOT + + camel-scala + bundle + Camel :: Scala + Camel Scala DSL + + + org.apache.camel.scala.* + + + + + scala-tools.org + Scala-tools Maven2 Repository + http://scala-tools.org/repo-releases + + + + + scala-tools.org + Scala-tools Maven2 Repository + http://scala-tools.org/repo-releases + + + + + src/main/scala + src/test/scala + + + org.scala-tools + maven-scala-plugin + + + + compile + testCompile + + + + + 2.7.0 + + + + org.apache.maven.plugins + maven-eclipse-plugin + + + ch.epfl.lamp.sdt.core.scalanature + org.eclipse.jdt.core.javanature + + + ch.epfl.lamp.sdt.core.scalabuilder + + + ch.epfl.lamp.sdt.launching.SCALA_CONTAINER + org.eclipse.jdt.launching.JRE_CONTAINER + + + + + + + + + org.apache.camel + camel-core + + + org.scala-lang + scala-library + 2.7.0 + + + + org.apache.camel + camel-core + test-jar + test + + + junit + junit + test + + + org.slf4j + slf4j-log4j12 + 1.4.3 + + + Propchange: activemq/camel/trunk/components/camel-scala/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichChoice.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichChoice.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichChoice.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichChoice.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,29 @@ +package org.apache.camel.scala.dsl; + +import org.apache.camel.model.ChoiceType + +class RichChoiceType(val choice: ChoiceType, val builder:RouteBuilder) { + + def then(block: => Unit) : ChoiceType = { + builder.build(choice, block) + choice + } + + def when(test: Exchange => Boolean)(block: => Unit) : ChoiceType = { + choice + } + + def apply(block: => Unit) : RichChoiceType = { + builder.build(choice, block) + this + } + + def to(uri: String) = { + choice.to(uri) + } + + def otherwise(block: => Unit) = { + choice.otherwise + builder.build(choice, block) + } +} Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichExchange.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichExchange.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichExchange.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichExchange.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,19 @@ +package org.apache.camel.scala.dsl + +import org.apache.camel.Exchange + +class RichExchange(val exchange : Exchange) { + + def in : Any = exchange.getIn().getBody() + + def in(header:String) : Any = exchange.getIn().getHeader(header) + + def in(target:Class[Any]) : Any = exchange.getIn().getBody(target) + + def out : Any = exchange.getOut().getBody() + + def out(header:String) : Any = exchange.getOut().getHeader(header) + + def out_=(message:Any) = exchange.getOut().setBody(message) + +} Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichProcessor.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichProcessor.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichProcessor.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichProcessor.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,9 @@ +package org.apache.camel.scala.dsl; + +import org.apache.camel.model.ProcessorType + +class RichProcessor(processor : ProcessorType[T] forSome {type T}) { + + def -->(uri: String) = processor.to(uri) + +} Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichUriString.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichUriString.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichUriString.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RichUriString.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,30 @@ +package org.apache.camel.scala.dsl; + +import org.apache.camel.model.FilterType +import org.apache.camel.model.ProcessorType + +class RichUriString(uri:String, builder:RouteBuilder) { + + def to(targets: String*) : ProcessorType[T] forSome {type T} = { + targets.length match { + case 1 => builder.from(uri).to(targets(0)) + case _ => { + val from = builder.from(uri) + val multicast = from.multicast + for (target <- targets) multicast.to(target) + from + } + } + } + def -->(targets: String*) : ProcessorType[T] forSome {type T} = to(targets:_*) + + def ==>(block: => Unit) = { + builder.build(builder.from(uri), block) + } + + def when(filter: Exchange => Boolean) : FilterType = + builder.from(uri).filter(new WhenPredicate(filter)) + + + +} Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilder.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilder.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilder.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilder.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,68 @@ +package org.apache.camel.scala.dsl; + +import org.apache.camel.model.ProcessorType +import org.apache.camel.model.ChoiceType + +import collection.mutable.Stack + +/** + Scala RouteBuilder implementation + */ +class RouteBuilder { + + val builder = new org.apache.camel.builder.RouteBuilder { + override def configure() = {} + } + + val stack = new Stack[ProcessorType[T] forSome {type T}]; + + implicit def stringToUri(uri:String) : RichUriString = new RichUriString(uri, this) + implicit def choiceWrapper(choice: ChoiceType) = new RichChoiceType(choice, this); + implicit def processorWrapper(processor: ProcessorType[T] forSome {type T}) = new RichProcessor(processor) + implicit def exchangeWrapper(exchange: Exchange) = new RichExchange(exchange) + + def print() = { + println(builder) + this + } + + def build(context: ProcessorType[T] forSome {type T}, block: => Unit) { + stack.push(context) + block + stack.pop() + } + + def from(uri: String) = builder.from(uri) + + def -->(uris: String*) = to(uris:_*) + def to(uris: String*) = { + uris.length match { + case 1 => stack.top.to(uris(0)) + case _ => { + val multicast = stack.top.multicast + for (uri <- uris) multicast.to(uri) + stack.top + } + } + } + + var when = (filter: Exchange => Boolean) => { + val choice = stack.top match { + case c: ChoiceType => c + case _ => stack.top.choice() + } + new RichChoiceType(choice.when(new WhenPredicate(filter)), this) : RichChoiceType + } + + def choice(block: => Unit) = { + build(stack.top.choice(), block) + } + + def otherwise : ChoiceType = { + stack.top match { + case choice: ChoiceType => choice.otherwise + case _ => throw new Exception("otherwise is only supported in a choice block or after a when statement") + } + } + +} Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilderSupport.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilderSupport.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilderSupport.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/RouteBuilderSupport.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,7 @@ +package org.apache.camel.scala.dsl; + +trait RouteBuilderSupport { + + implicit def scalaToJavaBuilder(scalaBuilder: org.apache.camel.scala.dsl.RouteBuilder) = scalaBuilder.builder + +} Added: activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/WhenPredicate.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/WhenPredicate.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/WhenPredicate.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/WhenPredicate.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,15 @@ +package org.apache.camel.scala.dsl; + +import org.apache.camel.Predicate + +class WhenPredicate(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/test/scala/org/apache/camel/scala/RichMockEndpoint.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichMockEndpoint.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichMockEndpoint.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichMockEndpoint.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,14 @@ +package org.apache.camel.scala; + +import org.apache.camel.component.mock.MockEndpoint + +class RichMockEndpoint(endpoint: MockEndpoint) { + + def received(messages: AnyRef*) { + val list = new java.util.ArrayList[AnyRef](messages.length) + messages.foreach(list.add(_)) + endpoint.expectedBodiesReceived(list) + } + +} + Added: activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichTestUri.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichTestUri.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichTestUri.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/RichTestUri.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,20 @@ +package org.apache.camel.scala; + +import org.apache.camel.component.mock.MockEndpoint + +class RichTestUri(uri: String, support: ScalaTestSupport) { + + def !(messages: Any*) = { + for (message <- messages) { + support.getTemplate().sendBody(uri, message) + } + } + + 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/ScalaTestSupport.scala URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTestSupport.scala?rev=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTestSupport.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/ScalaTestSupport.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,25 @@ +package org.apache.camel.scala; + +import org.apache.camel.ContextTestSupport +import org.apache.camel.component.mock.MockEndpoint +import org.apache.camel.scala.dsl._ + +abstract class ScalaTestSupport extends ContextTestSupport with RouteBuilderSupport { + + implicit def stringToUri(uri:String) = new RichTestUri(uri, this) + implicit def mockWrapper(endpoint: MockEndpoint) = new RichMockEndpoint(endpoint) + implicit def exchangeWrapper(exchange: Exchange[T] forSome {type T}) = new RichExchange(exchange) + + def assert(uri: String) = getMockEndpoint(uri).assertIsSatisfied + + protected[scala] def getTemplate() = template + + protected[scala] def mock(uri: String) = getMockEndpoint(uri) + + def in(message: Any) : Exchange = { + val exchange = createExchangeWithBody(message) + println(exchange) + exchange + } + +} Added: 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=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/BasicRouteBuilderTest.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,24 @@ +package org.apache.camel.scala.dsl; + +import org.apache.camel.scala.ScalaTestSupport + +class BasicRouteBuilderTest extends ScalaTestSupport { + + def testBasicRouteArrowSyntax() = assertBasicRoute("direct:a", "mock:a") + def testBasicRouteTextSyntax() = assertBasicRoute("direct:b", "mock:b") + + def assertBasicRoute(from: String, to: String) = { + to expect { + _.expectedMessageCount(1) + } + from ! "" + to assert + } + + override protected def createRouteBuilder() = + new RouteBuilder { + "direct:a" --> "mock:a" + "direct:b" to "mock:b" + }.print + +} Added: 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=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/ContentBasedRouterTest.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,29 @@ +package org.apache.camel.scala.dsl; + +class ContentBasedRouterTest extends ScalaTestSupport { + + def testSimpleContentBasedRouter = { + "mock:a" expect {_.expectedMessageCount(3)} + "mock:b" expect {_.received("")} + "mock:c" expect {_.received("")} + "mock:d" expect {_.received("")} + "direct:a" ! ("", "", "") + "mock:a" assert() + "mock:b" assert() + "mock:c" assert() + "mock:d" assert() + } + + override protected def createRouteBuilder() = + new RouteBuilder { + "direct:a" ==> { + to ("mock:a") + choice { + when (_.in == "") to ("mock:b") + when (_.in == "") to ("mock:c") + otherwise to ("mock:d") + } + } + }.print + +} Added: 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=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/FilterRouteBuilderTest.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,43 @@ +package org.apache.camel.scala.dsl; + +class FilterRouteBuilderTest extends ScalaTestSupport { + + def testSimpleFilter() = { + "mock:a" expect {_.expectedMessageCount(1)} + "direct:a" ! ("", "") + "mock:a" assert + } + + def testFilterWithAlternatives() = { + "mock:b" expect {_.expectedMessageCount(1)} + "mock:b" expect {_.expectedMessageCount(1)} + "mock:d" expect {_.expectedMessageCount(2)} + "mock:e" expect {_.expectedMessageCount(0)} + "mock:f" expect {_.expectedMessageCount(2)} + "direct:b" ! ("", "") + "mock:b" assert() + "mock:c" assert() + "mock:d" assert() + "mock:e" assert() + "mock:f" assert() + } + + override protected def createRouteBuilder() = + new RouteBuilder { + "direct:a" when(_.in == "") to "mock:a" + + "direct:b" ==> { + when(_.in == "") then { + to ("mock:b") + --> ("mock:c") + } + when(_.in == "") { + to ("mock:e") + } otherwise { + to ("mock:f") + } + to ("mock:d") + } + }.print + +} Added: 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=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineAndMulticastTest.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,37 @@ +package org.apache.camel.scala.dsl; + +class PipelineAndMulticastTest extends ScalaTestSupport { + + def testArrowRoute = testRoute("direct:a", "mock:c", "mock:a", "mock:b") + def testToRoute = testRoute("direct:d", "mock:f", "mock:d", "mock:e") + def testArrowBlockRoute = testRoute("direct:g", "mock:i", "mock:g", "mock:h") + def testToBlockRoute = testRoute("direct:j", "mock:l", "mock:j", "mock:k") + + def testRoute(from: String, end: String, multis: String*) = { + multis.foreach ( _.expect { _.received("")}) + end expect { _.received("")} + + val exchange = in("") + exchange.out = "" + getTemplate().send(from, exchange) + + multis.foreach( _.assert()) + end assert() + } + + + override protected def createRouteBuilder() = + new RouteBuilder { + "direct:a" --> ("mock:a", "mock:b") --> "mock:c" + "direct:d" to ("mock:d", "mock:e") to "mock:f" + "direct:g" ==> { + --> ("mock:g", "mock:h") + --> ("mock:i") + } + "direct:j" ==> { + to ("mock:j", "mock:k") + to ("mock:l") + } + }.print + +} Added: 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=644754&view=auto ============================================================================== --- activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala (added) +++ activemq/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/PipelineRouteBuilderTest.scala Fri Apr 4 09:17:00 2008 @@ -0,0 +1,36 @@ +package org.apache.camel.scala.dsl; + +class PipelineRouteBuilderTest extends ScalaTestSupport { + + def testPipelineWithArrows() = testPipeline("direct:a", "mock:a", "mock:b") + def testPipelineWithTos() = testPipeline("direct:c", "mock:c", "mock:d") + def testPipelineBlockWithArrows() = testPipeline("direct:e", "mock:e", "mock:f") + def testPipelineBlockWithTos() = testPipeline("direct:g", "mock:g", "mock:h") + + def testPipeline(from: String, to: String*) = { + to.foreach { + _.expect { _.expectedMessageCount(1) } + } + from ! "" + to.foreach { + _.assert() + } + } + + override protected def createRouteBuilder() = + new RouteBuilder { + "direct:a" --> "mock:a" --> "mock:b" + "direct:c" to "mock:c" to "mock:d" + + "direct:e" ==> { + --> ("mock:e") + --> ("mock:f") + } + + "direct:g" ==> { + to ("mock:g") + to ("mock:h") + } + }.print + +} Modified: activemq/camel/trunk/components/pom.xml URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/pom.xml?rev=644754&r1=644753&r2=644754&view=diff ============================================================================== --- activemq/camel/trunk/components/pom.xml (original) +++ activemq/camel/trunk/components/pom.xml Fri Apr 4 09:17:00 2008 @@ -65,6 +65,7 @@ camel-rmi camel-saxon + camel-scala camel-script camel-spring camel-sql