You likely need to inline the code using [[CDATA[ xml style.

Or better yet put the python code in a file, and refer to this file
from the camel route with resource:xxx. See more at
http://camel.apache.org/scripting-languages.html


On Tue, Apr 4, 2017 at 3:18 PM, samer <[email protected]> wrote:
> I am trying to use python script in Camel and I am getting this exception:
>
>
>  107 - org.apache.camel.camel-blueprint - 2.17.0.redhat-630187 | Error
> occurred during starting Camel: CamelContext(camel-17) due Failed to create
> route VaraExportItemTimer at: >>> SetHeader[previousTime, python{n  |
> H = dict(line.strip().split('=') for line in open('VaraExport.properties')
> if not line.startswith('#') and not line.startswith('\n'))n  |           if
> H.has_key("time"):n  |                        result = H["time"]n  |
> else :n  |                      result = '2001-01-01T00:00:00'n  |
> }] <<< in route:
> Route(VaraExportItemTimer)[[From[quartz2://PS/VaraExport?cro... because of
> expression must be specified
> org.apache.camel.FailedToCreateRouteException: Failed to create route
> VaraExportItemTimer at: >>> SetHeader[previousTime, python{
>                         H = dict(line.strip().split('=') for line in
> open('VaraExport.properties') if not line.startswith('#') and not
> line.startswith('\n'))
>                         if H.has_key("time"):
>                         result = H["time"]
>                         else :
>                         result = '2001-01-01T00:00:00'
>         }] <<< in route:
> Route(VaraExportItemTimer)[[From[quartz2://PS/VaraExport?cro... because of
> expression must be specified
>         at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1072)
>         at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
>         at
> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:974)
>         at
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3301)
>         at
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3024)
>         at
> org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
>         at
> org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2854)
>         at
> org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2850)
>         at
> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2873)
>         at
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2850)
>         at
> org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
>         at
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2819)
>         at
> org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:185)
>         at
> org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:217)
>         at
> org.apache.camel.blueprint.BlueprintCamelContext.serviceChanged(BlueprintCamelContext.java:155)
>         at
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:943)
>         at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794)
>         at
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544)
>         at
> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4445)
>         at org.apache.felix.framework.Felix.registerService(Felix.java:3431)
>         at
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
>         at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:459)
>         at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:394)
>         at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:270)
>         at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)
>         at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)
>         at
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)
>         at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
>         at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
>         at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
>         at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
>         at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
>         at
> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)
>         at
> org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)
>         at
> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)
>         at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)
>         at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)
>         at org.apache.felix.framework.Felix.updateBundle(Felix.java:2412)
>         at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:994)
>         at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:981)
>         at
> org.apache.karaf.util.bundles.BundleUtils.update(BundleUtils.java:43)
>         at
> org.apache.karaf.util.bundles.BundleUtils.update(BundleUtils.java:36)
>         at
> org.apache.karaf.shell.osgi.UpdateBundle.doExecute(UpdateBundle.java:37)
>         at
> org.apache.karaf.shell.osgi.BundleCommand.doExecute(BundleCommand.java:41)
>         at
> org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38)
>         at
> org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)
>         at sun.reflect.GeneratedMethodAccessor154.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
>         at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
>         at
> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
>         at
> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>         at
> org.apache.karaf.shell.console.commands.$BlueprintCommand1994544654.execute(Unknown
> Source)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[18:org.apache.karaf.shell.console:2.4.0.redhat-630187]
>         at
> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:92)
>         at
> org.apache.karaf.shell.console.jline.Console.run(Console.java:197)
>         at
> org.apache.karaf.shell.ssh.ShellFactoryImpl$ShellImpl$1.runConsole(ShellFactoryImpl.java:171)[32:org.apache.karaf.shell.ssh:2.4.0.redhat-630187]
>         at
> org.apache.karaf.shell.ssh.ShellFactoryImpl$ShellImpl$1$1.run(ShellFactoryImpl.java:126)
>         at java.security.AccessController.doPrivileged(Native
> Method)[:1.8.0_121]
>         at
> org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)[17:org.apache.karaf.jaas.modules:2.4.0.redhat-630187]
>         at
> org.apache.karaf.shell.ssh.ShellFactoryImpl$ShellImpl$1.run(ShellFactoryImpl.java:124)[32:org.apache.karaf.shell.ssh:2.4.0.redhat-630187]
> Caused by: java.lang.IllegalArgumentException: expression must be specified
>         at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:308)
>         at
> org.apache.camel.processor.SetHeaderProcessor.<init>(SetHeaderProcessor.java:42)
>         at
> org.apache.camel.model.SetHeaderDefinition.createProcessor(SetHeaderDefinition.java:76)
>         at
> org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:534)
>         at
> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:495)
>         at
> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:219)
>         at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069)
>         ... 64 more
>
>
>
> I tried different workarounds and I have camel-script added to features in
> settings. Any hint on why I get this error and why camel is ignoring the
> content of my python script tag? below also is snippet on how i embed python
> script:
>
>     .....
>     <route id="VaraExportItemTimer">
>       <from
> uri="quartz2://PS/VaraExport?cron=0/30+*+*+*+*+?&amp;stateful=true" />
>       <setHeader headerName="previousTime">
>         <python>
>                         H = dict(line.strip().split('=') for line in
> open('VaraExport.properties') if not line.startswith('#') and not
> line.startswith('\n'))
>                         if H.has_key("time"):
>                         result = H["time"]
>                         else :
>                         result = '2001-01-01T00:00:00'
>         </python>
>       </setHeader>
>        .....
>
> Thanks!
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Using-Python-script-in-Camel-tp5796914.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to