[weld-issues] [JBoss JIRA] Updated: (CDITCK-140) TCK uses cyclic @PostConstruct calls which is forbidden by JSR-250
David Allen (JIRA)
jira-events at lists.jboss.org
Wed Apr 21 07:32:10 EDT 2010
[ https://jira.jboss.org/jira/browse/CDITCK-140?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Allen updated CDITCK-140:
-------------------------------
Fix Version/s: 1.1.0.CR1
> TCK uses cyclic @PostConstruct calls which is forbidden by JSR-250
> ------------------------------------------------------------------
>
> Key: CDITCK-140
> URL: https://jira.jboss.org/jira/browse/CDITCK-140
> Project: CDI TCK
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Tests
> Reporter: Mark Struberg
> Assignee: David Allen
> Fix For: 1.0.2.CR1, 1.1.0.CR1
>
>
> from JSR-250-1.1.MREL section 2.5:
> "The PostConstruct annotation is used on a method that needs to be executed after
> dependency injection is done to perform any initialization. This method MUST be
> invoked before the class is put into service."
> Which I read as "may only get used by others after the @PostConstruct annotated method did run".
> This is backed by the following example
> public BeanA {
> private @Inject BeanB b;
> private int x = 0;
> public int getX() { return x; }
> @PostConstruct void init() { x = b.getX()+7; }
> }
>
> public BeanB {
> private @Inject BeanA a;
> private int x = 0;
> public int getX() { return x; }
> @PostConstruct void init() { x = a.getX()+9; }
> }
> which value do a.x and b.x get finally? This would simply be non-deterministic - and therefore forbidden by the JSR-250 spec.
> Such kind of circular @PostConstruct method calls happen e.g. in CircularDependencyTest Pig -> Food -> Pig
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the weld-issues
mailing list