1/*2 * Licensed to the Apache Software Foundation (ASF) under one or more3 * contributor license agreements. See the NOTICE file distributed with4 * this work for additional information regarding copyright ownership.5 * The ASF licenses this file to You under the Apache License, Version 2.06 * (the "License"); you may not use this file except in compliance with7 * the License. You may obtain a copy of the License at8 * 9 * http://www.apache.org/licenses/LICENSE-2.010 * 11 * Unless required by applicable law or agreed to in writing, software12 * 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 and15 * limitations under the License.16 */17packageorg.apache.jetspeed.components.interceptors;
1819import org.aopalliance.intercept.MethodInvocation;
20import org.apache.jetspeed.cache.general.GeneralCache;
2122/***23 * <p>24 * CacheInterceptor25 * </p>26 * <p>27 * AoP Interceptor that can be used for generalized caching. The only requirement is28 * that intercepted methods must receive at least one (1) arguments.29 * <br /> <br /> 30 * CacheInterceptor ALWAYS use the first argument in the method to build the unique cache key. 31 * </p>32 * 33 * @author <a href="mailto:weaver@apache.org">Scott T. Weaver </a>34 * @version $Id: CachingInterceptor.java 516448 2007-03-09 16:25:47Z ate $35 * 36 */37publicclassCachingInterceptorextendsAbstractCacheInterceptor38 {
39404142/***43 * @param cache44 */45publicCachingInterceptor( GeneralCache cache )
46 {
47super(cache);
48 }
4950/***51 * <p>52 * doCacheOperation53 * </p>54 *55 * @param mi56 * @param uniqueKey57 * @return58 * @throws Throwable59 */60protected Object doCacheOperation( MethodInvocation mi, String uniqueKey ) throws Throwable
61 {
62if(cache.contains(uniqueKey))
63 {
64return cache.get(uniqueKey);
65 }
66else67 {
68 Object value = mi.proceed();
69if(value != null)
70 {
71 cache.put(uniqueKey, value);
72 }
7374return value;
75 }
76 }
77 }