Hi Babak,
It's a fairly simple fix. Please feel free to attach your patch to the
jira as is and I can take care of it. For reference, please find my
fixes below (inline instead of attachment). I hope it's pretty self
explanatory, but if you have any questions please feel free to ask.
Cheers,
Hadrian
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 6ceb6f6..d65ac2c 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
@@ -45,7 +45,7 @@ trait DSL {
def filter(predicate: Exchange => Any) : SFilterDefinition
- def handle[E](block: => Unit)(implicit manifest: Manifest[E]) :
SOnExceptionDefinition
+ def handle[E <: Throwable](block: => Unit)(implicit manifest:
Manifest[E]) : SOnExceptionDefinition
def id(id : String): DSL
def idempotentConsumer(expression: Exchange => Any):
SIdempotentConsumerDefinition
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 d731388..7865c0a 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
@@ -74,7 +74,7 @@ abstract class SAbstractDefinition[P <:
ProcessorDefinition[_]] extends DSL with
def filter(predicate: Exchange => Any) =
SFilterDefinition(target.filter(predicateBuilder(predicate)))
- def handle[E](block: => Unit)(implicit manifest: Manifest[E]) =
SOnExceptionDefinition(target.onException(manifest.erasure)).apply(block)
+ def handle[E <: Throwable](block: => Unit)(implicit manifest:
Manifest[E]) =
SOnExceptionDefinition(target.onException(manifest.erasure.asInstanceOf[Class[Throwable]])).apply(block)
def id(id : String) = wrap(target.id(id))
def idempotentConsumer(expression: Exchange => Any) =
SIdempotentConsumerDefinition(target.idempotentConsumer(expression, null))
diff --git
a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/STryDefinition.scala
b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/STryDefinition.scala
index 3400392..54d2d3f 100644
---
a/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/STryDefinition.scala
+++
b/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/STryDefinition.scala
@@ -26,7 +26,7 @@ case class STryDefinition(override val target:
TryDefinition)(implicit val build
override def apply(block: => Unit) : STryDefinition =
super.apply(block).asInstanceOf[STryDefinition]
- def handle[Target](exception: Class[Target]) = {
+ def handle[Target <: Throwable](exception: Class[Target]) = {
target.doCatch(exception)
this
}
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 27e0d0e..d066ec2 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
@@ -82,9 +82,9 @@ class RouteBuilder extends Preamble with DSL with
RoutesBuilder with Languages w
* This is done a bit differently - the implicit manifest parameter
forces us to define the block in the same
* method definition
*/
- def handle[E](block: => Unit)(implicit manifest: Manifest[E]) = {
+ def handle[E <: Throwable](block: => Unit)(implicit manifest:
Manifest[E]) = {
stack.size match {
- case 0 =>
SOnExceptionDefinition(builder.onException(manifest.erasure))(this).apply(block)
+ case 0 =>
SOnExceptionDefinition(builder.onException(manifest.erasure.asInstanceOf[Class[Throwable]]))(this).apply(block)
case _ => stack.top.handle[E](block)
}
}
On 01/11/2012 07:39 AM, Babak Vahdat wrote:
Hi
Just in case somebody intends to help out on this issue here is
http://camel.465427.n5.nabble.com/file/n5136738/camel-scala-problem.diff
camel-scala-problem.diff the diff of my workspace which contains *only* the
changes regarding this issue I've already mentioned by this thread.
The steps to reproduce the problem on your workspace:
- Apply the patch on your workspace
- By the camel-core module do a "mvn clean install -Pfastinstall"
- On camel-scala module do a "mvn clean install" to see the Scala-Compiler
errors.
As you see *one* of the good side effects by this refactoring is the removal
of CastUtils.cast() stuff.
Babak
--
View this message in context:
http://camel.465427.n5.nabble.com/Need-your-help-on-camel-scala-tp5134007p5136738.html
Sent from the Camel Development mailing list archive at Nabble.com.
--
Hadrian Zbarcea
Principal Software Architect
Talend, Inc
http://coders.talend.com/
http://camelbot.blogspot.com/