01: package org.apache.ojb.broker.cache;
02:
03: /* Copyright 2002-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:
20: /**
21: * Internal used extension of the {@link ObjectCache}.
22: *
23: * @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
24: * @version $Id: ObjectCacheInternal.java,v 1.1.2.4 2005/12/21 22:24:15 tomdz Exp $
25: */
26: public interface ObjectCacheInternal extends ObjectCache {
27: /**
28: * Object was update or insert.
29: */
30: public static final int TYPE_WRITE = 5;
31: /**
32: * Object was read from a cache entity (e.g. from a second-level cache).
33: */
34: public static final int TYPE_CACHED_READ = 7;
35: /**
36: * Object was new materialized from persistence storage.
37: */
38: public static final int TYPE_NEW_MATERIALIZED = 11;
39: /**
40: * Object caching type was unkown.
41: */
42: public static final int TYPE_UNKNOWN = 0;
43: /**
44: * Object caching type used for temporary storage of objects,
45: * these objects will never be pushed to a higher level cache.
46: */
47: public static final int TYPE_TEMP = -1;
48:
49: /**
50: * For internal use.
51: * This method have to be used by all OJB classes to cache objects.
52: * It allows to decide if an object should be cached or not. Useful
53: * for two level caches to reduce object copy costs.
54: */
55: public void doInternalCache(Identity oid, Object obj, int type);
56:
57: /**
58: * For internal use within <em>ObjectCache</em> implementations or to
59: * build two-level caches. Handle with care.
60: * <p>
61: * Used to cache new objects (not already cached) by it's
62: * {@link org.apache.ojb.broker.Identity}. This method was used to
63: * cache new materialized objects and should work as a "atomic" method
64: * (the check and the put of the object should be atomic) to avoid
65: * concurrency problems.
66: * </p>
67: * <p>
68: * Currently it's not mandatory that all <em>ObjectCache</em> implementations
69: * support this method, so in some cases it's allowed to delegate this
70: * method call to the standard {@link #cache(org.apache.ojb.broker.Identity, Object) cache}.
71: * </p>
72: *
73: * @param oid Identity of the object to cache.
74: * @param obj The object to cache.
75: * @return If object was added <em>true</em>, else <em>false</em>.
76: */
77: public boolean cacheIfNew(Identity oid, Object obj);
78: }
|