| 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 | } |