1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jxpath.ri.model.beans;
17
18 import java.util.Locale;
19
20 import org.apache.commons.jxpath.JXPathContext;
21 import org.apache.commons.jxpath.ri.QName;
22 import org.apache.commons.jxpath.ri.model.NodePointer;
23
24 /***
25 * @author Dmitri Plotnikov
26 * @version $Revision: 1.11 $ $Date: 2004/02/29 14:17:41 $
27 */
28 public class NullPointer extends PropertyOwnerPointer {
29 private QName name;
30 private String id;
31
32 public NullPointer(QName name, Locale locale) {
33 super(null, locale);
34 this.name = name;
35 }
36
37 /***
38 * Used for the root node
39 */
40 public NullPointer(NodePointer parent, QName name) {
41 super(parent);
42 this.name = name;
43 }
44
45 public NullPointer(Locale locale, String id) {
46 super(null, locale);
47 this.id = id;
48 }
49
50 public QName getName() {
51 return name;
52 }
53
54 public Object getBaseValue() {
55 return null;
56 }
57
58 public boolean isCollection() {
59 return false;
60 }
61
62 public boolean isLeaf() {
63 return true;
64 }
65
66 public boolean isActual() {
67 return false;
68 }
69
70 public PropertyPointer getPropertyPointer() {
71 return new NullPropertyPointer(this);
72 }
73
74 public NodePointer createPath(JXPathContext context, Object value) {
75 if (parent != null) {
76 return parent.createPath(context, value).getValuePointer();
77 }
78 else {
79 throw new UnsupportedOperationException(
80 "Cannot create the root object: " + asPath());
81 }
82 }
83
84 public NodePointer createPath(JXPathContext context) {
85 if (parent != null) {
86 return parent.createPath(context).getValuePointer();
87 }
88 else {
89 throw new UnsupportedOperationException(
90 "Cannot create the root object: " + asPath());
91 }
92 }
93
94 public NodePointer createChild(
95 JXPathContext context,
96 QName name,
97 int index)
98 {
99 return createPath(context).createChild(context, name, index);
100 }
101
102 public NodePointer createChild(
103 JXPathContext context,
104 QName name,
105 int index,
106 Object value)
107 {
108 return createPath(context).createChild(context, name, index, value);
109 }
110
111 public int hashCode() {
112 return name == null ? 0 : name.hashCode();
113 }
114
115 public boolean equals(Object object) {
116 if (object == this) {
117 return true;
118 }
119
120 if (!(object instanceof NullPointer)) {
121 return false;
122 }
123
124 NullPointer other = (NullPointer) object;
125 return (name == null && other.name == null)
126 || (name != null && name.equals(other.name));
127 }
128
129 public String asPath() {
130 if (id != null) {
131 return "id(" + id + ")";
132 }
133
134 if (parent != null) {
135 return super.asPath();
136 }
137 return "null()";
138 }
139
140 public int getLength() {
141 return 0;
142 }
143 }