[ 
https://issues.apache.org/jira/browse/OAK-153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13401423#comment-13401423
 ] 

Tommaso Teofili commented on OAK-153:
-------------------------------------

bq. Background: I could imagine an implementation where beforeCommit and 
afterCommit cooperate in that the final afterCommit might be interested in 
stuff done for beforeCommit. Depending on how the classes are instantiated this 
might be simple or not.

I think splitting the interface shouldn't hurt such a use case (e.g. ClassY 
implements CommitEditor, Observer) while the current interface forces to have 
both even if, for example, the CommitHook is just useful for doing post commit 
operations (e.g. indexing/persisting stuff on some external/different storage). 
In that case the #beforeCommit could often be:
{code}
    @Override
    public NodeState beforeCommit(NodeStore store, NodeState before, NodeState 
after) throws CommitFailedException {
        // doesn't do anything during the pre commit phase
        return after;
    }
{code}
My 2 cents here (quite new to Oak).
                
> Split the CommitHook interface
> ------------------------------
>
>                 Key: OAK-153
>                 URL: https://issues.apache.org/jira/browse/OAK-153
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: Jukka Zitting
>            Assignee: Jukka Zitting
>
> The {{CommitHook}} interface has two methods, {{beforeCommit()}} and 
> {{afterCommit()}}, since the symmetry originally seemed like a good idea. 
> However, in practice these methods are not really so symmetric after all.
> For example, unlike {{afterCommit()}} the {{beforeCommit()}} method may end 
> up being called multiple times for a given changeset if it needs to be 
> repeatedly rebased or otherwise revised before it can be committed. There 
> isn't even any guarantee that a particular changeset on which 
> {{beforeCommit()}} has been called ever gets committed. And on the other hand 
> there are good reasons to avoid calling {{afterCommit()}} on each and every 
> commit that has been made. Instead it could be called only every now and then 
> to cover larger sets of changes.
> Thus I'd like to split the {{CommitHook}} interface to two parts that I'd 
> tentatively call {{CommitEditor}} and {{Observer}}.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to