[ https://issues.apache.org/jira/browse/TRINIDAD-1923?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gabrielle Crawford updated TRINIDAD-1923: ----------------------------------------- Status: Resolved (was: Patch Available) Fix Version/s: 1.2.15-core 2.0.0.4-core Resolution: Fixed > CLONE -Issue in > org.apache.myfaces.trinidad.model.ProccessUtils.getMaxVisitedRowKey > ----------------------------------------------------------------------------------- > > Key: TRINIDAD-1923 > URL: https://issues.apache.org/jira/browse/TRINIDAD-1923 > Project: MyFaces Trinidad > Issue Type: Bug > Affects Versions: 2.0.0.3-core > Environment: Mac OSX 10.5 with JVM 1.6.0_20. > Running using ADF with JDeveloper 11.1.1.3.0 > Reporter: Pavitra Subramaniam > Priority: Minor > Fix For: 1.2.15-core , 2.0.0.4-core > > Attachments: ProcessUtils.java > > > (Created this issue for fixing on trinidad trunk) > I have been running the following example: > http://adf-samples.googlecode.com/files/SampleTrainModelWithCustomAction.zip > I just changed the view.train.TrainIdMenuModel class constructor to: > public TrainIdMenuModel() { > super(); > super.setMaxPathKey("MyMaxPathKey"); > } > This is done to get a max visited node behavior. However when I click on the > button 'Next' to navigate on the tree the nodes are not enabled as expected > and the user has to click on 'Back' and then 'Next' twice to get the nodes > enabled correctly. > The example can be found in this blog entry: > http://jobinesh.blogspot.com/2010/04/custom-model.html which is based on the > ADF rich client demo > (http://www.oracle.com/technology/products/adf/adffaces/11/doc/demo/adf_faces_rc_demo.html). > The rich client demo can also be used to reproduce the issue. > I accept that using a case test that relies in a whole framework like ADF is > not ideal, but looking at the code of > org.apache.myfaces.trinidad.model.ProcessUtils I think that the problem lies > there. In the javadoc it is stated: "If set but the focus rowKey is after > maxVisitedRowKey, set maxVisitedRowKey to the focus rowKey." > However if we look at the code, we can see that this is not respected since > the maxPath variable is 'cached' at the request map. > If we assume that a MenuModel is going to be updated during the processing of > a request BUT that the ProccessUtils.getMaxVisitedRowKey is invoked BEFORE > the model is actually updated, the maxPath value will be calculated (and > cached) using the non updated model. In particular the maxPath will be > calculated incorrectly if the focusRowKey of the model is NOT updated before > the first call to ProccessUtils.getMaxVisitedRowKey occurs during the > request. After this, if the focusRowKey is updated in the model and > ProccessUtils.getMaxVisitedRowKey is called (always being in the context of > the same request), the contract will not be respected and the cached maxPath > value will be returned (which can correspond to a node BEFORE the current > focus node, which is wrong). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.