1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 package org.exolab.castor.xml;
47
48 import java.util.HashSet;
49 import java.util.Set;
50
51 import org.apache.commons.lang.StringUtils;
52
53
54
55
56
57
58
59 public class UnmarshalState {
60
61
62 private UnmarshalHandler.Arguments _args = null;
63
64
65 private String _location = "";
66
67
68 private boolean _nil = false;
69
70
71 private String _elementName = null;
72
73
74 private StringBuffer _buffer = null;
75
76
77
78 private Object _key = null;
79
80
81 private Object _object = null;
82
83
84 private Class<?> _type = null;
85
86
87 private XMLFieldDescriptor _fieldDescriptor = null;
88
89
90
91 private XMLClassDescriptor _classDescriptor = null;
92
93
94 private boolean _primitiveOrImmutable = false;
95
96
97 private Set<XMLFieldDescriptor> _markedList = new HashSet<XMLFieldDescriptor>();
98
99
100 private boolean _derived = false;
101
102
103 private boolean _wrapper = false;
104
105
106 private boolean _whitespacePreserving = false;
107
108 private boolean _trailingWhitespaceRemoved = false;
109
110
111 private int _expectedIndex = 0;
112
113
114
115 private boolean _withinMultivaluedElement = false;
116
117
118
119 private UnmarshalState _targetState = null;
120
121
122 private UnmarshalState _parent = null;
123
124
125
126
127 void clear() {
128
129 setConstructorArguments(null);
130 setLocation("");
131 setElementName(null);
132 setBuffer(null);
133 setKey(null);
134 setNil(false);
135 setObject(null);
136 setType(null);
137 setFieldDescriptor(null);
138 setClassDescriptor(null);
139 setPrimitiveOrImmutable(false);
140 if (_markedList != null) {
141 _markedList.clear();
142 }
143 setDerived(false);
144 setWrapper(false);
145 setTargetState(null);
146 setWhitespacePreserving(false);
147 setParent(null);
148 setTrailingWhitespaceRemoved(false);
149 }
150
151
152
153
154
155
156 void markAsUsed(XMLFieldDescriptor descriptor) {
157 _markedList.add(descriptor);
158 }
159
160 void markAsNotUsed(XMLFieldDescriptor descriptor) {
161 if (_markedList == null) {
162 return;
163 }
164 _markedList.remove(descriptor);
165 }
166
167 boolean isUsed(XMLFieldDescriptor descriptor) {
168 if (_markedList.isEmpty()) {
169 return false;
170 }
171 return _markedList.contains(descriptor);
172 }
173
174 void setFieldDescriptor(XMLFieldDescriptor fieldDesc) {
175 _fieldDescriptor = fieldDesc;
176 }
177
178 XMLFieldDescriptor getFieldDescriptor() {
179 return _fieldDescriptor;
180 }
181
182 void setObject(Object object) {
183 _object = object;
184 }
185
186 Object getObject() {
187 return _object;
188 }
189
190 void setKey(Object key) {
191 _key = key;
192 }
193
194 Object getKey() {
195 return _key;
196 }
197
198 void setType(Class<?> type) {
199 _type = type;
200 }
201
202 Class<?> getType() {
203 return _type;
204 }
205
206 void setClassDescriptor(XMLClassDescriptor classDesc) {
207 _classDescriptor = classDesc;
208 }
209
210 XMLClassDescriptor getClassDescriptor() {
211 return _classDescriptor;
212 }
213
214 void setLocation(String location) {
215 _location = location;
216 }
217
218 String getLocation() {
219 return _location;
220 }
221
222 void setElementName(String elementName) {
223 _elementName = elementName;
224 }
225
226 String getElementName() {
227 return _elementName;
228 }
229
230 void setBuffer(StringBuffer buffer) {
231 _buffer = buffer;
232 }
233
234 StringBuffer getBuffer() {
235 return _buffer;
236 }
237
238 void setDerived(boolean derived) {
239 _derived = derived;
240 }
241
242 boolean isDerived() {
243 return _derived;
244 }
245
246 void setWrapper(boolean wrapper) {
247 _wrapper = wrapper;
248 }
249
250 boolean isWrapper() {
251 return _wrapper;
252 }
253
254 void setWhitespacePreserving(boolean wsPreserve) {
255 _whitespacePreserving = wsPreserve;
256 }
257
258 boolean isWhitespacePreserving() {
259 return _whitespacePreserving;
260 }
261
262 void setPrimitiveOrImmutable(boolean primitiveOrImmutable) {
263 _primitiveOrImmutable = primitiveOrImmutable;
264 }
265
266 boolean isPrimitiveOrImmutable() {
267 return _primitiveOrImmutable;
268 }
269
270 void setTrailingWhitespaceRemoved(boolean trailingWhitespaceRemoved) {
271 _trailingWhitespaceRemoved = trailingWhitespaceRemoved;
272 }
273
274 boolean isTrailingWhitespaceRemoved() {
275 return _trailingWhitespaceRemoved;
276 }
277
278 void setTargetState(UnmarshalState targetState) {
279 _targetState = targetState;
280 }
281
282 UnmarshalState getTargetState() {
283 return _targetState;
284 }
285
286 void setParent(UnmarshalState parent) {
287 _parent = parent;
288 }
289
290 UnmarshalState getParent() {
291 return _parent;
292 }
293
294 void setNil(boolean nil) {
295 _nil = nil;
296 }
297
298 boolean isNil() {
299 return _nil;
300 }
301
302 public void setExpectedIndex(int expectedIndex) {
303 _expectedIndex = expectedIndex;
304 }
305
306 public int getExpectedIndex() {
307 return _expectedIndex;
308 }
309
310 public void setWithinMultivaluedElement(boolean withinMultivaluedElement) {
311 _withinMultivaluedElement = withinMultivaluedElement;
312 }
313
314 public boolean isWithinMultivaluedElement() {
315 return _withinMultivaluedElement;
316 }
317
318 void setConstructorArguments(UnmarshalHandler.Arguments args) {
319 _args = args;
320 }
321
322 UnmarshalHandler.Arguments getConstructorArguments() {
323 return _args;
324 }
325
326 @Override
327 public String toString() {
328 StringBuffer buffer = new StringBuffer();
329 buffer.append("UnmarshalState [" + _elementName + "("+ _type + ") ");
330 if (!StringUtils.isEmpty(_location)) {
331 buffer.append("rooted at location=" + _location + ", ]");
332 }
333 return buffer.toString();
334
335 }
336
337
338 }