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.Script; import pl.chilldev.web.spring.util.DomUtils; /** * `<script>` element parser. * * @version 0.0.2 * @since 0.0.1 */ public class ScriptBeanDefinitionParser implements BeanDefinitionParser { /** * `src=""` attribute name. */ public static final String ATTRIBUTE_SRC = "src"; /** * `type=""` attribute name. */ public static final String ATTRIBUTE_TYPE = "type"; /** * `flow=""` attribute name. */ public static final String ATTRIBUTE_FLOW = "flow"; /** * `charset=""` attribute name. */ public static final String ATTRIBUTE_CHARSET = "charset"; /** * Scripts property name. */ public static final String PROPERTY_SCRIPTS = "scripts"; /** * Logger. */ protected Logger logger = LoggerFactory.getLogger(ScriptBeanDefinitionParser.class); /** * Initial scripts. */ protected ManagedList<BeanDefinition> scripts = new ManagedList<>(); /** * Initializes bean parser. * * @param pageMetaModelFactoryBean Page model factory. * @since 0.0.2 */ public ScriptBeanDefinitionParser(BeanDefinition pageMetaModelFactoryBean) { pageMetaModelFactoryBean.getPropertyValues().addPropertyValue(ScriptBeanDefinitionParser.PROPERTY_SCRIPTS, this.scripts); } /** * {@inheritDoc} * @since 0.0.2 */ @Override public BeanDefinition parse(Element element, ParserContext parserContext) { String src = element.getAttribute(ScriptBeanDefinitionParser.ATTRIBUTE_SRC); GenericBeanDefinition script = new GenericBeanDefinition(); script.setBeanClass(Script.class); int i = 0; ConstructorArgumentValues arguments = script.getConstructorArgumentValues(); arguments.addIndexedArgumentValue(i++, src); arguments.addIndexedArgumentValue(i++, DomUtils.getRealAttributeValue(element, ScriptBeanDefinitionParser.ATTRIBUTE_TYPE)); arguments.addIndexedArgumentValue(i++, DomUtils.getRealAttributeValue(element, ScriptBeanDefinitionParser.ATTRIBUTE_FLOW)); arguments.addIndexedArgumentValue(i++, DomUtils.getRealAttributeValue(element, ScriptBeanDefinitionParser.ATTRIBUTE_CHARSET)); this.logger.info("Adding \"{}\" script.", src); this.scripts.add(script); return null; } }