]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/xml/SpecBeanDefinitionParser.java
Improve If
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / xml / SpecBeanDefinitionParser.java
index 60861d59cf1944b4c6d5dbe49485c81d8baa9efc..cc7ffeec821a336beec79e574e61944747bbd2e4 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ *
+ * 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<Element>) DomUtils
+               for (Element refAttrElem : (List<Element>) 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<Element> choices = DomUtils.getChildElementsByTagName(
+                                               choicesElem, "choice");
                                ManagedList choiceBeans = new ManagedList(choices.size());
-                               for (Element choiceElem : (List<Element>) 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);