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 org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConstructorArgumentValues; import org.springframework.beans.factory.support.GenericBeanDefinition; import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.w3c.dom.Element; import pl.chilldev.web.spring.model.Stylesheet; import pl.chilldev.web.spring.util.DomUtils; /** * `<stylesheet>` element parser. * * @version 0.0.2 * @since 0.0.1 */ public class StylesheetBeanDefinitionParser implements BeanDefinitionParser { /** * Stylesheets property name. */ public static final String PROPERTY_STYLESHEETS = "stylesheets"; /** * Logger. */ protected Logger logger = LoggerFactory.getLogger(StylesheetBeanDefinitionParser.class); /** * Initial stylesheets. */ protected ManagedList<BeanDefinition> stylesheets = new ManagedList<>(); /** * Initializes bean parser. * * @param pageMetaModelFactoryBean Page model factory. * @since 0.0.2 */ public StylesheetBeanDefinitionParser(BeanDefinition pageMetaModelFactoryBean) { pageMetaModelFactoryBean.getPropertyValues() .addPropertyValue(StylesheetBeanDefinitionParser.PROPERTY_STYLESHEETS, this.stylesheets); } /** * {@inheritDoc} * @since 0.0.2 */ @Override public BeanDefinition parse(Element element, ParserContext parserContext) { String href = element.getAttribute(LinkBeanDefinitionParser.ATTRIBUTE_HREF); GenericBeanDefinition stylesheet = new GenericBeanDefinition(); stylesheet.setBeanClass(Stylesheet.class); int i = 0; ConstructorArgumentValues arguments = stylesheet.getConstructorArgumentValues(); arguments.addIndexedArgumentValue(i++, href); arguments.addIndexedArgumentValue(i++, DomUtils.getRealAttributeValue(element, LinkBeanDefinitionParser.ATTRIBUTE_TYPE)); arguments.addIndexedArgumentValue(i++, DomUtils.getRealAttributeValue(element, LinkBeanDefinitionParser.ATTRIBUTE_MEDIA)); this.logger.info("Adding \"{}\" stylesheet.", href); this.stylesheets.add(stylesheet); return null; } }