View Javadoc

    1   /***
    2    * @(#)OSCacheServiceImpl.java
    3    *
    4    * JFoxSOAF, Service-Oriented Application Framework
    5    *
    6    * Copyright(c) JFoxSOAF Team
    7    *
    8    * Licensed under the GNU LGPL, Version 2.1 (the "License");
    9    * you may not use this file except in compliance with the License.
    10   * You may obtain a copy of the License at
    11   *
    12   * http://www.gnu.org/copyleft/lesser.html
    13   *
    14   * Unless required by applicable law or agreed to in writing, software
    15   * distributed under the License is distributed on an "AS IS" BASIS,
    16   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    17   * See the License for the specific language governing permissions and
    18   * limitations under the License.
    19   *
    20   * For more information, please visit:
    21   * http://www.jfox.cn/confluence/display/JFoxSOAF/Home
    22   * http://www.huihoo.org/jfox/jfoxsoaf
    23   */
    24
    25  package org.huihoo.jfox.soaf.services.cache;
    26
    27  import org.huihoo.jfox.soaf.exception.CacheServiceException;
    28
    29  import com.opensymphony.oscache.base.NeedsRefreshException;
    30  import com.opensymphony.oscache.general.GeneralCacheAdministrator;
    31
    32  /***
    33   * <p>
    34   * Support for OpenSymphony OSCache
    35   * </p>
    36   *
    37   * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
    38   * @author <a href="mailto:m.bogaert@intrasoft.be">Mathias Bogaert </a>
    39   * @version $Revision: 1.1 $ $Date: 2005/05/22 06:48:52 $
    40   * @version Revision: 1.0
    41   */
    42
    43  public class OSCacheServiceImpl implements CacheService {
    44
    45      private GeneralCacheAdministrator cache = new GeneralCacheAdministrator();
    46
    47      private int refreshPeriod;
    48
    49      private String cron;
    50
    51      /***
    52       * Default constructor with given param
    53       *
    54       * @param refreshPeriod
    55       * @param cron
    56       */
    57      public OSCacheServiceImpl(int refreshPeriod, String cron) {
    58          this.refreshPeriod = refreshPeriod;
    59          this.cron = cron;
    60      }
    61
    62      /***
    63       * @see org.huihoo.jfox.soaf.services.cache.CacheService#get(java.lang.Object)
    64       */
    65      public Object get(Object key) throws CacheServiceException {
    66          try {
    67              return cache.getFromCache(String.valueOf(key), refreshPeriod, cron);
    68          } catch (NeedsRefreshException e) {
    69              cache.cancelUpdate(String.valueOf(key));
    70              return null;
    71          }
    72      }
    73
    74      /***
    75       * @see org.huihoo.jfox.soaf.services.cache.CacheService#put(java.lang.Object,
    76       *      java.lang.Object)
    77       */
    78      public void put(Object key, Object value) throws CacheServiceException {
    79          cache.putInCache(String.valueOf(key), value);
    80      }
    81
    82      /***
    83       * @see org.huihoo.jfox.soaf.services.cache.CacheService#remove(java.lang.Object)
    84       */
    85      public void remove(Object key) throws CacheServiceException {
    86          cache.flushEntry(String.valueOf(key));
    87      }
    88
    89      /***
    90       * @see org.huihoo.jfox.soaf.services.cache.CacheService#clear()
    91       */
    92      public void clear() throws CacheServiceException {
    93          cache.flushAll();
    94      }
    95
    96      /***
    97       * Set cache capacity
    98       *
    99       * @param cacheCapacity
    100      */
    101     public void setCacheCapacity(int cacheCapacity) {
    102         cache.setCacheCapacity(cacheCapacity);
    103     }
    104
    105 }