1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration.tree.xpath;
18
19 import java.util.ArrayList;
20 import java.util.Collections;
21 import java.util.List;
22
23 import org.apache.commons.configuration.tree.ConfigurationNode;
24 import org.apache.commons.jxpath.ri.QName;
25 import org.apache.commons.jxpath.ri.model.NodePointer;
26
27 /***
28 * A specialized node iterator implementation that deals with attribute nodes.
29 *
30 * @author Oliver Heger
31 * @version $Id: ConfigurationNodeIteratorAttribute.java 439648 2006-09-02 20:42:10Z oheger $
32 */
33 class ConfigurationNodeIteratorAttribute extends
34 ConfigurationNodeIteratorBase
35 {
36 /*** Constant for the wildcard node name.*/
37 private static final String WILDCARD = "*";
38
39 /***
40 * Creates a new instance of <code>ConfigurationNodeIteratorAttribute</code>.
41 * @param parent the parent node pointer
42 * @param name the name of the selected attribute
43 */
44 public ConfigurationNodeIteratorAttribute(NodePointer parent, QName name)
45 {
46 super(parent, false);
47 initSubNodeList(createSubNodeList((ConfigurationNode) parent.getNode(),
48 name));
49 }
50
51 /***
52 * Determines which attributes are selected based on the passed in node
53 * name.
54 * @param node the current node
55 * @param name the name of the selected attribute
56 * @return a list with the selected attributes
57 */
58 protected List createSubNodeList(ConfigurationNode node, QName name)
59 {
60 if (name.getPrefix() != null)
61 {
62
63 return Collections.EMPTY_LIST;
64 }
65
66 List result = new ArrayList();
67 if (!WILDCARD.equals(name.getName()))
68 {
69 result.addAll(node.getAttributes(name.getName()));
70 }
71 else
72 {
73 result.addAll(node.getAttributes());
74 }
75
76 return result;
77 }
78 }