package com.odelia.groovy.camel import org.apache.camel.impl.DefaultCamelContext import org.apache.camel.Processor import org.apache.camel.language.groovy.GroovyRouteBuilder @Grab(group='org.apache.camel', module='camel-groovy', version='2.4.0') @Grab(group='org.apache.camel', module='camel-jetty', version='2.4.0') class SimpleRouteBuilder extends GroovyRouteBuilder { def dslFilename def uri def processor void parse(filename) { def shell = new GroovyShell() def script = shell.parse(new File(filename)) script.metaClass.methodMissing = { String name, args -> uri = name processor = args[0].clone() processor.delegate = this processor.resolveStrategy = Closure.DELEGATE_ONLY } script.run() } void configure() { parse(dslFilename) from("jetty:${uri}").process(processor as Processor) } static void main(String[] args) { if (args.size() != 1) { println 'Usage: groovy GroovyCamel.groovy ' return } def camelCtx = new DefaultCamelContext() camelCtx.addRoutes(new SimpleRouteBuilder(dslFilename: args[0])) camelCtx.start() sleep 40000 camelCtx.stop() } }