View Javadoc

    1   /***
    2    * @(#)CacheServiceManagerImpl.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 java.io.IOException;
    28  import java.io.InputStream;
    29  import java.util.Properties;
    30
    31  import org.huihoo.jfox.soaf.exception.CacheServiceException;
    32  import org.huihoo.jfox.soaf.util.resource.ResourceHelper;
    33
    34  /***
    35   * <p>
    36   * CachingServiceManager is medator of pluggable service provider.
    37   * </p>
    38   *
    39   * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
    40   * @version $Revision: 1.1 $ $Date: 2005/05/22 06:48:52 $
    41   * @version Revision: 1.0
    42   */
    43
    44  public class CacheServiceManagerImpl implements CacheServiceManager {
    45
    46      public CacheServiceManagerImpl() {
    47      }
    48
    49      /***
    50       * @see org.huihoo.jfox.soaf.services.cache.CacheServiceManager#getCacheService()
    51       */
    52      public CacheService getCacheService(String regionName, Properties prop)
    53              throws CacheServiceException {
    54          CacheServiceProvider cacheServiceProvider = null;
    55          Properties props = null;
    56          try {
    57              InputStream stream = ResourceHelper
    58                      .getResourceAsStream(CacheConstant.CACHE_PROPERTIES);
    59
    60              if (stream != null) {
    61                  props = new Properties();
    62                  props.load(stream);
    63                  stream.close();
    64              }
    65          } catch (IOException e) {
    66              throw new CacheServiceException(
    67                      "Load Cache configuration IO exception " + e);
    68          } catch (SecurityException e) {
    69              throw new CacheServiceException("Cache access security exception "
    70                      + e);
    71          }
    72
    73          String providerClass = props.getProperty(CacheConstant.CACHE_PROVIDER);
    74          if (providerClass != null && !providerClass.equals("")) {
    75              cacheServiceProvider = getCacheServiceProvider(providerClass);
    76          } else {
    77              cacheServiceProvider = new HashMapCacheServiceProvider();
    78          }
    79          return cacheServiceProvider.buildCacheService(regionName, prop);
    80
    81      }
    82
    83      /***
    84       * Load cache service provider.
    85       *
    86       * @param providerClass
    87       * @return CacheServiceProvider
    88       * @throws CacheServiceException
    89       */
    90      private CacheServiceProvider getCacheServiceProvider(String providerClass)
    91              throws CacheServiceException {
    92          try {
    93              return (CacheServiceProvider) Class.forName(providerClass)
    94                      .newInstance();
    95          } catch (Exception e) {
    96              throw new CacheServiceException("Getting cahce service provider ",
    97                      e);
    98          }
    99      }
    100
    101 }