X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Fxml%2FSpecBeanDefinitionParser.java;h=cc7ffeec821a336beec79e574e61944747bbd2e4;hb=a2ecbd2a3eae94576fe4db3d651bc0908245da90;hp=60861d59cf1944b4c6d5dbe49485c81d8baa9efc;hpb=bb58cdb33cceffa06b72bc191e63022b9a739d14;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java index 60861d59c..cc7ffeec8 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * 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. + */ + package org.argeo.slc.core.execution.xml; import java.util.List; @@ -17,7 +33,6 @@ import org.springframework.beans.factory.xml.ParserContext; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.w3c.dom.Element; -import org.w3c.dom.NodeList; public class SpecBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { @@ -27,6 +42,9 @@ public class SpecBeanDefinitionParser extends @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { + builder.getBeanDefinition().setDescription(DomUtils.getChildElementValueByTagName(element, + "description")); + ManagedMap attributes = new ManagedMap(); // Primitives @@ -45,24 +63,24 @@ public class SpecBeanDefinitionParser extends } // Refs - for (Element child : (List) DomUtils + for (Element refAttrElem : (List) DomUtils .getChildElementsByTagName(element, "ref")) { - BeanDefinitionBuilder childBuilder = BeanDefinitionBuilder + BeanDefinitionBuilder refAttrBuilder = BeanDefinitionBuilder .genericBeanDefinition(RefSpecAttribute.class); - addCommonProperties(child, parserContext, childBuilder); + addCommonProperties(refAttrElem, parserContext, refAttrBuilder); - String targetClassName = child.getAttribute("targetClass"); + String targetClassName = refAttrElem.getAttribute("targetClass"); if (StringUtils.hasText(targetClassName)) - childBuilder.addPropertyValue("targetClass", targetClassName); + refAttrBuilder.addPropertyValue("targetClass", targetClassName); // Choices - NodeList choicesNd = child.getElementsByTagName("choices"); - if (choicesNd.getLength() > 0) { - Element choicesElem = (Element) choicesNd.item(0); - List choices = DomUtils.getChildElementsByTagName(choicesElem, - "choice"); + Element choicesElem = DomUtils.getChildElementByTagName( + refAttrElem, "choices"); + if (choicesElem != null) { + List choices = DomUtils.getChildElementsByTagName( + choicesElem, "choice"); ManagedList choiceBeans = new ManagedList(choices.size()); - for (Element choiceElem : (List) choices) { + for (Element choiceElem : choices) { BeanDefinitionBuilder choiceBuilder = BeanDefinitionBuilder .genericBeanDefinition(RefValueChoice.class); choiceBuilder.addPropertyValue("name", choiceElem @@ -73,11 +91,11 @@ public class SpecBeanDefinitionParser extends choiceBeans.add(choiceBuilder.getBeanDefinition()); } - + refAttrBuilder.addPropertyValue("choices", choiceBeans); } - putInAttributes(attributes, child, - childBuilder.getBeanDefinition(), "ref"); + putInAttributes(attributes, refAttrElem, refAttrBuilder + .getBeanDefinition(), "ref"); } builder.addPropertyValue("attributes", attributes);