Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the asciidoc in the repository: https://github.com/apache/camel/blob/master/README.md https://github.com/apache/camel/blob/master/components/readme.adoc
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:
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.
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 you should manually add the import lines each time you edit it. Another problem is that groovy renderer can't return the instance name of that class. For example, you may define a route like:
For this route, groovy renderer can't return the name: validator and it only know there is a processor instance here.
Filter and When DSL using Groovy Closure
The Web Console parses routes in groovy language by using the GroovyRouteBuilder in camel-groovy component. GroovyRouteBuilder uses the ConfigureCamel to dynamically add methods for the route configuration behaviors. Currently it has added closure for filter and when DSL. So you can use two method to defined a filter through Web Console:
However, groovy renderer can only render the first filter because a closure is unreadable in Camel Context.
Some expression and predicate have complex and refractory toString method, so the ExpressionRenderer and PredicateRenderer class are implemented a little hard.