Class Field

java.lang.Object
com.yahoo.vespa.objects.FieldBase
com.yahoo.document.Field
All Implemented Interfaces:
FieldSet, Comparable<Field>
Direct Known Subclasses:
ExtendedField

public class Field extends com.yahoo.vespa.objects.FieldBase implements FieldSet, Comparable<Field>
A name and type. Fields are contained in document types to describe their fields, but is also used to represent name/type pairs which are not part of document types.
Author:
Thomas Gundersen, bratseth
  • Field Details

    • dataType

      protected DataType dataType
    • fieldId

      protected int fieldId
  • Constructor Details

    • Field

      public Field(String name, int id, DataType dataType)
      Creates a new field.
      Parameters:
      name - The name of the field
      id - Serialized ID
      dataType - The datatype of the field
    • Field

      public Field(String name)
    • Field

      public Field(String name, DataType dataType, DocumentType owner)
      Creates a new field.
      Parameters:
      name - The name of the field
      dataType - The datatype of the field
      owner - the owning document (used to check for id collisions)
    • Field

      public Field(String name, DataType dataType)
      Constructor for normal fields
      Parameters:
      name - The name of the field
      dataType - The datatype of the field
    • Field

      public Field(String name, Field field)
      Creates a field with a new name and the other properties (excluding the id and owner) copied from another field
  • Method Details

    • compareTo

      public int compareTo(Field o)
      Specified by:
      compareTo in interface Comparable<Field>
    • calculateIdV7

      protected int calculateIdV7(DocumentType owner)
      The field id must be unique within a document type, and also within a (unknown at this time) hierarchy of document types. In addition it should be as resilient to doctype content changes and inheritance hierarchy changes as possible. All of this is enforced for names, so id's should follow names. Therefore we hash on name.
    • setId

      public void setId(int newId, DocumentType owner)
      Sets the id of this field. Don't do this unless you know what you are doing
      Parameters:
      newId - the id - if this is less than 100 it will cause document to serialize using just one byte for this field id. 100-127 are reserved values
      owner - the owning document, this is checked for collisions and notified of the id change. It can not be null
    • getDataType

      public final DataType getDataType()
      Returns the datatype of the field
    • setDataType

      @Deprecated public void setDataType(DataType type)
      Deprecated.
      do not use
      Set the data type of the field. This will cause recalculation of fieldid for version 7+.
      Parameters:
      type - The new type of the field.
    • getId

      public final int getId()
    • hasForcedId

      public final boolean hasForcedId()
      Returns:
      true if the field has a forced id
    • equals

      public boolean equals(Object o)
      Two fields are equal if they have the same name and the same data type
      Overrides:
      equals in class com.yahoo.vespa.objects.FieldBase
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class com.yahoo.vespa.objects.FieldBase
    • toString

      public String toString()
      Overrides:
      toString in class com.yahoo.vespa.objects.FieldBase
    • contains

      public boolean contains(FieldSet o)
      Specified by:
      contains in interface FieldSet
    • clone

      public FieldSet clone() throws CloneNotSupportedException
      Specified by:
      clone in interface FieldSet
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException