[ 
https://issues.jboss.org/browse/SEAMFACES-165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12603840#comment-12603840
 ] 

Christian Kaltepoth commented on SEAMFACES-165:
-----------------------------------------------

I did some more research on this. Actually this seems to be a bug in Weld 1.1.0 
and not in Seam Faces. Let me explain:

{{SeamApplicationWrapper}} waits for the {{PostConstructApplicationEvent}} and 
then obtains the {{ApplicationFactory}} from the {{FactoryFinder}}. Then it 
calls {{ApplicationFactory.setApplication()}} to install the Seam Faces wrapper.

With MyFaces the {{SeamApplicationWrapper}} gets the {{WeldApplicationFactory}} 
from the {{FactoryFinder}}. Unfortunately {{SeamApplicationWrapper}} ignores 
calls to {{setApplication()}} and simply delegates them to the underlying 
{{ApplicationFactory}}. The problem here is that {{SeamApplicationWrapper}} 
already holds a reference to the {{Application}} instance that it returns for 
{{getApplication()}} and doesn't update this reference when 
{{setApplication()}} is called. Therefore {{SeamApplicationWrapper}} will 
return the old {{Application}} instance on future calls to {{getApplication()}}.

See the code of {{WeldApplicationFactory}}:

https://github.com/weld/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/servlet/jsf/WeldApplicationFactory.java

For Mojarra the situation is a bit different. When using Mojarra Seam Faces 
calls {{setApplication()}} on Mohjarra's {{InjectionApplicationFactory}}, which 
wraps {{SeamApplicationWrapper}}. As {{InjectionApplicationFactory}} implements 
{{setApplication()}} correctly, the bug doesn't occur on Mojarra.

Does this sound reasonable? If you agree to my explanation I could open a 
ticket for Weld regarding this.

> @Inject for Validators doesn't work with MyFaces
> ------------------------------------------------
>
>                 Key: SEAMFACES-165
>                 URL: https://issues.jboss.org/browse/SEAMFACES-165
>             Project: Seam Faces
>          Issue Type: Bug
>          Components: Validation & Conversion
>    Affects Versions: 3.0.1
>         Environment: Tomcat 7.0.8, MyFaces 2.0.5, Weld 1.1.0
>            Reporter: Christian Kaltepoth
>
> @Inject doesn't work for validators when using MyFaces. The fields are always 
> null.
> If I run the application with Mojarra instead of MyFaces everything works 
> fine.
> I'm note completely sure if it is a Seam Faces or a MyFaces issue.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues

Reply via email to