Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
ObjectCacheInternal |
|
| 1.0;1 |
1 | package org.apache.ojb.broker.cache; | |
2 | ||
3 | /* Copyright 2002-2005 The Apache Software Foundation | |
4 | * | |
5 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | * you may not use this file except in compliance with the License. | |
7 | * You may obtain a copy of the License at | |
8 | * | |
9 | * 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 2007-08-24 22:17:29 ewestfal Exp $ | |
25 | */ | |
26 | public interface ObjectCacheInternal extends ObjectCache | |
27 | { | |
28 | /** | |
29 | * Object was update or insert. | |
30 | */ | |
31 | public static final int TYPE_WRITE = 5; | |
32 | /** | |
33 | * Object was read from a cache entity (e.g. from a second-level cache). | |
34 | */ | |
35 | public static final int TYPE_CACHED_READ = 7; | |
36 | /** | |
37 | * Object was new materialized from persistence storage. | |
38 | */ | |
39 | public static final int TYPE_NEW_MATERIALIZED = 11; | |
40 | /** | |
41 | * Object caching type was unkown. | |
42 | */ | |
43 | public static final int TYPE_UNKNOWN = 0; | |
44 | /** | |
45 | * Object caching type used for temporary storage of objects, | |
46 | * these objects will never be pushed to a higher level cache. | |
47 | */ | |
48 | public static final int TYPE_TEMP = -1; | |
49 | ||
50 | ||
51 | /** | |
52 | * For internal use. | |
53 | * This method have to be used by all OJB classes to cache objects. | |
54 | * It allows to decide if an object should be cached or not. Useful | |
55 | * for two level caches to reduce object copy costs. | |
56 | */ | |
57 | public void doInternalCache(Identity oid, Object obj, int type); | |
58 | ||
59 | /** | |
60 | * For internal use within <em>ObjectCache</em> implementations or to | |
61 | * build two-level caches. Handle with care. | |
62 | * <p> | |
63 | * Used to cache new objects (not already cached) by it's | |
64 | * {@link org.apache.ojb.broker.Identity}. This method was used to | |
65 | * cache new materialized objects and should work as a "atomic" method | |
66 | * (the check and the put of the object should be atomic) to avoid | |
67 | * concurrency problems. | |
68 | * </p> | |
69 | * <p> | |
70 | * Currently it's not mandatory that all <em>ObjectCache</em> implementations | |
71 | * support this method, so in some cases it's allowed to delegate this | |
72 | * method call to the standard {@link #cache(org.apache.ojb.broker.Identity, Object) cache}. | |
73 | * </p> | |
74 | * | |
75 | * @param oid Identity of the object to cache. | |
76 | * @param obj The object to cache. | |
77 | * @return If object was added <em>true</em>, else <em>false</em>. | |
78 | */ | |
79 | public boolean cacheIfNew(Identity oid, Object obj); | |
80 | } |