[weld-issues] [JBoss JIRA] Closed: (CDITCK-140) TCK uses cyclic @PostConstruct calls which is forbidden by JSR-250

Pete Muir (JIRA) jira-events at lists.jboss.org
Mon Apr 12 12:49:37 EDT 2010


     [ https://jira.jboss.org/jira/browse/CDITCK-140?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pete Muir closed CDITCK-140.
----------------------------

    Fix Version/s: 1.0.2.CR1
       Resolution: Rejected
         Assignee: Pete Muir


I agree that it is non-deterministic in the initial example you give. However this does not affect the Pig/Food test as the name of both the big and the food is unchanging, and so is not affected by ordering issues.

> 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: Pete Muir
>             Fix For: 1.0.2.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