001: /**
002: * Objective Database Abstraction Layer (ODAL)
003: * Copyright (c) 2004, The ODAL Development Group
004: * All rights reserved.
005: * For definition of the ODAL Development Group please refer to LICENCE.txt file
006: *
007: * Distributable under LGPL license.
008: * See terms of license at gnu.org.
009: */package com.completex.objective.components.ocache;
010:
011: /**
012: * Cache representing an element of multi-index data structure.
013: * Putting a value into it will populate all the linked caches in following manner:
014: * <PRE>
015: * key1 -> Value (belongs to this OdalLinkedCache)
016: * key2 -> Value (belongs to different OdalLinkedCache)
017: * ....
018: * keyN -> Value (belongs to different OdalLinkedCache)
019: * </PRE>
020: *
021: * Removing the Value by key1 from the cache will remove it from all other linked caches as well
022: *
023: * @author Gennady Krizhevsky
024: */
025: public interface OdalLinkedCache extends OdalNotifyingCache,
026: OdalCacheListener, OdalKeyedCache {
027:
028: public static final NullOdalLinkedCache NULL_ODAL_LINKED_CACHE = new NullOdalLinkedCache(
029: "NULL_LINKED_ODAL_CACHE");
030:
031: /**
032: * Core functionality on get object from cache without notifying the listeners.
033: *
034: * @param key key
035: * @return cached value
036: */
037: Object getNotNotify(Object key);
038:
039: /**
040: * Core functionality on put object to cache without notifying the listeners.
041: *
042: * @param key
043: * @param value value to cache
044: * @return old cache value
045: */
046: Object putNotNotify(Object key, Object value);
047:
048: /**
049: * Null implementation
050: */
051: public static class NullOdalLinkedCache implements OdalLinkedCache {
052:
053: private String name;
054:
055: public NullOdalLinkedCache(String name) {
056: this .name = name;
057: }
058:
059: public Object getNotNotify(Object key) {
060: return null;
061: }
062:
063: public Object putNotNotify(Object key, Object value) {
064: return null;
065: }
066:
067: public OdalKeyFactory getKeyFactory() {
068: return OdalKeyFactory.NULL_ODAL_KEY_FACTORY;
069: }
070:
071: public boolean isMarkCacheCollectionElements() {
072: return true;
073: }
074:
075: public boolean isDisabled() {
076: return false;
077: }
078:
079: public void put(Object value) {
080: }
081:
082: public void addListener(OdalCacheListener listener) {
083: }
084:
085: public void removeListener(OdalCacheListener listener) {
086: }
087:
088: public void removeAllListeners() {
089: }
090:
091: public Object get(Object key) {
092: return null;
093: }
094:
095: public Object put(Object key, Object object) {
096: return null;
097: }
098:
099: public Object remove(Object key) {
100: return null;
101: }
102:
103: public String getName() {
104: return name;
105: }
106:
107: public void clear() {
108: }
109:
110: public void beforeGet(Object key) {
111: }
112:
113: public void afterGet(Object key, Object value) {
114: }
115:
116: public void beforePut(Object key, Object value) {
117: }
118:
119: public void afterPut(Object key, Object value) {
120: }
121:
122: public void beforeRemove(Object key) {
123: }
124:
125: public void afterRemove(Object key, Object value) {
126: }
127:
128: public void beforeClear() {
129: }
130:
131: public void afterClear() {
132: }
133: }
134:
135: }
|