1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.jxpath.ri.model.jdom;
19
20 import org.apache.commons.jxpath.ri.QName;
21 import org.apache.commons.jxpath.ri.model.NodePointer;
22
23
24
25
26 public class JDOMNamespacePointer extends NodePointer {
27
28 private static final long serialVersionUID = 7935311686545862379L;
29
30
31 private final String prefix;
32
33
34 private String namespaceURI;
35
36
37
38
39
40
41
42 public JDOMNamespacePointer(final NodePointer parent, final String prefix) {
43 super(parent);
44 this.prefix = prefix;
45 }
46
47
48
49
50
51
52
53
54 public JDOMNamespacePointer(final NodePointer parent, final String prefix, final String namespaceURI) {
55 super(parent);
56 this.prefix = prefix;
57 this.namespaceURI = namespaceURI;
58 }
59
60 @Override
61 public String asPath() {
62 final StringBuilder buffer = new StringBuilder();
63 if (parent != null) {
64 buffer.append(parent.asPath());
65 if (buffer.length() == 0 || buffer.charAt(buffer.length() - 1) != '/') {
66 buffer.append('/');
67 }
68 }
69 buffer.append("namespace::");
70 buffer.append(prefix);
71 return buffer.toString();
72 }
73
74 @Override
75 public int compareChildNodePointers(final NodePointer pointer1, final NodePointer pointer2) {
76
77 return 0;
78 }
79
80 @Override
81 public boolean equals(final Object object) {
82 return object == this || object instanceof JDOMNamespacePointer && prefix.equals(((JDOMNamespacePointer) object).prefix);
83 }
84
85 @Override
86 public Object getBaseValue() {
87 return null;
88 }
89
90 @Override
91 public Object getImmediateNode() {
92 return getNamespaceURI();
93 }
94
95 @Override
96 public int getLength() {
97 return 1;
98 }
99
100 @Override
101 public QName getName() {
102 return new QName(prefix);
103 }
104
105 @Override
106 public String getNamespaceURI() {
107 if (namespaceURI == null) {
108 namespaceURI = parent.getNamespaceURI(prefix);
109 }
110 return namespaceURI;
111 }
112
113 @Override
114 public int hashCode() {
115 return prefix.hashCode();
116 }
117
118 @Override
119 public boolean isCollection() {
120 return false;
121 }
122
123 @Override
124 public boolean isLeaf() {
125 return true;
126 }
127
128
129
130
131
132
133 @Override
134 public void setValue(final Object value) {
135 throw new UnsupportedOperationException("Cannot modify a namespace");
136 }
137 }