CAMEL-6098: Add script to scala DSL. Polished Scala
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6a8219af Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6a8219af Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6a8219af Branch: refs/heads/master Commit: 6a8219af11b509a07262d5206223e2c8922c4f07 Parents: 99380c6 Author: Claus Ibsen <davscl...@apache.org> Authored: Sat Jul 11 12:53:57 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sat Jul 11 12:53:57 2015 +0200 ---------------------------------------------------------------------- .../org/apache/camel/scala/RichExchange.scala | 2 - .../org/apache/camel/scala/ScalaPredicate.scala | 1 - .../scala/org/apache/camel/scala/dsl/DSL.scala | 1 + .../camel/scala/dsl/SAbstractDefinition.scala | 1 + .../scala/dsl/SAggregateDefinition.scala.orig | 72 -------------------- .../scala/dsl/SOnExceptionDefinition.scala | 2 - .../camel/scala/dsl/SThreadsDefinition.scala | 1 - .../camel/scala/dsl/builder/RouteBuilder.scala | 3 +- .../apache/camel/scala/dsl/SScriptTest.scala | 38 +++++++++++ 9 files changed, 41 insertions(+), 80 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/RichExchange.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/RichExchange.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/RichExchange.scala index e908e39..0a280b0 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/RichExchange.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/RichExchange.scala @@ -19,8 +19,6 @@ package scala import reflect.{ClassTag, classTag} import org.apache.camel.spi.{UnitOfWork, Synchronization} -import org.apache.camel.{ExchangePattern, Message, Endpoint, Exchange} -import java.lang.{String, Class} /** * Rich wrapper for Camel's Exchange implementations http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala index e461a25..f7a7aa6 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaPredicate.scala @@ -18,7 +18,6 @@ package org.apache.camel package scala import dsl.languages.LanguageFunction -import org.apache.camel.Predicate import org.apache.camel.util.ObjectHelper._ class ScalaPredicate(function: Exchange => Any) extends Predicate { http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala index b88cd9a..ea74588 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/DSL.scala @@ -89,6 +89,7 @@ trait DSL { def routingSlip(header: String, separator: String) : DSL def routingSlip(expression: Exchange => Any) : DSL + def script(expression: Exchange => Any) : DSL def setBody(expression: Exchange => Any) : DSL def setFaultBody(expression: Exchange => Any) : DSL def setHeader(header: String, expression: Exchange => Any) : DSL http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala index ca9afc3..4f2f33c 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAbstractDefinition.scala @@ -134,6 +134,7 @@ abstract class SAbstractDefinition[P <: ProcessorDefinition[_]] extends DSL with def routingSlip(expression: Exchange => Any, separator: String) = wrap(target.routingSlip(expression, separator)) def routingSlip(expression: Exchange => Any) = wrap(target.routingSlip(expression)) + def script(expression: Exchange => Any) = wrap(target.script(expression)) def setBody(expression: Exchange => Any) = wrap(target.setBody(expression)) def setFaultBody(expression: Exchange => Any) = wrap(target.setFaultBody(expression)) def setHeader(name: String, expression: Exchange => Any) = wrap(target.setHeader(name, expression)) http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAggregateDefinition.scala.orig ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAggregateDefinition.scala.orig b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAggregateDefinition.scala.orig deleted file mode 100644 index 1e7b5d5..0000000 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SAggregateDefinition.scala.orig +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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 java.util.concurrent.ExecutorService -import java.util.concurrent.ScheduledExecutorService -import org.apache.camel.model.AggregateDefinition -import org.apache.camel.processor.aggregate.AggregationStrategy -import org.apache.camel.scala.dsl.builder.RouteBuilder -import org.apache.camel.Exchange -import org.apache.camel.scala.Period - -/** - * Scala wrapper for Camel AggregateDefinition - */ -case class SAggregateDefinition(override val target: AggregateDefinition)(implicit val builder: RouteBuilder) extends SAbstractDefinition[AggregateDefinition] { - - def strategy(function: (Exchange, Exchange) => Exchange) = { - target.setAggregationStrategy( - new AggregationStrategy() { - def aggregate(oldExchange: Exchange, newExchange: Exchange) = function(oldExchange, newExchange) - } - ) - this - } - - def strategy(strategy: AggregationStrategy) = wrap(target.setAggregationStrategy(strategy)) - - def aggregationRepositoryRef(ref: String) = wrap(target.setAggregationRepositoryRef(ref)) - def strategyRef(ref: String) = wrap(target.setStrategyRef(ref)) - - def completionSize(count: Int) = wrap(target.completionSize(count)) - def completionTimeout(period: Period) = wrap(target.setCompletionTimeout(period.milliseconds)) - def completionInterval(period: Period) = - wrap(target.setCompletionInterval(period.milliseconds)) - - def closeCorrelationKeyOnCompletion(count: Int) = wrap(target.setCloseCorrelationKeyOnCompletion(count)) - def parallelProcessing = wrap(target.parallelProcessing) - def completionFromBatchConsumer = wrap(target.completionFromBatchConsumer) - def eagerCheckCompletion = wrap(target.eagerCheckCompletion) - def ignoreInvalidCorrelationKeys = wrap(target.ignoreInvalidCorrelationKeys) - def groupExchanges = wrap(target.groupExchanges) - - def discardOnCompletionTimeout = wrap(target.discardOnCompletionTimeout) - def forceCompletionOnStop = wrap(target.forceCompletionOnStop()) - def timeoutCheckerExecutorService(executorService: ScheduledExecutorService) - = wrap(target.setTimeoutCheckerExecutorService(executorService)) - def executorService(executorService: ExecutorService) = wrap(target.setExecutorService(executorService)) - def executorServiceRef(ref: String) = wrap(target.setExecutorServiceRef(ref)) - - def completionPredicate(filter: Exchange => Any) { - // uses implicit conversion - val predicate = filter - target.completionPredicate(predicate) - } - - override def wrap(block: => Unit) = super.wrap(block).asInstanceOf[SAggregateDefinition] -} http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnExceptionDefinition.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnExceptionDefinition.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnExceptionDefinition.scala index a6acc08..1a5c8aa 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnExceptionDefinition.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SOnExceptionDefinition.scala @@ -17,11 +17,9 @@ package org.apache.camel package scala.dsl -import org.apache.camel.LoggingLevel import org.apache.camel.model.OnExceptionDefinition import org.apache.camel.scala.ScalaProcessor import org.apache.camel.scala.dsl.builder.RouteBuilder -import org.apache.camel.Exchange /** * Scala enrichment for Camel's OnExceptionDefinition http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThreadsDefinition.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThreadsDefinition.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThreadsDefinition.scala index c8fd61b..037d56e 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThreadsDefinition.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/SThreadsDefinition.scala @@ -22,7 +22,6 @@ import builder.RouteBuilder import org.apache.camel.ThreadPoolRejectedPolicy import org.apache.camel.model.ThreadsDefinition - /** * Scala enrichment for Camel's ThreadsDefinition */ http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala index 7bacb82..3b5d8f1 100644 --- a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala +++ b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala @@ -19,7 +19,6 @@ package scala package dsl.builder import org.apache.camel.model.DataFormatDefinition -import org.apache.camel.{Exchange, RoutesBuilder} import org.apache.camel.builder.{LoggingErrorHandlerBuilder, DeadLetterChannelBuilder, ErrorHandlerBuilder} import org.apache.camel.spi.Policy @@ -30,7 +29,6 @@ import reflect.{ClassTag, classTag} import org.apache.camel.scala.dsl._ import org.apache.camel.scala.dsl.languages.Languages -import java.lang.String import java.util.Comparator import org.slf4j.{Logger, LoggerFactory} @@ -185,6 +183,7 @@ class RouteBuilder extends Preamble with DSL with RoutesBuilder with Languages w def routingSlip(header: String, separator: String) = stack.top.routingSlip(header, separator) def routingSlip(expression: Exchange => Any) = stack.top.routingSlip(expression) + def script(expression: Exchange => Any) = stack.top.script(expression) def setBody(expression : Exchange => Any) = stack.top.setBody(expression) def setFaultBody(expression: Exchange => Any) = stack.top.setFaultBody(expression) def setHeader(name: String, expression: Exchange => Any) = stack.top.setHeader(name, expression) http://git-wip-us.apache.org/repos/asf/camel/blob/6a8219af/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SScriptTest.scala ---------------------------------------------------------------------- diff --git a/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SScriptTest.scala b/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SScriptTest.scala new file mode 100644 index 0000000..c350b89 --- /dev/null +++ b/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/SScriptTest.scala @@ -0,0 +1,38 @@ +/** + * 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.scala.dsl.builder.RouteBuilder +import org.junit.Test +import org.scalatest.MustMatchers + +class SScriptTest extends ScalaTestSupport with MustMatchers{ + + @Test + def testRequestBody { + "direct:start" !? "Hello" must equal("Hello") + } + + val builder = + new RouteBuilder { + //START SNIPPET: simple + "direct:start" script(_.in[String] + " World!") + //END SNIPPET: block + } + + +}