Package org.springmodules.cache.config

Source Code of org.springmodules.cache.config.AbstractCacheManagerAndProviderFacadeParser

/*
* Created on Feb 3, 2006
*
* 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.
*
* Copyright @2006 the original author or authors.
*/
package org.springmodules.cache.config;

import org.w3c.dom.Element;

import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.PropertyValue;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceEditor;
import org.springframework.util.StringUtils;

/**
* <p>
* Template that handles the parsing of the XML tag "config". Creates and
* registers and implementation of
* <code>{@link org.springmodules.cache.provider.CacheProviderFacade}</code>
* and a cache manager in the provided registry of bean definitions.
* </p>
*
* @author Alex Ruiz
*/
public abstract class AbstractCacheManagerAndProviderFacadeParser extends
    AbstractCacheProviderFacadeParser {

  /**
   * Parses the given XML element containing the properties of the cache manager
   * to register in the given registry of bean definitions.
   *
   * @param element
   *          the XML element to parse
   * @param registry
   *          the registry of bean definitions
   *
   * @see AbstractCacheProviderFacadeParser#doParse(String, Element,
   *      BeanDefinitionRegistry)
   */
  protected final void doParse(String cacheProviderFacadeId, Element element,
      BeanDefinitionRegistry registry) {
    String id = "cacheManager";
    Class clazz = getCacheManagerClass();
    RootBeanDefinition cacheManager = new RootBeanDefinition(clazz);
    MutablePropertyValues cacheManagerProperties = new MutablePropertyValues();
    cacheManager.setPropertyValues(cacheManagerProperties);

    PropertyValue configLocation = parseConfigLocationProperty(element);
    cacheManagerProperties.addPropertyValue(configLocation);
    registry.registerBeanDefinition(id, cacheManager);

    BeanDefinition cacheProviderFacade = registry
        .getBeanDefinition(cacheProviderFacadeId);
    cacheProviderFacade.getPropertyValues().addPropertyValue("cacheManager",
        new RuntimeBeanReference(id));
  }

  /**
   * @return the class of the cache manager to create
   */
  protected abstract Class getCacheManagerClass();

  /**
   * Parses the given XML element to obtain the value of the property
   * <code>configLocation</code>. This property specifies the location of the
   * configuration file to use to configure the cache manager.
   *
   * @param element
   *          the XML element to parse
   * @return the value of the property <code>configLocation</code>
   */
  private PropertyValue parseConfigLocationProperty(Element element) {
    Resource resource = null;

    String configLocation = element.getAttribute("configLocation");
    if (StringUtils.hasText(configLocation)) {
      ResourceEditor resourceEditor = new ResourceEditor();
      resourceEditor.setAsText(configLocation);
      resource = (Resource) resourceEditor.getValue();
    }

    return new PropertyValue("configLocation", resource);
  }

}
TOP

Related Classes of org.springmodules.cache.config.AbstractCacheManagerAndProviderFacadeParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.