Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upPrevent FaceletContext.FACELET_CONTEXT_KEY constant to be inlined by compiler #1257
Comments
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
commented
Jan 27, 2014
|
Reported by lfryc |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
commented
Jan 27, 2014
|
Issue-Links: |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
Jan 27, 2014
lfryc said:
I can't see the description of the issue even though I added it.
Re-posting:
In RichFaces 5 when we compile ActionListenerHandler against Mojarra 2.2.5 and then run the code against older 2.1 release (2.1.7), we get NullPointerException.
The issue is well described in RF-13472.
The problem here is that a value of FACELET_CONTEXT_KEY contstant is inlined by compiler, but the value has changed between Mojarra 2.1 ("com.sun.faces.facelets.FACELET_CONTEXT") and 2.2 ("javax.faces.FACELET_CONTEXT"). This means the code compiled against one 2.2 won't work on 2.1 and vice versa.
What we can do is prevent compiler from inlining the FACELET_CONTEXT_KEY constant.
As suggested on stackoverflow, it is possible to use String#intern() or String#toString():
public static final String FACELET_CONTEXT_KEY =
"javax.faces.FACELET_CONTEXT".intern();
http://stackoverflow.com/questions/377819/are-all-compile-time-constants-inlined
http://stackoverflow.com/questions/1833581/when-to-use-intern-on-string-literals
I believe the fix should go to 2.1.x branch as well.
glassfishrobot
commented
Jan 27, 2014
|
lfryc said: Re-posting: In RichFaces 5 when we compile ActionListenerHandler against Mojarra 2.2.5 and then run the code against older 2.1 release (2.1.7), we get NullPointerException. The issue is well described in RF-13472. The problem here is that a value of FACELET_CONTEXT_KEY contstant is inlined by compiler, but the value has changed between Mojarra 2.1 ("com.sun.faces.facelets.FACELET_CONTEXT") and 2.2 ("javax.faces.FACELET_CONTEXT"). This means the code compiled against one 2.2 won't work on 2.1 and vice versa. What we can do is prevent compiler from inlining the FACELET_CONTEXT_KEY constant. As suggested on stackoverflow, it is possible to use String#intern() or String#toString():
http://stackoverflow.com/questions/377819/are-all-compile-time-constants-inlined I believe the fix should go to 2.1.x branch as well. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
commented
Jan 27, 2014
|
File: changebundle.txt |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
Jan 27, 2014
@manfredriem said:
Lukas, I have attached the change bundle and once review has done I will commit it, then when it passes the 2.2 TCK I'll will close this issue. For the 2.1 work please file a back port task pointing back to this issue. Thanks!
glassfishrobot
commented
Jan 27, 2014
|
@manfredriem said: |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
Jan 28, 2014
@manfredriem said:
Applied to 2.2 branch,
svn commit -m "Fixes https://java.net/jira/browse/JAVASERVERFACES-3155, r=edburns, intern the FACELET_CONTEXT_KEY so it does not get inlined."
Sending jsf-api/src/main/java/javax/faces/view/facelets/FaceletContext.java
Transmitting file data .
Committed revision 12799.
Once the 2.2 TCK passes I will go ahead and close the issue. Thanks!
glassfishrobot
commented
Jan 28, 2014
|
@manfredriem said: svn commit -m "Fixes https://java.net/jira/browse/JAVASERVERFACES-3155, r=edburns, intern the FACELET_CONTEXT_KEY so it does not get inlined." Once the 2.2 TCK passes I will go ahead and close the issue. Thanks! |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
Jan 29, 2014
@manfredriem said:
Applied to 2.2 branch,
svn commit -m "Reverting change as it breaks the TCK"
Sending jsf-api/src/main/java/javax/faces/view/facelets/FaceletContext.java
Transmitting file data .
Committed revision 12804.
glassfishrobot
commented
Jan 29, 2014
|
@manfredriem said: svn commit -m "Reverting change as it breaks the TCK" |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
Jan 29, 2014
@manfredriem said:
Unfortunately as the proposed change breaks the TCK I have moved it to the spec issue tracker to put it on the table for 2.3.
glassfishrobot
commented
Jan 29, 2014
|
@manfredriem said: |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
Aug 1, 2014
@edburns said:
Set priority to baseline ahead of JSF 2.3 triage. Priorities will be assigned accurately after this exercise.
glassfishrobot
commented
Aug 1, 2014
|
@edburns said: |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
commented
Aug 1, 2014
|
@manfredriem said: |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
commented
Aug 19, 2014
|
Marked as fixed on Tuesday, August 19th 2014, 8:27:55 am |
glassfishrobot
closed this
Aug 19, 2014
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
glassfishrobot
May 5, 2017
This issue was imported from java.net JIRA JAVASERVERFACES_SPEC_PUBLIC-1257
glassfishrobot
commented
May 5, 2017
|
This issue was imported from java.net JIRA JAVASERVERFACES_SPEC_PUBLIC-1257 |
glassfishrobot commentedJan 27, 2014
Affected Versions
[2.3]