package org.exolab.castor.xml.descriptors; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.exolab.castor.xml.UnmarshalState; import org.exolab.castor.xml.ValidationException; import org.exolab.castor.xml.XMLClassDescriptor; import org.exolab.castor.xml.XMLFieldDescriptor; public abstract class BaseDescriptor implements XMLClassDescriptor { /** * Map holding the properties set and read by Natures. */ private Map _properties = new HashMap(); /** * Map holding the available natures. */ private Set _natures = new HashSet(); /** * Returns true if the given object represented by this XMLClassDescriptor * can accept a member whose name is given. An XMLClassDescriptor can accept * a field if it contains a descriptor that matches the given name and if * the given object can hold this field (i.e a value is not already set for * this field). * <p> * This is mainly used for container object (that can contain other * objects), in this particular case the implementation returns false. * * @param name the name of the field to check * @param namespace the namespace of the element. This may be null. Note: A * null namespace is not the same as the default namespace unless the * default namespace is also null. * @param object the object represented by this XMLCLassDescriptor * @return true if the given object represented by this XMLClassDescriptor * can accept a member whose name is given. */ public boolean canAccept(String name, String namespace, Object object) { return false; } /** * {@inheritDoc} * * @see org.exolab.castor.xml.XMLClassDescriptor# * checkDescriptorForCorrectOrderWithinSequence(org.exolab.castor.xml.XMLFieldDescriptor, * org.exolab.castor.xml.UnmarshalState, java.lang.String) */ public void checkDescriptorForCorrectOrderWithinSequence( XMLFieldDescriptor elementDescriptor, UnmarshalState parentState, String xmlName) throws ValidationException { // no implementation } /** * {@inheritDoc} * * @see org.exolab.castor.xml.XMLClassDescriptor#isChoice() */ public boolean isChoice() { return false; } /** * @see org.exolab.castor.builder.info.nature.PropertyHolder# * getProperty(java.lang.String) * @param name * of the property * @return value of the property */ public Object getProperty(final String name) { return _properties.get(name); } /** * @see org.exolab.castor.builder.info.nature.PropertyHolder# * setProperty(java.lang.String, java.lang.Object) * @param name * of the property * @param value * of the property */ public void setProperty(final String name, final Object value) { _properties.put(name, value); } /** * @see org.exolab.castor.builder.info.nature.NatureExtendable# * addNature(java.lang.String) * @param nature * ID of the Nature */ public void addNature(final String nature) { _natures.add(nature); } /** * @see org.exolab.castor.builder.info.nature.NatureExtendable# * hasNature(java.lang.String) * @param nature * ID of the Nature * @return true if the Nature ID was added. */ public boolean hasNature(final String nature) { return _natures.contains(nature); } }