[ 
https://issues.apache.org/jira/browse/CAMEL-4988?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13203343#comment-13203343
 ] 

Diego commented on CAMEL-4988:
------------------------------

The problem is that I upgraded my application to Camel 2.9.0 from Camel 2.8.0 
and all the routes with simple expressions started to fail. All the other 
routes seem to work as usual, Camel is an great framework!

I debugged the application and the source of the problem seems to be in the 
simple expressions. The parsers allways fails (sometimes silently) because the 
start and end tokens are strange strings (like "97830e4816280eb7") instead of 
the usual strings "${", "}".

Debugging the application with a breakpoint in the SimpleLanguage constructor 
"public SimpleLanguage(String functionStartToken, String functionEndToken)" I 
found that Camel automatically replaces the standard tokens with these strange 
strings (I copy the stacktrace at the end of the comment). It seems that in the 
SimpleLanguage initialization the SpringInjector chooses the wrong constructor 
instead of the default one.

If I declare a bean with de SimpleLanguage an set explicitly the tokens 
everything works fine.

Thread [DefaultQuartzScheduler-camel-7_Worker-1] (Suspended (breakpoint at line 
110 in SimpleLanguage)) 
        SimpleLanguage.<init>(String, String) line: 110 
        NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: 
not available [native method]   
        NativeConstructorAccessorImpl.newInstance(Object[]) line: 39    
        DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27        
        Constructor<T>.newInstance(Object...) line: 513 
        BeanUtils.instantiateClass(Constructor<T>, Object...) line: 126 
        
CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition,
 String, BeanFactory, Constructor<?>, Object[]) line: 108     
        ConstructorResolver.autowireConstructor(String, RootBeanDefinition, 
Constructor[], Object[]) line: 280  
        
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String,
 RootBeanDefinition, Constructor[], Object[]) line: 1003      
        
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String,
 RootBeanDefinition, Object[]) line: 907       
        
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String,
 RootBeanDefinition, Object[]) line: 485     
        
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String,
 RootBeanDefinition, Object[]) line: 456       
        
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(Class,
 int, boolean) line: 331        
        SpringInjector.newInstance(Class<T>) line: 39   
        DefaultLanguageResolver.resolveLanguage(String, CamelContext) line: 75  
        SpringCamelContext(DefaultCamelContext).resolveLanguage(String) line: 
951       
        SimpleBuilder.createExpression(Exchange) line: 86       
        SimpleBuilder.evaluate(Exchange, Class<T>) line: 80     
        Splitter.createProcessorExchangePairs(Exchange) line: 102       
        Splitter(MulticastProcessor).process(Exchange, AsyncCallback) line: 208 
        Splitter.process(Exchange, AsyncCallback) line: 97      
        AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) 
line: 73  
        InstrumentationProcessor(DelegateAsyncProcessor).processNext(Exchange, 
AsyncCallback) line: 99  
        InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange, 
AsyncCallback) line: 90      
        InstrumentationProcessor.process(Exchange, AsyncCallback) line: 71      
        AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) 
line: 73  
        TraceInterceptor(DelegateAsyncProcessor).processNext(Exchange, 
AsyncCallback) line: 99  
        TraceInterceptor(DelegateAsyncProcessor).process(Exchange, 
AsyncCallback) line: 90      
        TraceInterceptor.process(Exchange, AsyncCallback) line: 91      
        AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) 
line: 73  
        
DefaultErrorHandler(RedeliveryErrorHandler).processErrorHandler(Exchange, 
AsyncCallback, RedeliveryErrorHandler$RedeliveryData) line: 322       
        DefaultErrorHandler(RedeliveryErrorHandler).process(Exchange, 
AsyncCallback) line: 213  
        RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 45     
        RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, 
AsyncCallback) line: 90 
        DefaultChannel.process(Exchange, AsyncCallback) line: 303       
        AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) 
line: 73  
        Pipeline.process(Exchange, Exchange, AsyncCallback, 
Iterator<Processor>, AsyncProcessor) line: 117      
        Pipeline.process(Exchange, AsyncCallback) line: 80      
        RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 45     
        RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, 
AsyncCallback) line: 90 
        UnitOfWorkProcessor.processAsync(Exchange, AsyncCallback, UnitOfWork) 
line: 150 
        UnitOfWorkProcessor.process(Exchange, AsyncCallback) line: 117  
        AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) 
line: 73  
        InstrumentationProcessor(DelegateAsyncProcessor).processNext(Exchange, 
AsyncCallback) line: 99  
        InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange, 
AsyncCallback) line: 90      
        InstrumentationProcessor.process(Exchange, AsyncCallback) line: 71      
        AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) 
line: 73  
        RoundRobinLoadBalancer(QueueLoadBalancer).process(Exchange, 
AsyncCallback) line: 44     
        AsyncProcessorHelper.process(AsyncProcessor, Exchange) line: 99 
        RoundRobinLoadBalancer(QueueLoadBalancer).process(Exchange) line: 71    
        QuartzEndpoint.onJobExecute(JobExecutionContext) line: 112      
        CamelJob.execute(JobExecutionContext) line: 54  
        JobRunShell.run() line: 216     
        SimpleThreadPool$WorkerThread.run() line: 549   

                
> Problems with Simple language
> -----------------------------
>
>                 Key: CAMEL-4988
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4988
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.0
>         Environment: Standalone application with Spring context and routes 
> defined in XML.
>            Reporter: Diego
>
> If you don't use a simple expresion that falls back to the 
> SimpleBackwardsCompatibleParser, the simple language doesn't seem to work. If 
> I override the start and end token with an explicit definition of the 
> simplelanguage everything works well.
>   <bean id="simple" class="org.apache.camel.language.simple.SimpleLanguage">
>       <constructor-arg name="functionStartToken" value="${"/>
>       <constructor-arg name="functionEndToken" value="}"/>
>   </bean> 
> It seems that 
> org.apache.camel.language.simple.SimpleExpressionParser.SimpleExpressionParser(String)
>  fails to create an expression because startToken and endToken are 
> "automagically" changed for strange Strings. It seems that when 
> exchange.getContext().resolveLanguage("simple") tries to resolve the languaje 
> it doesn't use the default construtor and injects a strange start and end 
> token in the constructor SimpleLanguage(String functionStartToken, String 
> functionEndToken).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to