org.springframework.data.history

## Class AnnotationRevisionMetadata<N extends Number & Comparable<N>>

- java.lang.Object
- - org.springframework.data.history.AnnotationRevisionMetadata<N>

All Implemented Interfaces:
  RevisionMetadata<N>

    public class AnnotationRevisionMetadata<N extends Number & Comparable<N>>
    extends Object
    implements RevisionMetadata<N>

A `RevisionMetadata` implementation that inspects the given object for fields with the configured annotations and returns the field's values on calls to `#getRevisionDate()`, `getRevisionInstant()` and `getRevisionNumber()`.

Author:
  Oliver Gierke, Jens Schauder

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.springframework.data.history.RevisionMetadata

`RevisionMetadata.RevisionType`

### Constructor Summary

Constructors
Constructor and Description
`AnnotationRevisionMetadata(Object entity, Class<? extends Annotation> revisionNumberAnnotation, Class<? extends Annotation> revisionTimeStampAnnotation)` Creates a new `AnnotationRevisionMetadata` inspecting the given entity for the given annotations.
`AnnotationRevisionMetadata(Object entity, Class<? extends Annotation> revisionNumberAnnotation, Class<? extends Annotation> revisionTimeStampAnnotation, RevisionMetadata.RevisionType revisionType)` Creates a new `AnnotationRevisionMetadata` inspecting the given entity for the given annotations.

### Method Summary

All Methods Instance Methods Concrete Methods
`<T> T` `getDelegate()` Returns the underlying revision metadata which might provider more detailed implementation specific information.
`Optional<Instant>` `getRevisionInstant()` Returns the timestamp of the revision.
`Optional<N>` `getRevisionNumber()` Returns the revision number of the revision.
`RevisionMetadata.RevisionType` `getRevisionType()` Returns the `RevisionMetadata.RevisionType` of this change.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.data.history.RevisionMetadata

`getRequiredRevisionInstant, getRequiredRevisionNumber`

### Constructor Detail

#### AnnotationRevisionMetadata

    public AnnotationRevisionMetadata(Object entity,
                                      Class<? extends Annotation> revisionNumberAnnotation,
                                      Class<? extends Annotation> revisionTimeStampAnnotation)

Creates a new `AnnotationRevisionMetadata` inspecting the given entity for the given annotations. If no annotations will be provided these values will not be looked up from the entity and return null. The revisionType will be set to unknown

Parameters:
  `entity` - must not be null.
  `revisionNumberAnnotation` - must not be null.
  `revisionTimeStampAnnotation` - must not be null.

#### AnnotationRevisionMetadata

    public AnnotationRevisionMetadata(Object entity,
                                      Class<? extends Annotation> revisionNumberAnnotation,
                                      Class<? extends Annotation> revisionTimeStampAnnotation,
                                      RevisionMetadata.RevisionType revisionType)

Creates a new `AnnotationRevisionMetadata` inspecting the given entity for the given annotations. If no annotations will be provided these values will not be looked up from the entity and return null.

Parameters:
  `entity` - must not be null.
  `revisionNumberAnnotation` - must not be null.
  `revisionTimeStampAnnotation` - must not be null.
  `revisionType` - must not be null.
Since:
  2.2.0

### Method Detail

#### getRevisionNumber

    public Optional<N> getRevisionNumber()

Description copied from interface: `RevisionMetadata`
Returns the revision number of the revision.

Specified by:
  `getRevisionNumber` in interface `RevisionMetadata<N extends Number & Comparable<N>>`
Returns:
  will never be null.

#### getRevisionInstant

    public Optional<Instant> getRevisionInstant()

Description copied from interface: `RevisionMetadata`
Returns the timestamp of the revision.

Specified by:
  `getRevisionInstant` in interface `RevisionMetadata<N extends Number & Comparable<N>>`
Returns:
  will never be null.

#### getRevisionType

    public RevisionMetadata.RevisionType getRevisionType()

Description copied from interface: `RevisionMetadata`
Returns the `RevisionMetadata.RevisionType` of this change. If the `RevisionMetadata.RevisionType` cannot be determined, this method returns `RevisionMetadata.RevisionType.UNKNOWN`.

Specified by:
  `getRevisionType` in interface `RevisionMetadata<N extends Number & Comparable<N>>`
Returns:
  will never be null.

#### getDelegate

    public <T> T getDelegate()

Description copied from interface: `RevisionMetadata`
Returns the underlying revision metadata which might provider more detailed implementation specific information.

Specified by:
  `getDelegate` in interface `RevisionMetadata<N extends Number & Comparable<N>>`
Returns: