Looks like TransactionalTransform breaks in some rare situations
If Service A extends Service B, and when both has Transactional annotation. if Service A gets compiled before Service B, and when a class has service A injected into it, calling the transactional method on A results in NPE because of null Transaction manager
The reason seems how the transactional AST is done. when AST gets applied to both super/sub classes, the transactionManager in subclass would hide transactionManager in super class. so transactionManager is always null in super class, and when a super class method is called, it results in NPE
Environment Information
Operating System: OSX ElCapitan
Grails Version: 2.5.5
JDK Version: 1.8
Example Application
Look at the attached example application, and run tests, you would see the test fails because of NPE
Looks like TransactionalTransform breaks in some rare situations
If Service A extends Service B, and when both has Transactional annotation. if Service A gets compiled before Service B, and when a class has service A injected into it, calling the transactional method on A results in NPE because of null Transaction manager
The reason seems how the transactional AST is done. when AST gets applied to both super/sub classes, the transactionManager in subclass would hide transactionManager in super class. so transactionManager is always null in super class, and when a super class method is called, it results in NPE
Environment Information
Example Application
Look at the attached example application, and run tests, you would see the test fails because of NPE
bugwork.zip