Class FeatureImpl

  • All Implemented Interfaces:
    java.lang.Comparable<Feature>, Feature
    Direct Known Subclasses:
    FeatureImpl_jcas_only

    public class FeatureImpl
    extends java.lang.Object
    implements Feature
    The implementation of features in the type system. A featureImpl instance is shared by the top defining type and all of its subtypes
    • Field Detail

      • featureCode

        private final int featureCode
      • featureOffset

        private short featureOffset
        the 0 based offset for this feature ignoring ref/int distinction, in feature order, without regard to JCas implemented features; set at commit time used by v2 style de/serializers
      • adjustedFeatureOffset

        private short adjustedFeatureOffset
      • isInInt

        public final boolean isInInt
      • isMultipleRefsAllowed

        private final boolean isMultipleRefsAllowed
      • isLongOrDouble

        public final boolean isLongOrDouble
        true if the range is a long or double
      • highestDefiningType

        private final TypeImpl highestDefiningType
      • rangeType

        private final TypeImpl rangeType
      • isAnnotBaseSofaRef

        public final boolean isAnnotBaseSofaRef
        true for the feature which is the AnnotationBase sofa reference.
      • shortName

        private final java.lang.String shortName
      • rangeTypeClass

        public final int rangeTypeClass
        type class of the range, including CasSerializer List constants
      • hashCodeLong

        private final long hashCodeLong
      • singleton

        public static final FeatureImpl singleton
        Used by CAS Copier to denote missing feature
    • Constructor Detail

      • FeatureImpl

        private FeatureImpl()
        used to make singleton which is used for "missing feature"
    • Method Detail

      • getCode

        public int getCode()
        Returns:
        the internal code of this feature. Necessary when using low-level APIs.
      • getDomain

        public Type getDomain()
        Get the domain type for this feature.
        Specified by:
        getDomain in interface Feature
        Returns:
        The domain type. This can not be null.
      • getRange

        public Type getRange()
        Get the range type for this feature. * @return The range type. This can not be null.
        Specified by:
        getRange in interface Feature
        Returns:
        The range type. This can not be null.
      • getRangeImpl

        public TypeImpl getRangeImpl()
      • getName

        public java.lang.String getName()
        Get the fully qualified name for this feature. The Feature qualifier is that of the highest defining type.
        Specified by:
        getName in interface Feature
        Returns:
        The name. This can not be null.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • isMultipleReferencesAllowed

        public boolean isMultipleReferencesAllowed()
        Description copied from interface: Feature
        Checks if there can be multiple references to values of this feature. This is only meaningful for array-valued or list-values features.

        If this is false it indicates that this feature has exclusive ownership of the array or list, so changes to the array or list are localized. If this is true it indicates that the array or list may be shared, so changes to it may affect other objects in the CAS.

        Specified by:
        isMultipleReferencesAllowed in interface Feature
        Returns:
        true iff the value type of this feature is an array or list and has been declared to allow multiple references.
      • getOffset

        public int getOffset()
        Returns:
        the 0-based offset for this feature
      • setOffset

        void setOffset​(int offset)
      • getAdjustedOffset

        public int getAdjustedOffset()
      • setAdjustedOffset

        void setAdjustedOffset​(int offset)
      • getHighestDefiningType

        TypeImpl getHighestDefiningType()
      • validateIsInAllowedValue

        public void validateIsInAllowedValue​(java.lang.String v)
        throw if v is not in the allowed value set of the range type
        Parameters:
        v - the value to check
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • hashCodeLong

        public long hashCodeLong()
      • computeHashCodeLong

        public long computeHashCodeLong()
        Hashcode and equals are used, possibly for features in different type systems, where the features should be "equal". Example: fitering during serialization.
        Returns:
        long version of hashcode
      • compareTo

        public int compareTo​(Feature o)
        This should work across different type systems, for instance when using filtered serialization
        Specified by:
        compareTo in interface java.lang.Comparable<Feature>
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object