If you don't provide a wrapper and the customers don't using it for
their wrappers then adding a new method onto the abstract class will
result in the default implementation being called rather than delegating
through to the wrapped class that may have overridden the default
implementation.
-- Blake Sullivan
On 3/9/11 3:40 PM, Prakash Udupa (JIRA) wrote:
[
https://issues.apache.org/jira/browse/TRINIDAD-2055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13004875#comment-13004875
]
Prakash Udupa commented on TRINIDAD-2055:
-----------------------------------------
Andy,
I'm trying to understand the benefit of this new wrapper API.
If we introduce any new method to ChangeManager, we will need to provide a
default implementation in the ChangeManager class so that we do not break the
existing implementations. Does this not suffice to address the fragility issue
here, how does the wrapper help any more ?.
Introduce ChangeManager wrapper class
-------------------------------------
Key: TRINIDAD-2055
URL: https://issues.apache.org/jira/browse/TRINIDAD-2055
Project: MyFaces Trinidad
Issue Type: Improvement
Affects Versions: 2.0.0-beta-2
Reporter: Andy Schwartz
Assignee: Andy Schwartz
Priority: Minor
Attachments: ChangeManagerWrapper.java
One way that users might customize change management behavior is to create a
proxy ChangeManager that delegates through to an underlying ChangeManager (eg.
to SessionChangeManager) for most operations after performing filtering of the
incoming changes. It is possible to implement such proxy ChangeManager classes
today. However, without a wrapper base class, these implementations are
fragile - ie. they will break if we ever introduce a new method to the
ChangeManager API.
A more robust solution would be to introduce a base wrapper class for proxy
ChangeManager implementations to extend. That way, in the event that we do
introduce new ChangeManager methods, the base wrapper class can be updated in
parallel, protecting subclasses from the change.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira