Hi Claus, Thanks for point that out. I just did some clean up of the autoStartup DSL, now you can only setup the autoStartup as old Java DSL does.
Regards, -- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On October 26, 2014 at 11:06:57 PM, Claus Ibsen (claus.ib...@gmail.com) wrote: > -1 > > This is not as correct as autoStartup is already defined in the Java > DSL at route definition. We should not add it to processor defintion > as then its too verbose in the DSL, as it becomes visible where it > makes no sense, eg from X to Y to Z ... autoStartup... > > So remove it from processor definition and find another way to add it > to the Scala DSL. > > And btw this is also wrong > > public Type autoStartup(String autoStartup) { > + return autoStartup(Boolean.valueOf(autoStartup)); > + } > > That should use Camels property placeholder as the string is intended > as a placeholder key etc. > > > On Sun, Oct 26, 2014 at 9:51 AM, wrote: > > Repository: camel > > Updated Branches: > > refs/heads/master 34e6970f1 -> 595976d1d > > > > > > CAMEL-7961 Add autoStartup into Scala DSL with thanks to Edin > > > > > > Project: http://git-wip-us.apache.org/repos/asf/camel/repo > > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/595976d1 > > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/595976d1 > > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/595976d1 > > > > Branch: refs/heads/master > > Commit: 595976d1dd302760ea1d3cfe0fb34c85be41597a > > Parents: 34e6970 > > Author: Willem Jiang > > Authored: Sun Oct 26 16:51:33 2014 +0800 > > Committer: Willem Jiang > > Committed: Sun Oct 26 16:51:33 2014 +0800 > > > > ---------------------------------------------------------------------- > > .../apache/camel/model/ProcessorDefinition.java | 19 +++++ > > .../scala/org/apache/camel/scala/dsl/DSL.scala | 5 ++ > > .../camel/scala/dsl/SAbstractDefinition.scala | 5 ++ > > .../camel/scala/dsl/builder/RouteBuilder.scala | 5 ++ > > .../camel/scala/dsl/AutoStartupTest.scala | 80 ++++++++++++++++++++ > > 5 files changed, 114 insertions(+) > > ---------------------------------------------------------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/camel/blob/595976d1/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java > > > > ---------------------------------------------------------------------- > > diff --git > > a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java > b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java > > index a6a8457..a3b05cd 100644 > > --- > > a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java > > +++ > > b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java > > @@ -893,6 +893,21 @@ public abstract class ProcessorDefinition > > return to(ExchangePattern.InOut, endpoints); > > } > > > > + public Type autoStartup(String autoStartup) { > > + return autoStartup(Boolean.valueOf(autoStartup)); > > + } > > + > > + public Type autoStartup(boolean autoStartup) { > > + ProcessorDefinition def = this; > > + > > + RouteDefinition route = ProcessorDefinitionHelper.getRoute(def); > > + if (route != null) { > > + route.autoStartup(autoStartup); > > + } > > + > > + return (Type) this; > > + } > > + > > /** > > * Sets the id of this node. > > * > > @@ -1003,6 +1018,10 @@ public abstract class ProcessorDefinition > > return answer; > > } > > > > + public Type noAutoStartup() { > > + return autoStartup(false); > > + } > > + > > /** > > * Pipes and Filters > EIP: > > * Creates a {@link Pipeline} so that the message > > > > http://git-wip-us.apache.org/repos/asf/camel/blob/595976d1/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 9900246..e061f78 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 > > > > @@ -49,6 +49,9 @@ trait DSL { > > > > def handle[E <: Throwable : ClassTag](block: => Unit) : > > SOnExceptionDefinition[E] > > > > + def autoStartup(autoStartup :String) : DSL > > + def autoStartup(autoStartup :Boolean) : DSL > > + > > def id(id : String): DSL > > def idempotentConsumer(expression: Exchange => Any): > > SIdempotentConsumerDefinition > > def inOnly: DSL with Block > > @@ -64,6 +67,8 @@ trait DSL { > > def marshal(format : DataFormatDefinition) : DSL > > def multicast : SMulticastDefinition > > > > + def noAutoStartup() : DSL > > + > > def onCompletion : SOnCompletionDefinition > > def onCompletion(predicate: Exchange => Boolean) : SOnCompletionDefinition > > def onCompletion(config: Config[SOnCompletionDefinition]) : > > SOnCompletionDefinition > > > > http://git-wip-us.apache.org/repos/asf/camel/blob/595976d1/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 275b6d0..280cf99 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 > > > > @@ -77,6 +77,9 @@ abstract class SAbstractDefinition[P <: > > ProcessorDefinition[_]] > extends DSL with > > > > def handle[E <: Throwable : ClassTag](block: => Unit) = > > SOnExceptionDefinition[E](target.onException(classTag[E].runtimeClass.asInstanceOf[Class[E]])).apply(block) > > > > > > + def autoStartup(autoStartup: String) = > > wrap(target.autoStartup(autoStartup)) > > + def autoStartup(autoStartup: Boolean) = > > wrap(target.autoStartup(autoStartup)) > > + > > def id(id : String) = wrap(target.id(id)) > > def idempotentConsumer(expression: Exchange => Any) = > > SIdempotentConsumerDefinition(target.idempotentConsumer(expression, > null)) > > @Deprecated > > @@ -94,6 +97,8 @@ abstract class SAbstractDefinition[P <: > > ProcessorDefinition[_]] > extends DSL with > > def marshal(format: DataFormatDefinition) = wrap(target.marshal(format)) > > def multicast = SMulticastDefinition(target.multicast) > > > > + def noAutoStartup() = wrap(target.autoStartup(false)) > > + > > def onCompletion: SOnCompletionDefinition = { > > val completion = SOnCompletionDefinition(target.onCompletion) > > // let's end the block in the Java DSL, we have a better way of handling > > blocks here > > > > http://git-wip-us.apache.org/repos/asf/camel/blob/595976d1/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 5d68b63..b1aaad4 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 > > > > @@ -125,6 +125,9 @@ class RouteBuilder extends Preamble with DSL with > > RoutesBuilder > with Languages w > > > > def filter(predicate: Exchange => Any) = stack.top.filter(predicate) > > > > + def autoStartup(autoStartup :String) = stack.top.autoStartup(autoStartup) > > > > + def autoStartup(autoStartup :Boolean) = > > stack.top.autoStartup(autoStartup) > > + > > def id(id : String) = stack.top.id(id) > > def idempotentConsumer(expression: Exchange => Any) = > > stack.top.idempotentConsumer(expression) > > def inOnly = stack.top.inOnly > > @@ -152,6 +155,8 @@ class RouteBuilder extends Preamble with DSL with > > RoutesBuilder > with Languages w > > def marshal(format: DataFormatDefinition) = stack.top.marshal(format) > > def multicast = stack.top.multicast > > > > + def noAutoStartup() = stack.top.autoStartup(false) > > + > > def onCompletion = { > > stack.size match { > > case 0 => SOnCompletionDefinition(builder.onCompletion)(this) > > > > http://git-wip-us.apache.org/repos/asf/camel/blob/595976d1/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/AutoStartupTest.scala > > > > ---------------------------------------------------------------------- > > diff --git > > a/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/AutoStartupTest.scala > > > b/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/AutoStartupTest.scala > > > new file mode 100644 > > index 0000000..b70c29e > > --- /dev/null > > +++ > > b/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/AutoStartupTest.scala > > > > @@ -0,0 +1,80 @@ > > +/** > > + * 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.ServiceStatus > > +import org.apache.camel.ServiceStatus.{Started, Stopped} > > +import org.apache.camel.builder.RouteBuilder > > +import org.apache.camel.scala.dsl > > +import org.apache.camel.scala.dsl.AutoStartupTest._ > > +import org.apache.camel.test.junit4.CamelTestSupport > > +import org.scalatest.{BeforeAndAfterAll, FunSuiteLike} > > + > > +class AutoStartupTest extends CamelTestSupport with FunSuiteLike with > > BeforeAndAfterAll > { > > + > > + override protected def createRouteBuilders(): Array[RouteBuilder] = { > > + Array( > > + createRoute(_ from s"direct:start1" id withoutDslRouteId to > > "mock:output"), > > + createRoute(_ from s"direct:start2" id booleanDslRouteId autoStartup > > false to > "mock:output"), > > + createRoute(_ from s"direct:start3" id stringDslRouteId autoStartup > > "false" > to "mock:output"), > > + createRoute(_ from s"direct:start4" id noAutoStartupDslRouteId > > noAutoStartup() > to "mock:output") > > + ) > > + } > > + > > + override def beforeAll: Unit = { > > + setUp() > > + } > > + > > + test("route without auto startup dsl, is started by default") { > > + assertRouteStatus(withoutDslRouteId, Started) > > + } > > + > > + test("route with auto startup dsl using 'false' boolean, is stopped") { > > + assertRouteStatus(booleanDslRouteId, Stopped) > > + } > > + > > + test("route with auto startup dsl using 'false' string, is stopped") { > > + assertRouteStatus(stringDslRouteId, Stopped) > > + } > > + > > + test("route with no auto startup dsl, is stopped") { > > + assertRouteStatus(noAutoStartupDslRouteId, Stopped) > > + } > > + > > + private def assertRouteStatus(routeId: String, status: ServiceStatus) { > > + assert(context().getRouteStatus(routeId) === status) > > + } > > + > > + override protected def afterAll(): Unit = { > > + tearDown() > > + } > > +} > > + > > +object AutoStartupTest { > > + > > + private val withoutDslRouteId: String = "without-dsl-route" > > + private val booleanDslRouteId: String = "boolean-dsl-route" > > + private val stringDslRouteId: String = "string-dsl-route" > > + private val noAutoStartupDslRouteId: String = "no-auto-startup-dsl-route" > > + > > + private def createRoute(routeBuilderFunction: (dsl.builder.RouteBuilder) > => Unit): RouteBuilder = > > + new dsl.builder.RouteBuilder { > > + routeBuilderFunction(this) > > + }.builder > > + > > +} > > + > > > > > > -- > Claus Ibsen > ----------------- > Red Hat, Inc. > Email: cib...@redhat.com > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen > hawtio: http://hawt.io/ > fabric8: http://fabric8.io/ >