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

Reply via email to