01: package org.apache.ojb.otm;
02:
03: /* Copyright 2003-2005 The Apache Software Foundation
04: *
05: * Licensed under the Apache License, Version 2.0 (the "License");
06: * you may not use this file except in compliance with the License.
07: * You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: import org.apache.ojb.broker.Identity;
19: import org.apache.ojb.broker.PBKey;
20: import org.apache.ojb.otm.copy.ObjectCopyStrategy;
21: import org.apache.ojb.otm.core.Transaction;
22: import org.apache.ojb.otm.lock.map.LockMap;
23: import org.apache.ojb.otm.lock.wait.LockWaitStrategy;
24: import org.apache.ojb.otm.swizzle.Swizzling;
25: import org.apache.ojb.otm.transaction.TransactionFactory;
26:
27: /**
28: *
29: * OTMKit implementations provide the initial point of entry
30: * into the OTM layer.
31: *
32: * @author <a href="mailto:rraghuram@hotmail.com">Raghu Rajah</a>
33: *
34: */
35: public abstract class OTMKit implements Kit {
36: /**
37: * Obtain an OTMConnection for the given persistence broker key
38: */
39: public OTMConnection acquireConnection(PBKey pbKey) {
40: TransactionFactory txFactory = getTransactionFactory();
41: return txFactory.acquireConnection(pbKey);
42: }
43:
44: /**
45: * Obtain the transaction which <code>conn</code> is currently
46: * bound to.
47: */
48: public Transaction getTransaction(OTMConnection conn) {
49: TransactionFactory txFactory = getTransactionFactory();
50: Transaction tx = txFactory.getTransactionForConnection(conn);
51: tx.setKit(this );
52: return tx;
53: }
54:
55: ////////////////////////////
56: // Abstract Methods
57: ////////////////////////////
58:
59: protected abstract TransactionFactory getTransactionFactory();
60:
61: public abstract Swizzling getSwizzlingStrategy();
62:
63: public abstract LockWaitStrategy getLockWaitStrategy();
64:
65: public abstract LockMap getLockMap();
66:
67: public abstract ObjectCopyStrategy getCopyStrategy(Identity oid);
68:
69: /**
70: * Should OTM implicitely read lock all objects that are reachable
71: * from the explicitely locked object? The updates to the read locked
72: * objects are automatically stored to the database at the end
73: * of transaction.
74: **/
75: public abstract boolean isImplicitLockingUsed();
76:
77: /**
78: * Should OTM verify each inserted object for presence in the database?
79: **/
80: public abstract boolean isInsertVerified();
81:
82: /**
83: * Should OTM perform INSERTs for the given object eagerly or during commit?
84: **/
85: public abstract boolean isEagerInsert(Object obj);
86:
87: }
|