Class AnnotationType.Abstract

  • All Implemented Interfaces:
    AnnotationType
    Direct Known Subclasses:
    AnnotationType.Impl
    Enclosing interface:
    AnnotationType

    public abstract static class AnnotationType.Abstract
    extends Object
    implements AnnotationType

    An abstract base class useful for implementing AnnotationType instances.

    This provides deffinitions for the logical operators (validate(), subTypeOf()), the mutators (setProperty(), getProperty() and deleteProperty()) and toString() that you may not want to write yourself. It leaves the data-related methods up to you.

    Since:
    1.3
    Author:
    Matthew Pocock, Thomas Down
    • Method Detail

      • setConstraints

        public void setConstraints​(Object key,
                                   PropertyConstraint pc,
                                   Location cc)
        Description copied from interface: AnnotationType
        Set the constraints associated with a property. This method constrains the value of the specified property such that all members must match con, and the number of members must match card. It implicitly constructs a CollectionConstraint.AllValuesIn instance.

        When you are building your own AnnotationType

        Specified by:
        setConstraints in interface AnnotationType
        Parameters:
        key - the name of the property to constrain
        pc - the PropertyConstraint to enforce
        cc - the CardinalityConstraint to enforce
      • setDefaultConstraints

        public void setDefaultConstraints​(PropertyConstraint pc,
                                          Location cc)
        Description copied from interface: AnnotationType
        Set the constraints that will apply to all properties without an explicitly defined set of constraints. This method constrains the value of the specified property such that all members must match con, and the number of members must match card. It implicitly constructs a CollectionConstraint.AllValuesIn instance.
        Specified by:
        setDefaultConstraints in interface AnnotationType
        Parameters:
        pc - the default PropertyConstraint
        cc - the default CardinalityConstraint
      • instanceOf

        public boolean instanceOf​(Annotation ann)
        Description copied from interface: AnnotationType
        Validate an Annotation against this AnnotationType. Any time you wish to see if an Annotation bundle conforms to a type
        Specified by:
        instanceOf in interface AnnotationType
        Parameters:
        ann - the Annotation to validate.
        Returns:
        true if ann conforms to this type and false if it doesn't.
      • setProperty

        public final void setProperty​(Annotation ann,
                                      Object property,
                                      Object value)
                               throws ChangeVetoException
        Description copied from interface: AnnotationType
        Set the property in an annotation bundle according to the type we believe it should be. This will take care of any neccisary packing or unpacking to Collections.
        Specified by:
        setProperty in interface AnnotationType
        Parameters:
        ann - the Annotation to modify
        property - the property key Object
        value - the property value Object
        Throws:
        ChangeVetoException - if the value could not be accepted by this annotation type for that property key, or if the Annotation could not be modified
      • getProperty

        public final Collection getProperty​(Annotation ann,
                                            Object property)
                                     throws ChangeVetoException
        Description copied from interface: AnnotationType
        Get the Collection of values associated with an Annotation bundle according to the type we believe it to be. This will take care of any neccisary packing or unpacking to Collections. Properties with no values will return empty Collections.
        Specified by:
        getProperty in interface AnnotationType
        Parameters:
        ann - the Annotation to access
        property - the property key Object
        Returns:
        a Collection of values
        Throws:
        ChangeVetoException - if the value could not be removed
      • subTypeOf

        public boolean subTypeOf​(AnnotationType subType)
        Description copied from interface: AnnotationType

        See if an AnnotationType is a specialisation of this type.

        An AnnotationType is a sub-type if it restricts each of the properties of the super-type to a type that can be cast to the type in the super-type. Note that this is not always a cast in the pure Java sense; it may include checks on the number and type of members in collections or other criteria.

        Specified by:
        subTypeOf in interface AnnotationType
        Parameters:
        subType - an AnnotationType to check.
        Returns:
        true if subType is a sub-type of this type.