01: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
02:
03: This file is part of the db4o open source object database.
04:
05: db4o is free software; you can redistribute it and/or modify it under
06: the terms of version 2 of the GNU General Public License as published
07: by the Free Software Foundation and as clarified by db4objects' GPL
08: interpretation policy, available at
09: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11: Suite 350, San Mateo, CA 94403, USA.
12:
13: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14: WARRANTY; without even the implied warranty of MERCHANTABILITY or
15: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16: for more details.
17:
18: You should have received a copy of the GNU General Public License along
19: with this program; if not, write to the Free Software Foundation, Inc.,
20: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21: package com.db4o.replication;
22:
23: import com.db4o.*;
24:
25: /**
26: * @deprecated
27: * will be called by a {@link com.db4o.replication.ReplicationProcess}upon
28: * replication conflicts. Conflicts occur whenever
29: * {@link ReplicationProcess#replicate(Object)}is called with an object that
30: * was modified in both ObjectContainers since the last replication run between
31: * the two.
32: */
33: public interface ReplicationConflictHandler {
34:
35: /**
36: * the callback method to be implemented to resolve a conflict. <br>
37: * <br>
38: *
39: * @param replicationProcess
40: * the {@link ReplicationProcess}for which this
41: * ReplicationConflictHandler is registered
42: * @param a
43: * the object modified in the peerA ObjectContainer
44: * @param b
45: * the object modified in the peerB ObjectContainer
46: * @return the object (a or b) that should prevail in the conflict or null,
47: * if no action is to be taken. If this would violate the direction
48: * set with
49: * {@link ReplicationProcess#setDirection(ObjectContainer, ObjectContainer)}
50: * no action will be taken.
51: * @see ReplicationProcess#peerA()
52: * @see ReplicationProcess#peerB()
53: */
54: public Object resolveConflict(
55: ReplicationProcess replicationProcess, Object a, Object b);
56:
57: }
|