+++ /dev/null
-/*
- * Copyright 2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.wamblee.cache;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-
-import net.sf.ehcache.Cache;
-import net.sf.ehcache.CacheException;
-import net.sf.ehcache.CacheManager;
-import net.sf.ehcache.Element;
-import net.sf.ehcache.config.Configuration;
-import net.sf.ehcache.config.ConfigurationFactory;
-
-import org.apache.log4j.Logger;
-import org.wamblee.io.InputResource;
-
-/**
- * Cache implemented on top of EhCache.
- *
- * @author Erik Brakkee
- */
-public class EhCache<KeyType extends Serializable, ValueType extends Serializable>
- implements org.wamblee.cache.Cache<KeyType, ValueType> {
-
- private static final Logger LOGGER = Logger.getLogger(EhCache.class);
-
- /**
- * EH Cache manager.
- */
- private CacheManager _manager;
-
- /**
- * EH cache.
- */
- private Cache _cache;
-
- /**
- * Constructs a cache based on EHCache.
- *
- * @param aResource
- * Resource containing the configuration file for EHCache.
- * @param aCacheName
- * Name of the cache to use. If a cache with this name does not
- * exist, one is created based on default settings.
- * @throws IOException
- * @throws CacheException
- */
- public EhCache(InputResource aResource, String aCacheName)
- throws IOException, CacheException {
- InputStream is = aResource.getInputStream();
- try {
- _manager = new CacheManager(is);
- _cache = _manager.getCache(aCacheName);
- if (_cache == null) {
- LOGGER.warn("Creating cache '" + aCacheName
- + "' because it is not configured");
- _manager.addCache(aCacheName);
- _cache = _manager.getCache(aCacheName);
- }
- assert _cache != null;
- } finally {
- is.close();
- }
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.wamblee.cache.Cache#put(KeyType, ValueType)
- */
- public void put(KeyType aKey, ValueType aValue) {
- _cache.put(new Element(aKey, aValue));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.wamblee.cache.Cache#get(KeyType)
- */
- public ValueType get(KeyType aKey) {
- try {
- Element element = _cache.get(aKey);
- if (element == null) {
- return null;
- }
- return (ValueType) element.getValue();
- } catch (CacheException e) {
- throw new RuntimeException("Cache problem key = '" + aKey + "'", e);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.wamblee.cache.Cache#remove(KeyType)
- */
- public void remove(KeyType aKey) {
- _cache.remove(aKey);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.wamblee.cache.Cache#clear()
- */
- public void clear() {
- _cache.removeAll();
- }
-}