Issue 1:
Clark Duplichien opened SPR-8211 and commented

Documentation on the SPEL PropertyAccessor.class reads:

Property resolvers are considered to be ordered and each will be called in

turn. The only rule that affects the call order is that any naming the target class directly in

getSpecifiedTargetClasses() will be called first, before the general resolvers.

However, the attached test case shows property accessors being utilized in an order other than what they are registered in.

It may be intended for the property accessors to be utilized in inverse order of their being added to the evaluationContext; if this is the case, it could be made clearer in the javadocs.

Attachments:

PropertyAccessorsEvaluatedOutOfOrderTest.java (4.11 kB)

SPR-8211-patch.txt (1.54 kB)

Issue 2:
Oliver-Arne Hammerstein opened SPR-2516 and commented

I transferred my working code from Spring 2.0 RC2 to RC3 and yield problems by using <tx:annotation-driven /> in conjunction with a LocalContainerEntityManagerFactoryBean. This was the error:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor': Instantiation of bean failed; nested exception is java.lang.NullPointerException

Caused by: java.lang.NullPointerException

at org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor$TransactionAttributeSourcePointcut.getTransactionAttributeSource(TransactionAttributeSourceAdvisor.java:102)

at org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor$TransactionAttributeSourcePointcut.hashCode(TransactionAttributeSourceAdvisor.java:121)

at java.lang.Object.toString(Object.java:209)

at java.lang.String.valueOf(String.java:2577)

at java.lang.StringBuffer.append(StringBuffer.java:220)

at org.springframework.aop.support.AbstractPointcutAdvisor.toString(AbstractPointcutAdvisor.java:71)

at java.lang.String.valueOf(String.java:2577)

at java.lang.StringBuffer.append(StringBuffer.java:220)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:383)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:242)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:239)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:155)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:303)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)

at de.oc.test.AppContextTest.testname(AppContextTest.java:23)

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:585)

at junit.framework.TestCase.runTest(TestCase.java:154)

at junit.framework.TestCase.runBare(TestCase.java:127)

at junit.framework.TestResult$1.protect(TestResult.java:106)

at junit.framework.TestResult.runProtected(TestResult.java:124)

at junit.framework.TestResult.run(TestResult.java:109)

at junit.framework.TestCase.run(TestCase.java:118)

at junit.framework.TestSuite.runTest(TestSuite.java:208)

at junit.framework.TestSuite.run(TestSuite.java:203)

at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Affects: 2.0 RC3

Issue Links:

#7102 NPE with TransactionAttributeSourceAdvisor.TransactionAttributeSourcePointcut when debug enabled ("duplicates")