You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Willem Jiang <wi...@gmail.com> on 2010/03/27 10:04:29 UTC

Conflict of Camel Property and Spring EL

Hi,

I'm trying to build the camel trunk code with Spring 3.0.1 and there are 
some tests failed in the camel-spring module.

One kind of error is Spring 3.0.1 treats the camel property variable as 
the spEL variable (#{ <expression string> }) .

It looks like we can't turn off the spEL parsering from Camel, I think 
we need to redefine the camel property variable to workaround this 
conflict.

Here is one of stack traces:
-------------------------------------------------------------------------------
Test set: org.apache.camel.spring.JMXAgentPropertiesTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.181 
sec <<< FAILURE!
testQueryMbeans(org.apache.camel.spring.JMXAgentPropertiesTest)  Time 
elapsed: 1.161 sec  <<< ERROR!
org.springframework.beans.factory.BeanCreationException: Error creating 
bean with name 'agent': Initialization of bean failed; nested exception 
is org.springframework.beans.factory.BeanExpressionException: Expression 
parsing failed; nested exception is 
org.springframework.expression.spel.SpelEvaluationException: 
EL1008E:(pos 0): Field or property 'myjmx' cannot be found on object of 
type 'org.springframework.beans.factory.config.BeanExpressionContext'
	at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
	at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
	at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
	at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
	at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
	at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
	at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
	at 
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at 
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at 
org.apache.camel.spring.JMXAgentPropertiesTest.createApplicationContext(JMXAgentPropertiesTest.java:31)
	at 
org.apache.camel.spring.SpringTestSupport.setUp(SpringTestSupport.java:47)
	at 
org.apache.camel.spring.DefaultJMXAgentTest.setUp(DefaultJMXAgentTest.java:43)
	at org.apache.camel.spring.JMXAgentTest.setUp(JMXAgentTest.java:40)
	at junit.framework.TestCase.runBare(TestCase.java:132)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:124)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at 
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
	at 
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:165)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:107)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:592)
	at 
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:289)
	at 
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1005)
Caused by: org.springframework.beans.factory.BeanExpressionException: 
Expression parsing failed; nested exception is 
org.springframework.expression.spel.SpelEvaluationException: 
EL1008E:(pos 0): Field or property 'myjmx' cannot be found on object of 
type 'org.springframework.beans.factory.config.BeanExpressionContext'
	at 
org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:140)
	at 
org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1245)
	at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:224)
	at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:200)
	at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1308)
	at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
	at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
	... 32 more
Caused by: org.springframework.expression.spel.SpelEvaluationException: 
EL1008E:(pos 0): Field or property 'myjmx' cannot be found on object of 
type 'org.springframework.beans.factory.config.BeanExpressionContext'
	at 
org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:180)
	at 
org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:60)
	at 
org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:52)
	at 
org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93)
	at 
org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:88)
	at 
org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:137)
	... 38 more


Willem




Re: Conflict of Camel Property and Spring EL

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I created a ticket to track this
https://issues.apache.org/activemq/browse/CAMEL-2599

On Sat, Mar 27, 2010 at 6:08 PM, Claus Ibsen <cl...@gmail.com> wrote:
> Hi
>
> Damn Spring, you are bad.
>
> Is this the only unit tests which fails?
>
>
> On Sat, Mar 27, 2010 at 10:04 AM, Willem Jiang <wi...@gmail.com> wrote:
>> Hi,
>>
>> I'm trying to build the camel trunk code with Spring 3.0.1 and there are
>> some tests failed in the camel-spring module.
>>
>> One kind of error is Spring 3.0.1 treats the camel property variable as the
>> spEL variable (#{ <expression string> }) .
>>
>> It looks like we can't turn off the spEL parsering from Camel, I think we
>> need to redefine the camel property variable to workaround this conflict.
>>
>> Here is one of stack traces:
>> -------------------------------------------------------------------------------
>> Test set: org.apache.camel.spring.JMXAgentPropertiesTest
>> -------------------------------------------------------------------------------
>> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.181 sec
>> <<< FAILURE!
>> testQueryMbeans(org.apache.camel.spring.JMXAgentPropertiesTest)  Time
>> elapsed: 1.161 sec  <<< ERROR!
>> org.springframework.beans.factory.BeanCreationException: Error creating bean
>> with name 'agent': Initialization of bean failed; nested exception is
>> org.springframework.beans.factory.BeanExpressionException: Expression
>> parsing failed; nested exception is
>> org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos
>> 0): Field or property 'myjmx' cannot be found on object of type
>> 'org.springframework.beans.factory.config.BeanExpressionContext'
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
>>        at
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
>>        at
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
>>        at
>> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
>>        at
>> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
>>        at
>> org.apache.camel.spring.JMXAgentPropertiesTest.createApplicationContext(JMXAgentPropertiesTest.java:31)
>>        at
>> org.apache.camel.spring.SpringTestSupport.setUp(SpringTestSupport.java:47)
>>        at
>> org.apache.camel.spring.DefaultJMXAgentTest.setUp(DefaultJMXAgentTest.java:43)
>>        at org.apache.camel.spring.JMXAgentTest.setUp(JMXAgentTest.java:40)
>>        at junit.framework.TestCase.runBare(TestCase.java:132)
>>        at junit.framework.TestResult$1.protect(TestResult.java:110)
>>        at junit.framework.TestResult.runProtected(TestResult.java:128)
>>        at junit.framework.TestResult.run(TestResult.java:113)
>>        at junit.framework.TestCase.run(TestCase.java:124)
>>        at junit.framework.TestSuite.runTest(TestSuite.java:232)
>>        at junit.framework.TestSuite.run(TestSuite.java:227)
>>        at
>> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>>        at
>> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
>>        at
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
>>        at
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:165)
>>        at org.apache.maven.surefire.Surefire.run(Surefire.java:107)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:592)
>>        at
>> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:289)
>>        at
>> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1005)
>> Caused by: org.springframework.beans.factory.BeanExpressionException:
>> Expression parsing failed; nested exception is
>> org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos
>> 0): Field or property 'myjmx' cannot be found on object of type
>> 'org.springframework.beans.factory.config.BeanExpressionContext'
>>        at
>> org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:140)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1245)
>>        at
>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:224)
>>        at
>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:200)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1308)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
>>        ... 32 more
>> Caused by: org.springframework.expression.spel.SpelEvaluationException:
>> EL1008E:(pos 0): Field or property 'myjmx' cannot be found on object of type
>> 'org.springframework.beans.factory.config.BeanExpressionContext'
>>        at
>> org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:180)
>>        at
>> org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:60)
>>        at
>> org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:52)
>>        at
>> org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93)
>>        at
>> org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:88)
>>        at
>> org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:137)
>>        ... 38 more
>>
>>
>> Willem
>>
>>
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Conflict of Camel Property and Spring EL

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Damn Spring, you are bad.

