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 }