Prakash Udupa created TRINIDAD-2438:
---------------------------------------
Summary: Need ability to filter the scope of change storage based
on attribute type
Key: TRINIDAD-2438
URL: https://issues.apache.org/jira/browse/TRINIDAD-2438
Project: MyFaces Trinidad
Issue Type: Improvement
Components: Archetype
Affects Versions: 2.1.0-core
Reporter: Prakash Udupa
The requirement is to be able to tell based on the attribute value type if the
change involving that attribute should be preserved or not, and if it were to
be preserved, should it be scoped to session or to the document (persisted
change).
For example:
Consider implementations of org.apache.myfaces.trinidad.model.RowKeySet being
used as value types for current-row attribute in table and treeTable
components. While the row currency may not change for table between two
requests for the same page, it could change in case of treeTable as it really
depends on the node that is expanded. In this case, the treeTable component may
choose to restrict saving attribute changes for row currency (not choose to
preserve the change at all) by implementing this interface in the RowKeySet
type it uses.
To solve this requirement, the proposal is to introduce an interface that the
complex objects (custom data types of the attribute values) can implement to
indicate the scope. ChangeManager implementations can consult this scope to
decide where to persist the change. The proposed interface is as follows:
----------------------------------------
package org.apache.myfaces.trinidad.change;
/**
* Defines the restricted scope in which ChangeManager should preserve the
attribute change involving values of this
* type. This scope restriction applies only when changes are added via. calls
to addComponentChange()method of the
* ChangeManager and not when changes are added via. calls to its
addDocumentChange() or addDocumentChangeWithOutcome()
* methods.
*/
public interface ScopedChangePersistence
{
/**
* Returns the scope in which the ChangeManager can preserve the change
involving this attribute type
* @return PersistenceScope the scope
*/
public Scope getPersistenceScope();
/**
* Defines the scope in which the ChangeManager can preserve the change
* 1. NONE - Do not add the change at all
* 2. SESSION - Preserve the change for the session lifetime only
* 3. LONGER_THEN_SESSION - Preserve the change beyond session. If this is
the value, any equivalent document change
* will be added if the ChangeManager supports
document change persistence.
* 4. DONT_CARE - The implementation does not care what scope the
change is preserved in. This value can be
* used to let ChangeManager decide the scope.
*/
public static enum Scope
{
NONE,
SESSION,
LONGER_THAN_SESSION,
DONT_CARE;
}
}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)