Thanks for the review Max!
Can you commit the changes if there are no other concerns?
Thanks
Pavitra
-------- Original Message --------
Subject: [jira] Updated: (TRINIDAD-1942)
ViewDeclarationLanguageFactoryImpl implementation should cache physical
URI for the current viewId on the ViewMap
Date: Wed, 20 Oct 2010 12:28:26 -0400 (EDT)
From: Pavitra Subramaniam (JIRA) <[email protected]>
To: [email protected]
[
https://issues.apache.org/jira/browse/TRINIDAD-1942?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavitra Subramaniam updated TRINIDAD-1942:
------------------------------------------
Attachment: jira-1942-II.patch
This patch (jira-1942-II.patch) contains the code review fix suggested by Max.
ViewDeclarationLanguageFactoryImpl implementation should cache physical URI
for the current viewId on the ViewMap
-----------------------------------------------------------------------------------------------------------------
Key: TRINIDAD-1942
URL: https://issues.apache.org/jira/browse/TRINIDAD-1942
Project: MyFaces Trinidad
Issue Type: Bug
Components: Components
Affects Versions: 2.0.0-alpha-2
Reporter: Pavitra Subramaniam
Attachments: jira-1942-II.patch, jira-1942.patch
In an included page (or fragment) if a composite component gets used, the
CompositeComponentTagHandler retrieves the logical viewId
(context.getViewRoot().getViewId()) first and then gets its physical URI in
order to determine the VDL to use. This is usually not a problem in vanilla JSF
applications or even vanilla Trinidad applications, but in frameworks (such as
Oracle) where the viewId of an included fragment comes into play (iow, the
fragment is in context and not the main page), the PageResolver implementation
can no longer return the correct physical URI for the logical viewId. It merely
returns the logical viewId.
The problem is further exasperated if the logical viewId of the page does not
contain an extension. As there is no extension available, the VDL returned is
the JspViewHandlingStrategy always. This is disastrous when the page is being
rendered using FaceletsVDL.
One way to resolve this issue is to cache the physical URI of the page on the
ViewRoot's viewMap and return the cached value whenever the VDLFactory.getVDL()
is called for a viewId that matches the current viewRoot's viewId.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.