[ 
https://issues.apache.org/jira/browse/TRINIDAD-1889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Robinson updated TRINIDAD-1889:
--------------------------------------

           Status: Resolved  (was: Patch Available)
    Fix Version/s: 2.0.0.3-core
       Resolution: Fixed

> Issue with Trinidad UIXCollection class 'createCollectionModel' method
> ----------------------------------------------------------------------
>
>                 Key: TRINIDAD-1889
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1889
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions: 2.0.0.3-core
>         Environment: All
>            Reporter: Kamran Kashanian
>             Fix For: 2.0.0.3-core
>
>         Attachments: uixcollection1.patch
>
>
> The Trinidad UIXCollection class contains an abstract method called 
> 'createCollectionModel'.   Subclasses are supposed to override this method 
> and use it to create a CollectionModel instance for use by the component.
> Currently subclasses like UIXTable and UIXTree use 'createCollectionModel' to 
> get the component's 'value' attribute and wrap the object in the 'value' 
> attribute in a CollectionModel/TreeModel instance (if necessary) .
> UIXTable and UIXTree also perform other initializations in 
> 'createCollectionModel.  For example,  SelectedRowKeys and DisclosedRowKeys 
> sets are initialized in 'createCollectionModel'.
> The issue with the current design is that the component's reference to the 
> CollectionModel is not fully initialized until 'createCollectionModel' 
> returns a CollectionModel instance and the resulting model is stored in the 
> component's state by UIXCollection.
> So for example,  UIXTable and UIXTree should not be performing initialization 
> of component's attribute that depend on a fully initialized CollectionModel 
> reference inside the 'createCollectionModel'.  
> The SelectedRowKeys and DisclosedRowKeys sets require a fully initialized 
> CollectionModel before they should be referenced.  Otherwise if these 
> attributes are EL-bound and a backing bean logic references the 
> CollectionModel in the getter method for SelectedRowKeys and 
> DisclosedRowKeys,  the backing bean may get an uninitialized CollectionModel 
> reference.
> The proposal is to add the following method to UIXCollection:
>   /**
>    * Called after <code>createCollectionModel</code> when the model is fully 
> initialized
>    * Subclasses can use this method to perform initialization of component 
> attributes 
>    * that should occur only after the CollectionModel is fully initialized in 
>    * <code>createCollectionModel</code>
>    * This is a do nothing implementation to avoid breaking existing code
>    * * @see #createCollectionModel
>    * @param model
>    */
>   protected void postCreateCollectionModel(CollectionModel model)
>   {
>     // do nothing
>   }
> This method will be called by UIXCollection after 'createCollectionModel' 
> returns and the component's reference to the CollectionModel is fully 
> initialized.  Any initialization of model-dependent attributes can then occur 
> in 'postCreateCollectionModel'

-- 
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