DATACMNS-1141 - Add missing NonNullApi and Nullable annotations.
Add Nullable annotation to ParsingUtils, Sort.Order and PropertyValueProvider. Add getRequiredAnnotation(…) to PersistentEntity and PersistentProperty to provide methods returning required, non-null annotations.
This commit is contained in:
@@ -249,6 +249,26 @@ public interface PersistentEntity<T, P extends PersistentProperty<P>> extends It
|
||||
@Nullable
|
||||
<A extends Annotation> A findAnnotation(Class<A> annotationType);
|
||||
|
||||
/**
|
||||
* Returns the required annotation of the given type on the {@link PersistentEntity}.
|
||||
*
|
||||
* @param annotationType must not be {@literal null}.
|
||||
* @return the annotation.
|
||||
* @throws IllegalStateException if the required {@code annotationType} is not found.
|
||||
* @since 2.0
|
||||
*/
|
||||
default <A extends Annotation> A getRequiredAnnotation(Class<A> annotationType) throws IllegalStateException {
|
||||
|
||||
A annotation = findAnnotation(annotationType);
|
||||
|
||||
if (annotation != null) {
|
||||
return annotation;
|
||||
}
|
||||
|
||||
throw new IllegalStateException(
|
||||
String.format("Required annotation %s not found for %s!", annotationType, getType()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the annotation of the given type is present on the {@link PersistentEntity}.
|
||||
*
|
||||
|
||||
@@ -269,6 +269,27 @@ public interface PersistentProperty<P extends PersistentProperty<P>> {
|
||||
@Nullable
|
||||
<A extends Annotation> A findAnnotation(Class<A> annotationType);
|
||||
|
||||
/**
|
||||
* Looks up the annotation of the given type on the {@link PersistentProperty}. Will inspect accessors and the
|
||||
* potentially backing field and traverse accessor methods to potentially available super types.
|
||||
*
|
||||
* @param annotationType the annotation to look up, must not be {@literal null}.
|
||||
* @return the annotation of the given type.
|
||||
* @throws IllegalStateException if the required {@code annotationType} is not found.
|
||||
* @since 2.0
|
||||
*/
|
||||
default <A extends Annotation> A getRequiredAnnotation(Class<A> annotationType) throws IllegalStateException {
|
||||
|
||||
A annotation = findAnnotation(annotationType);
|
||||
|
||||
if (annotation != null) {
|
||||
return annotation;
|
||||
}
|
||||
|
||||
throw new IllegalStateException(
|
||||
String.format("Required annotation %s not found for %s!", annotationType, getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Looks up the annotation of the given type on the property and the owning type if no annotation can be found on it.
|
||||
* Useful to lookup annotations that can be configured on the type but overridden on an individual property.
|
||||
|
||||
@@ -16,11 +16,13 @@
|
||||
package org.springframework.data.mapping.model;
|
||||
|
||||
import org.springframework.data.mapping.PersistentProperty;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
* SPI for components to provide values for as {@link PersistentProperty}.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Mark Paluch
|
||||
*/
|
||||
public interface PropertyValueProvider<P extends PersistentProperty<P>> {
|
||||
|
||||
@@ -30,5 +32,6 @@ public interface PropertyValueProvider<P extends PersistentProperty<P>> {
|
||||
* @param property will never be {@literal null}.
|
||||
* @return
|
||||
*/
|
||||
@Nullable
|
||||
<T> T getPropertyValue(P property);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user