Java tutorial
/** * This file is part of the ChillDev-Web. * * @license http://mit-license.org/ The MIT license * @copyright 2014 by Rafa Wrzeszcz - Wrzasq.pl. */ package pl.chilldev.web.spring.config; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.util.xml.DomUtils; import org.w3c.dom.Element; /** * `<title>` element parser. * * @version 0.0.2 * @since 0.0.1 */ public class TitleBeanDefinitionParser implements BeanDefinitionParser { /** * `<part>` element name. */ public static final String ELEMENT_PART = "part"; /** * `separator=""` attribute name. */ public static final String ATTRIBUTE_SEPARATOR = "separator"; /** * Title separator property name. */ public static final String PROPERTY_TITLESEPARATOR = "titleSeparator"; /** * Title parts property name. */ public static final String PROPERTY_TITLE = "title"; /** * Logger. */ protected Logger logger = LoggerFactory.getLogger(TitleBeanDefinitionParser.class); /** * Initial title parts. */ protected List<String> parts = new ArrayList<>(); /** * Factory bean properties. */ protected MutablePropertyValues properties; /** * Initializes bean parser. * * @param pageMetaModelFactoryBean Page model factory. * @since 0.0.2 */ public TitleBeanDefinitionParser(BeanDefinition pageMetaModelFactoryBean) { this.properties = pageMetaModelFactoryBean.getPropertyValues(); this.properties.addPropertyValue(TitleBeanDefinitionParser.PROPERTY_TITLE, this.parts); } /** * {@inheritDoc} * @since 0.0.1 */ @Override public BeanDefinition parse(Element element, ParserContext parserContext) { if (element.hasAttribute(TitleBeanDefinitionParser.ATTRIBUTE_SEPARATOR)) { String separator = element.getAttribute(TitleBeanDefinitionParser.ATTRIBUTE_SEPARATOR); this.logger.info("Setting title separator to \"{}\".", separator); this.properties.addPropertyValue(TitleBeanDefinitionParser.PROPERTY_TITLESEPARATOR, separator); } String part; for (Element child : DomUtils.getChildElementsByTagName(element, TitleBeanDefinitionParser.ELEMENT_PART)) { part = DomUtils.getTextValue(child); this.logger.info("Adding \"{}\" as title part.", part); this.parts.add(part); } return null; } }