Class ContainerFieldHandler

java.lang.Object
org.exolab.castor.xml.handlers.ContainerFieldHandler
All Implemented Interfaces:
FieldHandler

public final class ContainerFieldHandler extends Object implements FieldHandler
The FieldHandler for ContainerElement.
Version:
$Revision: 6784 $ $Date: 2006-04-25 15:08:23 -0600 (Tue, 25 Apr 2006) $
Author:
Keith Visco
See Also:
  • Field Details

    • MODE_AUTO

      public static final int MODE_AUTO
      Automatically choose the mode to use.
      See Also:
  • Constructor Details

    • ContainerFieldHandler

      public ContainerFieldHandler(FieldHandler handler)
      Creates a new ContainerFieldHandler with the given FieldHandler.
      Parameters:
      handler - The field handler to delegate to.
  • Method Details

    • getValue

      public Object getValue(Object object) throws IllegalStateException
      Returns the value of the field from the object. If mode is MODE_CHILD_LINK or mode is MODE_AUTO and the object is a ContainerElement, then the value of the parent is returned. Otherwise, a new ContainerElement is returned. The value of this new ContainerElement is the value of the provided object and the parent of the new ContainerElement is the provided object.
      Specified by:
      getValue in interface FieldHandler
      Parameters:
      object - The object to get the value of
      Returns:
      The value of the field
      Throws:
      IllegalStateException - The Java object has changed and is no longer supported by this handler, or the handler is not compatible with the Java object
    • newInstance

      public Object newInstance(Object parent) throws IllegalStateException
      Creates a new instance of the object described by this field. Of the object provided is a ContainerElement, then a new isntance of the parent object is returned. Otherwise a new ContainerElement is created and returned, with the parent set to the provided object.
      Specified by:
      newInstance in interface FieldHandler
      Parameters:
      parent - The object for which the field is created
      Returns:
      A new instance of the field's value
      Throws:
      IllegalStateException - This field is a simple type and cannot be instantiated
    • resetValue

      public void resetValue(Object object) throws IllegalStateException
      Sets the value of the field to a default value.

      Reference fields are set to null, primitive fields are set to their default value, collection fields are emptied of all elements.

      Specified by:
      resetValue in interface FieldHandler
      Parameters:
      object - The object
      Throws:
      IllegalStateException - The Java object has changed and is no longer supported by this handler, or the handler is not compatiable with the Java object
    • setValue

      public void setValue(Object object, Object value) throws IllegalStateException, IllegalArgumentException
      Sets the value of the field on the object. That is, sets the value of the container parent to the provided value.
      Specified by:
      setValue in interface FieldHandler
      Parameters:
      object - The object whose value to set.
      value - The new value
      Throws:
      IllegalStateException - The Java object has changed and is no longer supported by this handler, or the handler is not compatiable with the Java object
      IllegalArgumentException - The value passed is not of a supported type
    • checkValidity

      public void checkValidity(Object object) throws ValidityException, IllegalStateException
      Checks the field validity. Returns successfully if the field can be stored, is valid, etc, throws an exception otherwise.
      Specified by:
      checkValidity in interface FieldHandler
      Parameters:
      object - The object
      Throws:
      ValidityException - The field is invalid, is required and null, or any other validity violation
      IllegalStateException - The Java object has changed and is no longer supported by this handler, or the handler is not compatiable with the Java object