Package io.permazen.schema
Class ComplexSchemaField
java.lang.Object
io.permazen.util.AbstractXMLStreaming
io.permazen.schema.SchemaItem
io.permazen.schema.SchemaField
io.permazen.schema.ComplexSchemaField
- All Implemented Interfaces:
Cloneable
- Direct Known Subclasses:
CollectionSchemaField,MapSchemaField
A complex field in one version of a
SchemaObjectType.-
Field Summary
Fields inherited from class io.permazen.schema.SchemaItem
NAME_PATTERNFields inherited from class io.permazen.util.AbstractXMLStreaming
log -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()Deep-clone this instance.booleanabstract ItemTypeGet theItemTypecorresponding to this instance.Get theSchemaObjectTypeof which this field is a member.final SchemaIdGenerate a uniqueSchemaIdcorresponding to the type and encoding structure of this schema item.abstract NavigableMap<String,SimpleSchemaField> Get the sub-fields of this field.inthashCode()final booleanisLockedDown(boolean includingStorageIds) Determine whether this instance is locked down.final voidsetObjectType(SchemaObjectType objectType) Set theSchemaObjectTypeof which this field is a member.final <T extends SchemaItem>
voidvisitSchemaItems(Class<T> nodeType, Consumer<? super T> visitor) Visit this schema item and all of its descendents matching the given type with the given visitor.voidvisitSchemaItems(Consumer<? super SchemaItem> visitor) Visit allSchemaItemdescendents of this instance with the given visitor.Methods inherited from class io.permazen.schema.SchemaField
toString, visitMethods inherited from class io.permazen.schema.SchemaItem
differencesFrom, getName, getStorageId, setName, setStorageIdMethods inherited from class io.permazen.util.AbstractXMLStreaming
expect, expectClose, getAttr, getAttr, getBooleanAttr, getBooleanAttr, getIntAttr, getIntAttr, getLongAttr, newInvalidAttributeException, newInvalidInputException, newInvalidInputException, next, skip, writeAttr, writeCData, writeCharacters, writeElement, writeEmptyElement, writeStartElement
-
Constructor Details
-
ComplexSchemaField
public ComplexSchemaField()
-
-
Method Details
-
getSubFields
Get the sub-fields of this field.- Returns:
- list of sub-fields, which will be unmodifiable if this instance is locked down
-
visitSchemaItems
Visit allSchemaItemdescendents of this instance with the given visitor.If this instance is also a
SchemaItem, then also visit this instance.The traversal is depth first, pre-order.
- Parameters:
visitor- visitor for schema items
-
clone
Deep-clone this instance.The returned instance will not be locked down even if this one is.
- Overrides:
clonein classSchemaField
-
equals
- Overrides:
equalsin classSchemaItem
-
hashCode
public int hashCode()- Overrides:
hashCodein classSchemaItem
-
getObjectType
Get theSchemaObjectTypeof which this field is a member.- Returns:
- containing object type
-
setObjectType
Set theSchemaObjectTypeof which this field is a member.Note: this field is considered derived information, and will be set automatically when a referrring
SchemaObjectTypeis 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 includevisitor- 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
Generate a uniqueSchemaIdcorresponding to the type and encoding structure of this schema item.The
SchemaIddoes 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
Get theItemTypecorresponding to this instance.- Returns:
- schema item type
-