As Scott has pointed out, JSR-301 had to make some difficult choices here because of the lack of flexibility in JSF 1.2. We wanted where ever possible to have the JSF artifact running in a portlet environment to run in a NamingContainer that took the portlet namespace id into account (ensuring proper namespacing in the consumer). Unfortunately we couldn't come up with a technical solution for wrapping the UIViewRoot. Because a major philosophy of JSR-301 is to cohabitate with other Faces extensions we felt it was inappropriate to replace any UIViewRoot extension with the special bridge one. Instead we compromised and said its only safe to replace the UIViewRoot if its the RIs/standard one otherwise we ask the other UIViewRoot implementors to add this NamingContainer feature to their implementation. The drawback to this is viewHandler.createView needs to get called. -Mike-

Andrew Robinson wrote:
From my understanding:

Application.createComponent() is the correct way to create the
UIViewRoot. The view handler should use this method internally to get
an instance to the view root component. Instead, the bridge should be
registering the component type for the special view root in the
application, so that calls to createComponent return the one needed
for the bridge.

-Andrew

On 10/18/07, Scott O'Bryan (JIRA) <[email protected]> wrote:
     [ 
https://issues.apache.org/jira/browse/TRINIDAD-134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Scott O'Bryan updated TRINIDAD-134:
-----------------------------------

    Status: Patch Available  (was: Open)

StateManagerImpl is not fully compatible with JSR-301
-----------------------------------------------------

                Key: TRINIDAD-134
                URL: https://issues.apache.org/jira/browse/TRINIDAD-134
            Project: MyFaces Trinidad
         Issue Type: Bug
         Components: Portlet
   Affects Versions: 1.2.1-core
        Environment: JSR-168, JSR-301
           Reporter: Scott O'Bryan
           Assignee: Scott O'Bryan
            Fix For: 1.2.2-core

        Attachments: trinidad-134.patch


StateManagerImpl has a performance enhancement that is not compatible with 
JSR-301.  Inside of the popRoot method inside of 
org.apache.myfaces.trinidadinternal.application.StateManagerImpl, the view root 
is retrieved using Application.createComponent();.  The JSR-301 bridge has a 
special UIViewRoot that, due to limitations in the JSF specification, can only 
reasonably be retrieved through ViewHandler.createViewRoot().  We either need 
to try to try to retrieve the UIViewRoot using this mechanism OR we need to 
disable this performance optimization in a portal environment.
--
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