Class CollectionSchemaField

All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
ListSchemaField, SetSchemaField

public abstract class CollectionSchemaField extends ComplexSchemaField
A collection field in one version of a SchemaObjectType.
  • Constructor Details

    • CollectionSchemaField

      public CollectionSchemaField()
  • Method Details

    • getElementField

      public SimpleSchemaField getElementField()
      Get this collection field's element sub-field.
      Returns:
      element sub-field
    • setElementField

      public void setElementField(SimpleSchemaField elementField)
      Set this collection field's element sub-field.
      Parameters:
      elementField - element sub-field
      Throws:
      UnsupportedOperationException - if this instance is locked down
    • getSubFields

      public final NavigableMap<String,SimpleSchemaField> getSubFields()
      Description copied from class: ComplexSchemaField
      Get the sub-fields of this field.
      Specified by:
      getSubFields in class ComplexSchemaField
      Returns:
      list of sub-fields, which will be unmodifiable if this instance is locked down
    • differencesFrom

      protected Diffs differencesFrom(CollectionSchemaField that)
    • clone

      public CollectionSchemaField clone()
      Deep-clone this instance.

      The returned instance will not be locked down even if this one is.

      Overrides:
      clone in class ComplexSchemaField
    • getObjectType

      public SchemaObjectType getObjectType()
      Get the SchemaObjectType of which this field is a member.
      Returns:
      containing object type
    • setObjectType

      public final void setObjectType(SchemaObjectType objectType)
      Set the SchemaObjectType of which this field is a member.

      Note: this field is considered derived information, and will be set automatically when a referrring SchemaObjectType is locked down.

      Parameters:
      objectType - containing object type
      Throws:
      UnsupportedOperationException - if this instance is locked down
    • visitSchemaItems

      public final <T extends SchemaItem> void visitSchemaItems(Class<T> nodeType, Consumer<? super T> visitor)
      Visit this schema item and all of its descendents matching the given type with the given visitor.

      The traversal is depth first, post-order.

      Parameters:
      nodeType - node type to include
      visitor - visitor for schema items
      Throws:
      IllegalArgumentException - if either parameter is null
    • isLockedDown

      public final boolean isLockedDown(boolean includingStorageIds)
      Determine whether this instance is locked down.
      Parameters:
      includingStorageIds - false to test all but storage ID's, true to require storage ID's to be locked down as well
      Returns:
      true if instance is locked down, otherwise false
    • getSchemaId

      public final SchemaId getSchemaId()
      Generate a unique SchemaId corresponding to the type and encoding structure of this schema item.

      The SchemaId does not depend on the storage ID.

      This instance must be locked down except for storage ID's. Repeated invocations of this method will be very fast, just returning the cached previous result.

      Returns:
      schema ID
      Throws:
      IllegalStateException - if this instance is not locked down
      See Also:
    • getItemType

      public abstract ItemType getItemType()
      Get the ItemType corresponding to this instance.
      Returns:
      schema item type