Is this the only unit tests which fails?


On Sat, Mar 27, 2010 at 10:04 AM, Willem Jiang <wi...@gmail.com> wrote:
> Hi,
>
> I'm trying to build the camel trunk code with Spring 3.0.1 and there are
> some tests failed in the camel-spring module.
>
> One kind of error is Spring 3.0.1 treats the camel property variable as the
> spEL variable (#{ <expression string> }) .
>
> It looks like we can't turn off the spEL parsering from Camel, I think we
> need to redefine the camel property variable to workaround this conflict.
>
> Here is one of stack traces:
> -------------------------------------------------------------------------------
> Test set: org.apache.camel.spring.JMXAgentPropertiesTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.181 sec
> <<< FAILURE!
> testQueryMbeans(org.apache.camel.spring.JMXAgentPropertiesTest)  Time
> elapsed: 1.161 sec  <<< ERROR!
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'agent': Initialization of bean failed; nested exception is
> org.springframework.beans.factory.BeanExpressionException: Expression
> parsing failed; nested exception is
> org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos
> 0): Field or property 'myjmx' cannot be found on object of type
> 'org.springframework.beans.factory.config.BeanExpressionContext'
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
>        at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
>        at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
>        at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
>        at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
>        at
> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
>        at
> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
>        at
> org.apache.camel.spring.JMXAgentPropertiesTest.createApplicationContext(JMXAgentPropertiesTest.java:31)
>        at
> org.apache.camel.spring.SpringTestSupport.setUp(SpringTestSupport.java:47)
>        at
> org.apache.camel.spring.DefaultJMXAgentTest.setUp(DefaultJMXAgentTest.java:43)
>        at org.apache.camel.spring.JMXAgentTest.setUp(JMXAgentTest.java:40)
>        at junit.framework.TestCase.runBare(TestCase.java:132)
>        at junit.framework.TestResult$1.protect(TestResult.java:110)
>        at junit.framework.TestResult.runProtected(TestResult.java:128)
>        at junit.framework.TestResult.run(TestResult.java:113)
>        at junit.framework.TestCase.run(TestCase.java:124)
>        at junit.framework.TestSuite.runTest(TestSuite.java:232)
>        at junit.framework.TestSuite.run(TestSuite.java:227)
>        at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>        at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
>        at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
>        at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:165)
>        at org.apache.maven.surefire.Surefire.run(Surefire.java:107)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:592)
>        at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:289)
>        at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1005)
> Caused by: org.springframework.beans.factory.BeanExpressionException:
> Expression parsing failed; nested exception is
> org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos
> 0): Field or property 'myjmx' cannot be found on object of type
> 'org.springframework.beans.factory.config.BeanExpressionContext'
>        at
> org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:140)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1245)
>        at
> org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:224)
>        at
> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:200)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1308)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
>        ... 32 more
> Caused by: org.springframework.expression.spel.SpelEvaluationException:
> EL1008E:(pos 0): Field or property 'myjmx' cannot be found on object of type
> 'org.springframework.beans.factory.config.BeanExpressionContext'
>        at
> org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:180)
>        at
> org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:60)
>        at
> org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:52)
>        at
> org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93)
>        at
> org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:88)
>        at
> org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:137)
>        ... 38 more
>
>
> Willem
>
>
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus