[ 
https://issues.apache.org/jira/browse/MYFACES-1761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12541341
 ] 

Paul McMahan commented on MYFACES-1761:
---------------------------------------

Thanks Martin.  As you can probably tell (and maybe agree?) I am still not 
convinced by the original claim that the current @PostConstruct support in 
MyFaces is not compliant with the wording in the JSF spec.  In fact I could go 
so far as to say that changing the current behavior actually introduces a bug 
because the spec is clear about injection (and therefore the timing of 
@PostConstruct) being limited to container managed resources.

So like you pointed out our next recourse is to look at the TCK and the RI for 
enlightenment.  MyFaces 1.2 passed the TCK so we are OK there.  But I don't 
think that the JSF RI (by itself) can be used to determine the meaning of this 
language in the spec because IIUC the JSF RI only provides the "hooks" for 
dependency injection.

Therefore my position is that it is the responsibility of the embedder of 
MyFaces to ensure compatibility with the *glassfish* RI, and compatibility with 
glassfish is not the responsibility of MyFaces itself.  Testing the JSF RI's 
resource injection behavior outside of a compliant JavaEE container (such as in 
tomcat or jetty) is not valid IMHO.

MyFaces can help JavaEE containers meet this compatibility requirement by 
refactoring ManagedBeanBuilder.  And furthermore MyFaces can provide (as a 
feature) default implementations of LifecycleProvider for various non-JavaEE 
environments that include this functionality.

My hope is that we can implement this @PostConstruct behavior while keeping the 
LifecycleProvider interface intact.   LifecycleProvider.newInstance() is the 
integration point for dependency injection in several JavaEE components in 
Geronimo, and I do not think that it is necessary to change that interface to 
provide the desired behavior.

> Handling PostConstruct annotations - wrong order
> ------------------------------------------------
>
>                 Key: MYFACES-1761
>                 URL: https://issues.apache.org/jira/browse/MYFACES-1761
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions:  1.2.0, 1.2.1-SNAPSHOT
>            Reporter: Bernhard Huemer
>             Fix For: 1.2.1-SNAPSHOT
>
>         Attachments: MyFaces-1761.patch, postconstruct-demo.zip
>
>
> The specification states that managed bean methods annotated with 
> @PostConstruct have to be called after the object is initialized and after 
> dependency injection is performed. However, MyFaces calls those methods after 
> the bean instance is created but before dependency injection is performed 
> (for example, see 
> http://www.nabble.com/myfaces-1.2.0-postConstruct-tf4760326.html ). In order 
> to resolve this bug the LifecycleProvider interface has to be changed. 
> Currently there's only one method responsible for creating/initializing a new 
> bean: newInstance(). This design choice implicates that there's no 
> possibility to seperate the steps "creating the bean" and "postconstructing 
> the bean".

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to