public class DocumentType extends StructuredDataType
A document definition is a list of fields. Documents may inherit other documents, implicitly acquiring their fields as it's own. If a document is not set to inherit any document, it will always inherit the document "document.0".
Modifier and Type | Field and Description |
---|---|
private StructDataType |
bodyType |
static int |
classId |
private StructDataType |
headerType |
private List<DocumentType> |
inherits |
Constructor and Description |
---|
DocumentType(String name)
Creates a new document type and registers it with the document type manager.
|
DocumentType(String name,
StructDataType headerType,
StructDataType bodyType)
Creates a new document type and registers it with the document type manager.
|
Modifier and Type | Method and Description |
---|---|
void |
addField(Field field)
Adds an field that can be used with this document type.
|
Field |
addField(String name,
DataType type)
Adds a new body field to this document type and returns the new field object
|
Field |
addHeaderField(String name,
DataType type)
Adds a new header field to this document type and returns the new field object
|
DocumentType |
clone() |
Document |
createFieldValue()
Creates a new, empty FieldValue of this type
|
boolean |
equals(Object o) |
Iterator<Field> |
fieldIteratorThisTypeOnly()
Returns an iterator over all fields in this documenttype
|
Set<Field> |
fieldSet()
Returns an ordered set snapshot of all fields of this documenttype,
except the fields of Document.
|
StructDataType |
getBodyType() |
Field |
getField(int id)
Gets the field with the specified id.
|
Field |
getField(Integer id,
int version)
Gets the field matching a given ID.
|
Field |
getField(String name)
Gets the field matching a given name.
|
int |
getFieldCount() |
Collection<Field> |
getFields() |
StructDataType |
getHeaderType() |
Collection<DocumentType> |
getInheritedTypes()
Returns the DocumentNames which are directly inherited by this
as a read-only collection.
|
Class |
getValueClass() |
boolean |
hasField(String name)
Returns whether this type defines the given field name
|
int |
hashCode() |
void |
inherit(DocumentType type)
Adds a document to the inherited document types of this.
|
ListIterator<DataTypeName> |
inheritedIterator() |
boolean |
inherits(DocumentType superType)
Return whether this document type inherits the given document type.
|
boolean |
isA(String docTypeName)
Check if this document type has the given name,
or inherits from a type with that name.
|
boolean |
isValueCompatible(FieldValue value) |
void |
onSerialize(com.yahoo.vespa.objects.Serializer target) |
protected void |
register(DocumentTypeManager manager,
List<DataType> seenTypes) |
Field |
removeField(String name)
Removes an field from the DocumentType.
|
private void |
verifyTypeConsistency(DocumentType superType)
Fail if the subtype changes the type of any equally named field.
|
void |
visitMembers(com.yahoo.vespa.objects.ObjectVisitor visitor) |
buildFieldPath, createByReflection, createId, getDataTypeName
compareTo, createFieldValue, getArray, getCode, getId, getMap, getName, getPrimitiveType, getTensor, getWeightedSet, getWeightedSet, isAssignableFrom, isMultivalue, isRegistered, lastPredefinedDataTypeId, register, setId, setName, setRegistered, skipDotInString, toString
public static final int classId
private StructDataType headerType
private StructDataType bodyType
private List<DocumentType> inherits
public DocumentType(String name)
name
- The name of the new document typepublic DocumentType(String name, StructDataType headerType, StructDataType bodyType)
name
- The name of the new document typeheaderType
- The type of the header structbodyType
- The type of the body structpublic DocumentType clone()
public Document createFieldValue()
DataType
createFieldValue
in class StructuredDataType
public Class getValueClass()
getValueClass
in class DataType
public boolean isValueCompatible(FieldValue value)
isValueCompatible
in class DataType
public StructDataType getHeaderType()
public StructDataType getBodyType()
protected void register(DocumentTypeManager manager, List<DataType> seenTypes)
register
in class StructuredDataType
public boolean isA(String docTypeName)
public void addField(Field field)
field
- the field to addpublic Field addField(String name, DataType type)
name
- The name of the field to addtype
- The datatype of the field to addpublic Field addHeaderField(String name, DataType type)
name
- The name of the field to addtype
- The datatype of the field to addpublic void inherit(DocumentType type)
type
- An already DocumentType object.private void verifyTypeConsistency(DocumentType superType)
superType
- The supertype to verify against
TODO Add strict type checking no duplicate fields are allowedpublic Collection<DocumentType> getInheritedTypes()
public ListIterator<DataTypeName> inheritedIterator()
public boolean inherits(DocumentType superType)
superType
- The documenttype to check if it inherits.public Field getField(String name)
getField
in class StructuredDataType
name
- The name of a field.public Field getField(int id)
StructuredDataType
getField
in class StructuredDataType
id
- the id of the field to return.public boolean hasField(String name)
name
- The name of the field to check if it haspublic int getFieldCount()
public Field getField(Integer id, int version)
id
- The ID of a field.version
- The serialization version of the document.public Field removeField(String name)
name
- The name of the field.public Collection<Field> getFields()
getFields
in class StructuredDataType
public Set<Field> fieldSet()
Returns an ordered set snapshot of all fields of this documenttype, except the fields of Document. Only the overridden version will be returned for overridden fields.
The fields of a document type has a well-defined order which is exhibited in this set: - Fields come in the order defined in the document type definition. - The fields defined in inherited types come before those in the document type itself. - When a field in an inherited type is overridden, the value is overridden, but not the ordering.
public Iterator<Field> fieldIteratorThisTypeOnly()
public boolean equals(Object o)
equals
in class StructuredDataType
public int hashCode()
hashCode
in class StructuredDataType
public void onSerialize(com.yahoo.vespa.objects.Serializer target)
onSerialize
in class com.yahoo.vespa.objects.Identifiable
public void visitMembers(com.yahoo.vespa.objects.ObjectVisitor visitor)
visitMembers
in class DataType
Copyright © 2018. All rights reserved.