View Javadoc

1   /*
2    * Created on 2005-5-8
3    *
4    * TODO To change the template for this generated file go to
5    * Window - Preferences - Java - Code Style - Code Templates
6    */
7   package org.huihoo.jfox.soaf.services.cache;
8   
9   import java.util.Properties;
10  
11  import org.huihoo.jfox.soaf.exception.CacheServiceException;
12  import org.huihoo.jfox.soaf.util.resource.PropertiesHelper;
13  import org.huihoo.jfox.soaf.util.resource.StringHelper;
14  
15  import com.opensymphony.oscache.base.CacheEntry;
16  import com.opensymphony.oscache.base.Config;
17  
18  /***
19   * <p>
20   * OSCacheService for pluggable cache.
21   * </p>
22   * 
23   * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
24   * @author <a href="mailto:m.bogaert@intrasoft.be">Mathias Bogaert </a>
25   * @version $Revision: 1.1 $ $Date: 2005/05/22 06:48:52 $
26   * @version Revision: 1.0
27   */
28  
29  public class OSCacheServiceProvider implements CacheServiceProvider {
30  
31      /***
32       * The OSCache refresh period property suffix.
33       */
34      public static final String OSCACHE_REFRESH_PERIOD = "refresh.period";
35  
36      /***
37       * The OSCache CRON expression property suffix.
38       */
39      public static final String OSCACHE_CRON = "cron";
40  
41      /***
42       * The OSCache cache capacity property suffix.
43       */
44      public static final String OSCACHE_CAPACITY = "capacity";
45  
46      private static final Properties OSCACHE_PROPERTIES = new Config()
47              .getProperties();
48  
49      /***
50       * @see org.huihoo.jfox.soaf.services.cache.CacheServiceProvider#buildCache(java.lang.String,
51       *      java.util.Properties)
52       */
53      public CacheService buildCacheService(String regionName,
54              Properties properties) throws CacheServiceException {
55          int refreshPeriod = PropertiesHelper.getInt(StringHelper.qualify(
56                  regionName, OSCACHE_REFRESH_PERIOD), OSCACHE_PROPERTIES,
57                  CacheEntry.INDEFINITE_EXPIRY);
58          String cron = OSCACHE_PROPERTIES.getProperty(StringHelper.qualify(
59                  regionName, OSCACHE_CRON));
60  
61          // construct the cache
62          OSCacheServiceImpl cache = new OSCacheServiceImpl(refreshPeriod, cron);
63  
64          Integer capacity = PropertiesHelper.getInteger(StringHelper.qualify(
65                  regionName, OSCACHE_CAPACITY), OSCACHE_PROPERTIES);
66          if (capacity != null)
67              cache.setCacheCapacity(capacity.intValue());
68  
69          return cache;
70      }
71  
72  }