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