##### Coverage Report - org.apache.commons.configuration.tree.xpath.ConfigurationNodeIteratorAttribute

Classes in this File | Line Coverage | Branch Coverage | Complexity

ConfigurationNodeIteratorAttribute

100% | 10/10

100% | 2/2

2.5;2,5

1

     /*

2

      * Licensed to the Apache Software Foundation (ASF) under one or more

3

      * contributor license agreements.  See the NOTICE file distributed with

4

      * this work for additional information regarding copyright ownership.

5

      * The ASF licenses this file to You under the Apache License, Version 2.0

6

      * (the "License"); you may not use this file except in compliance with

7

      * the License.  You may obtain a copy of the License at

8

      *

9

      *     http://www.apache.org/licenses/LICENSE-2.0

10

      *

11

      * Unless required by applicable law or agreed to in writing, software

12

      * distributed under the License is distributed on an "AS IS" BASIS,

13

      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

14

      * See the License for the specific language governing permissions and

15

      * limitations under the License.

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

12507

             super(parent, false);

47

12507

             initSubNodeList(createSubNodeList((ConfigurationNode) parent.getNode(),

48

                     name));

49

12507

         }

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

12507

             if (name.getPrefix() != null)

61

             {

62

                 // namespace prefixes are not supported

63

1

                 return Collections.EMPTY_LIST;

64

             }

65

66

12506

             List result = new ArrayList();

67

12506

             if (!WILDCARD.equals(name.getName()))

68

             {

69

4694

                 result.addAll(node.getAttributes(name.getName()));

70

             }

71

             else

72

             {

73

7812

                 result.addAll(node.getAttributes());

74

             }

75

76

12506

             return result;

77

         }

78

     }