View Javadoc
1 /* ====================================================================
2 * License:
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The end-user documentation included with the redistribution,
17 * if any, must include the following acknowledgment:
18 * "This product includes software developed by
19 * Robert Half International (http://www.rhi.com/)."
20 * Alternately, this acknowledgment may appear in the software itself,
21 * if and wherever such third-party acknowledgments normally appear.
22 *
23 * 4. The names "Parc", "RHI", and "Robert Half International" must
24 * not be used to endorse or promote products derived from this
25 * software without prior written permission. For written
26 * permission, please contact pete.mckinstry@rhi.com.
27 *
28 * 5. Products derived from this software may not be called "PARC",
29 * nor may "PARC" appear in their name, without prior written
30 * permission of Robert Half International.
31 *
32 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
33 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
36 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
39 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
40 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
41 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
42 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 * ====================================================================
45 *
46 */
47 package com.rhi.architecture.cache.simple;
48
49 import com.rhi.architecture.cache.CacheManager;
50 import com.rhi.architecture.cache.DuplicateObjectException;
51 import com.rhi.architecture.logging.LogUtil;
52 import com.rhi.architecture.logging.Logger;
53 import com.rhi.architecture.config.ConfigurationException;
54
55 import java.util.HashMap;
56
57 /***
58 * This is simple cache manager that handles the cacheable
59 * objects by storing and retriving from HashMap java class.
60 * Other complex cache managers can store in different java
61 * classes or third party caching mechanism like JCS etc.
62 *
63 * @author G Srinivas
64 * @copyright 2002, Robert Half Int'l., Inc. All rights reserved.
65 *
66 * @since 1.0
67 */
68 public class SimpleCacheManager implements CacheManager {
69
70 /***
71 * This stores all the cacheable objects.
72 */
73 protected HashMap cache;
74
75 private String cacheClassName;
76
77 private static Logger log = null;
78
79 /***
80 * @return Logger to use
81 */
82 public Logger log() {
83 if (log == null) {
84 try {
85 log = LogUtil.getLogger();
86 }
87 catch (ConfigurationException e) {
88 /*
89 * don't set member variable because the logging may
90 * be initialized later & we don't want to store
91 * this in that case.
92 */
93 return LogUtil.getDefaultLogger();
94 }
95 }
96 return log;
97 }
98
99 /***
100 * Constructor
101 *
102 * @param name
103 * @since 1.0
104 */
105 public SimpleCacheManager(String name) {
106 cacheClassName = name;
107 cache = new HashMap();
108 }
109
110 /***
111 * This method retrieves the cacheable object from
112 * cache using the key and returns the it.
113 *
114 * @param pkKey
115 * @return Object
116 */
117 public Object get(Object pkKey) {
118 Object lookUpResult = null;
119 lookUpResult = cache.get(cacheClassName + pkKey);
120 log().debug(
121 "After getting for : "
122 + cacheClassName
123 + pkKey
124 + " the Object: "
125 + lookUpResult);
126 return lookUpResult;
127 }
128
129 /***
130 * This method adds the cacheable object to the
131 * cache with its key.
132 *
133 * @param key
134 * @param cachedObject
135 * @exception DuplicateObjectException It throws
136 * DuplicateObjectException which is sub-class of CacheException
137 */
138 public void put(Object key, Object cachedObject)
139 throws DuplicateObjectException {
140 try {
141 if (cache == null) {
142 cache = new HashMap();
143 }
144 cache.put(cacheClassName + key, cachedObject);
145 }
146 catch (Exception cacheEx) {
147 log().error("Error while putting into hashmap");
148 throw new DuplicateObjectException(
149 "CacheException due to duplicate entry" + cacheEx);
150 }
151 }
152
153 }
This page was automatically generated by Maven