X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=inline;f=org.argeo.slc.spring%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Fxml%2FSpecBeanDefinitionParser.java;fp=org.argeo.slc.spring%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Fxml%2FSpecBeanDefinitionParser.java;h=0000000000000000000000000000000000000000;hb=ecc22e604e47533c79de9cecdcdeacbc752cbff1;hp=937e8d02df60dc42c277fffbcc4ceee1fc1225de;hpb=e07ded4632e53f8b8869763bc1f1f4091361e76e;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.spring/src/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java b/org.argeo.slc.spring/src/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java deleted file mode 100644 index 937e8d02d..000000000 --- a/org.argeo.slc.spring/src/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.argeo.slc.core.execution.xml; - -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.slc.core.execution.DefaultExecutionSpec; -import org.argeo.slc.execution.RefSpecAttribute; -import org.argeo.slc.execution.RefValueChoice; -import org.argeo.slc.primitive.PrimitiveSpecAttribute; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.ManagedList; -import org.springframework.beans.factory.support.ManagedMap; -import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.util.StringUtils; -import org.springframework.util.xml.DomUtils; -import org.w3c.dom.Element; - -/** Interprets the tag */ -public class SpecBeanDefinitionParser extends - AbstractSingleBeanDefinitionParser { - private Log log = LogFactory.getLog(SpecBeanDefinitionParser.class); - - @Override - protected void doParse(Element element, ParserContext parserContext, - BeanDefinitionBuilder builder) { - builder.getBeanDefinition().setDescription( - DomUtils.getChildElementValueByTagName(element, "description")); - - ManagedMap attributes = new ManagedMap(); - - // Primitives - for (Element child : (List) DomUtils - .getChildElementsByTagName(element, "primitive")) { - BeanDefinitionBuilder childBuilder = BeanDefinitionBuilder - .genericBeanDefinition(PrimitiveSpecAttribute.class); - addCommonProperties(child, parserContext, childBuilder); - - String type = child.getAttribute("type"); - if (StringUtils.hasText(type)) - childBuilder.addPropertyValue("type", type); - - putInAttributes(attributes, child, - childBuilder.getBeanDefinition(), "primitive"); - } - - // Refs - for (Element refAttrElem : (List) DomUtils - .getChildElementsByTagName(element, "ref")) { - BeanDefinitionBuilder refAttrBuilder = BeanDefinitionBuilder - .genericBeanDefinition(RefSpecAttribute.class); - addCommonProperties(refAttrElem, parserContext, refAttrBuilder); - - String targetClassName = refAttrElem.getAttribute("targetClass"); - if (StringUtils.hasText(targetClassName)) - refAttrBuilder.addPropertyValue("targetClass", targetClassName); - - // Choices - Element choicesElem = DomUtils.getChildElementByTagName( - refAttrElem, "choices"); - if (choicesElem != null) { - List choices = DomUtils.getChildElementsByTagName( - choicesElem, "choice"); - ManagedList choiceBeans = new ManagedList( - choices.size()); - for (Element choiceElem : choices) { - BeanDefinitionBuilder choiceBuilder = BeanDefinitionBuilder - .genericBeanDefinition(RefValueChoice.class); - choiceBuilder.addPropertyValue("name", - choiceElem.getAttribute("name")); - String desc = choiceElem.getAttribute("description"); - if (StringUtils.hasText(desc)) - choiceBuilder.addPropertyValue("description", desc); - - choiceBeans.add(choiceBuilder.getBeanDefinition()); - } - refAttrBuilder.addPropertyValue("choices", choiceBeans); - } - - putInAttributes(attributes, refAttrElem, - refAttrBuilder.getBeanDefinition(), "ref"); - } - - builder.addPropertyValue("attributes", attributes); - } - - protected void addCommonProperties(Element element, - ParserContext parserContext, BeanDefinitionBuilder specAttr) { - addBooleanProperty("isImmutable", specAttr, element); - addBooleanProperty("isConstant", specAttr, element); - addBooleanProperty("isHidden", specAttr, element); - addBooleanProperty("isParameter", specAttr, element); - addBooleanProperty("isFrozen", specAttr, element); - - Object value = NamespaceUtils.parseValue(element, parserContext, - specAttr.getBeanDefinition(), "value"); - if (value != null) - specAttr.addPropertyValue("value", value); - - } - - protected void putInAttributes( - ManagedMap attributes, Element child, - BeanDefinition beanDefinition, String nature) { - String name = child.getAttribute("name"); - attributes.put(name, beanDefinition); - if (log.isTraceEnabled()) - log.debug("Added " + nature + " attribute " + name); - - } - - private void addBooleanProperty(String name, - BeanDefinitionBuilder specAttr, Element element) { - String bool = element.getAttribute(name); - if (StringUtils.hasText(bool)) - specAttr.addPropertyValue(name, Boolean.parseBoolean(bool)); - - } - - @Override - protected Class getBeanClass(Element element) { - return DefaultExecutionSpec.class; - } - - protected boolean shouldGenerateIdAsFallback() { - return false; - } - -}