View Javadoc

1   /*
2    * $Id: AllAttributeChildDefinitionParser.java 10494 2008-01-23 21:09:56Z acooke $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.config.spring.parsers.delegate;
12  
13  import org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser;
14  import org.mule.config.spring.parsers.MuleDefinitionParser;
15  import org.mule.config.spring.parsers.MuleDefinitionParserConfiguration;
16  import org.mule.config.spring.parsers.PostProcessor;
17  import org.mule.config.spring.parsers.PreProcessor;
18  import org.mule.config.spring.parsers.assembly.configuration.PropertyConfiguration;
19  import org.mule.config.spring.parsers.assembly.configuration.SimplePropertyConfiguration;
20  import org.mule.config.spring.parsers.assembly.configuration.ValueMap;
21  import org.mule.config.spring.parsers.collection.DynamicAttributeDefinitionParser;
22  import org.mule.config.spring.parsers.generic.AutoIdUtils;
23  import org.mule.config.spring.util.SpringXMLUtils;
24  
25  import java.util.Map;
26  
27  import org.springframework.beans.factory.support.AbstractBeanDefinition;
28  import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
29  import org.springframework.beans.factory.xml.ParserContext;
30  import org.w3c.dom.Attr;
31  import org.w3c.dom.Element;
32  import org.w3c.dom.NamedNodeMap;
33  
34  /**
35   * This is a very hurried demonstration.  It needs improving!
36   */
37  public class AllAttributeChildDefinitionParser
38          extends AbstractBeanDefinitionParser implements MuleDefinitionParser
39  {
40  
41      private DynamicAttributeDefinitionParser delegate;
42      private PropertyConfiguration configuration = new SimplePropertyConfiguration();
43  
44      public AllAttributeChildDefinitionParser(DynamicAttributeDefinitionParser delegate)
45      {
46          addIgnored(AbstractMuleBeanDefinitionParser.ATTRIBUTE_ID);
47          addIgnored(AbstractMuleBeanDefinitionParser.ATTRIBUTE_NAME);
48          this.delegate = delegate;
49      }
50  
51      protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext)
52      {
53          NamedNodeMap attributes = element.getAttributes();
54          for (int i = 0; i < attributes.getLength(); ++i)
55          {
56              String name = SpringXMLUtils.attributeName((Attr) attributes.item(i));
57              if (!isIgnored(name))
58              {
59                  delegate.setAttributeName(name);
60                  delegate.muleParse(element, parserContext);
61              }
62          }
63          return null;
64      }
65  
66  
67      public AbstractBeanDefinition muleParse(Element element, ParserContext parserContext)
68      {
69          return parseInternal(element, parserContext);
70      }
71  
72      public MuleDefinitionParserConfiguration registerPreProcessor(PreProcessor preProcessor)
73      {
74          delegate.registerPreProcessor(preProcessor);
75          return this;
76      }
77  
78      public MuleDefinitionParserConfiguration registerPostProcessor(PostProcessor postProcessor)
79      {
80          delegate.registerPostProcessor(postProcessor);
81          return this;
82      }
83  
84      public MuleDefinitionParserConfiguration addReference(String propertyName)
85      {
86          configuration.addReference(propertyName);
87          return this;
88      }
89  
90      public MuleDefinitionParserConfiguration addMapping(String propertyName, Map mappings)
91      {
92          configuration.addMapping(propertyName, mappings);
93          return this;
94      }
95  
96      public MuleDefinitionParserConfiguration addMapping(String propertyName, String mappings)
97      {
98          configuration.addMapping(propertyName, mappings);
99          return this;
100     }
101 
102     public MuleDefinitionParserConfiguration addMapping(String propertyName, ValueMap mappings)
103     {
104         configuration.addMapping(propertyName, mappings);
105         return this;
106     }
107 
108     public MuleDefinitionParserConfiguration addAlias(String alias, String propertyName)
109     {
110         configuration.addAlias(alias, propertyName);
111         return this;
112     }
113 
114     public MuleDefinitionParserConfiguration addCollection(String propertyName)
115     {
116         configuration.addCollection(propertyName);
117         return this;
118     }
119 
120     public MuleDefinitionParserConfiguration addIgnored(String propertyName)
121     {
122         configuration.addIgnored(propertyName);
123         return this;
124     }
125 
126     public MuleDefinitionParserConfiguration removeIgnored(String propertyName)
127     {
128         configuration.removeIgnored(propertyName);
129         return this;
130     }
131 
132     public MuleDefinitionParserConfiguration setIgnoredDefault(boolean ignoreAll)
133     {
134         configuration.setIgnoredDefault(ignoreAll);
135         return this;
136     }
137 
138     public String getAttributeMapping(String alias)
139     {
140         return configuration.getAttributeMapping(alias);
141     }
142 
143     public boolean isCollection(String propertyName)
144     {
145         return configuration.isCollection(propertyName);
146     }
147 
148     public boolean isIgnored(String propertyName)
149     {
150         return configuration.isIgnored(propertyName);
151     }
152 
153     public boolean isBeanReference(String attributeName)
154     {
155         return configuration.isReference(attributeName);
156     }
157 
158     public String translateName(String oldName)
159     {
160         return configuration.translateName(oldName);
161     }
162 
163     public Object translateValue(String name, String value)
164     {
165         return configuration.translateValue(name, value);
166     }
167 
168     public String getBeanName(Element element)
169     {
170         return AutoIdUtils.getUniqueName(element, "all-attribute");
171     }
172 
173     public MuleDefinitionParserConfiguration addBeanFlag(String flag)
174     {
175         delegate.addBeanFlag(flag);
176         return this;
177     }
178 
179 }