You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Unsupported Groovy DSL Features on Web Console

Most of the DSL features have been supported on Web Console, so you can view and edit in an easy way. However, Web Console doesn't support all the features that you can get from an IDE. Here will list and explain the unsupported features, including the reason for giving up them, alternative solutions or some suggestion for those who indeed need to extend them.

Unsupported Features List

creating new classes

When writing a route in Java DSL, we often create new classes. For example, we may create a processor as follows:

from("direct:start").process(new Processor() {
     public void process(Exchange exchange) {
          Message in = exchange.getIn();
          in.setBody(in.getBody(String.class) + " World!");
     }
}).to("mock:result");

Here an anonymous inner class is created to process the message. But this feature is not supported on Web Console since it use a groovy class loader to parse the route content and you should use groovy grammar to build the processor.
Using a bundle of anonymous inner classes may cause you to lost the route definition after creating them because Web Console can't render them in the view/edit operations.

  • happen to: aggregate, bean, process, etc.
  • alternative solution: you should build the processors externally, register them on Camel Context and then you can use them by using beanRef or processRef DSL. For such an example, you should refer Content Based Routing on Camel.

invoking un-imported classse

This feature also appears frequently. In the try...catch DSL or onException DSL, we may use some external or custom exception classes. But current groovy renderer doesn't process the import packages, so if you should manually add the import lines each time you edit it.

  • happen to: doTry...doCatch(...doFinally), onException, throwException, etc.
  • improving suggestion: let groovy renderer add the import packages automatically, but I am afraid it can't process them at all times.

other features

Some expression and predicate have complex and refractory toString method, so the ExpressionRenderer and PredicateRenderer class written a little hard.

  • No labels