View Javadoc
1   package org.exolab.castor.xml.descriptors;
2   
3   import java.util.HashMap;
4   import java.util.HashSet;
5   import java.util.Map;
6   import java.util.Set;
7   
8   import org.exolab.castor.xml.UnmarshalState;
9   import org.exolab.castor.xml.ValidationException;
10  import org.exolab.castor.xml.XMLClassDescriptor;
11  import org.exolab.castor.xml.XMLFieldDescriptor;
12  
13  public abstract class BaseDescriptor implements XMLClassDescriptor {
14      
15      /**
16       * Map holding the properties set and read by Natures.
17       */
18      private Map _properties = new HashMap();
19      
20      /**
21       * Map holding the available natures.
22       */
23      private Set _natures = new HashSet();
24  
25      /**
26       * Returns true if the given object represented by this XMLClassDescriptor
27       * can accept a member whose name is given. An XMLClassDescriptor can accept
28       * a field if it contains a descriptor that matches the given name and if
29       * the given object can hold this field (i.e a value is not already set for
30       * this field).
31       * <p>
32       * This is mainly used for container object (that can contain other
33       * objects), in this particular case the implementation returns false.
34       *
35       * @param name the name of the field to check
36       * @param namespace the namespace of the element. This may be null. Note: A
37       *        null namespace is not the same as the default namespace unless the
38       *        default namespace is also null.
39       * @param object the object represented by this XMLCLassDescriptor
40       * @return true if the given object represented by this XMLClassDescriptor
41       *         can accept a member whose name is given.
42       */
43      public boolean canAccept(String name, String namespace, Object object) {
44          return false;
45      }
46  
47      /**
48       * {@inheritDoc}
49       * 
50       * @see org.exolab.castor.xml.XMLClassDescriptor#
51       *      checkDescriptorForCorrectOrderWithinSequence(org.exolab.castor.xml.XMLFieldDescriptor,
52       *      org.exolab.castor.xml.UnmarshalState, java.lang.String)
53       */
54      public void checkDescriptorForCorrectOrderWithinSequence(
55              XMLFieldDescriptor elementDescriptor, UnmarshalState parentState,
56              String xmlName) throws ValidationException {
57          // no implementation
58      }
59  
60      /**
61       * {@inheritDoc}
62       * 
63       * @see org.exolab.castor.xml.XMLClassDescriptor#isChoice()
64       */
65      public boolean isChoice() {
66          return false;
67      }
68  
69      /**
70       * @see org.exolab.castor.builder.info.nature.PropertyHolder#
71       *      getProperty(java.lang.String)
72       * @param name
73       *            of the property
74       * @return value of the property
75       */
76      public Object getProperty(final String name) {
77          return _properties.get(name);
78      }
79  
80      /**
81       * @see org.exolab.castor.builder.info.nature.PropertyHolder#
82       *      setProperty(java.lang.String, java.lang.Object)
83       * @param name
84       *            of the property
85       * @param value
86       *            of the property
87       */
88      public void setProperty(final String name, final Object value) {
89          _properties.put(name, value);
90      }
91  
92      /**
93       * @see org.exolab.castor.builder.info.nature.NatureExtendable#
94       *      addNature(java.lang.String)
95       * @param nature
96       *            ID of the Nature
97       */
98      public void addNature(final String nature) {
99          _natures.add(nature);
100     }
101 
102     /**
103      * @see org.exolab.castor.builder.info.nature.NatureExtendable#
104      *      hasNature(java.lang.String)
105      * @param nature
106      *            ID of the Nature
107      * @return true if the Nature ID was added.
108      */
109     public boolean hasNature(final String nature) {
110         return _natures.contains(nature);
111     }
112 
113 
114 }