Package io.micronaut.core.beans
Interface BeanProperty<B,T>
-
- Type Parameters:
B
- The bean typeT
- The bean property type
- All Superinterfaces:
AnnotatedElement
,AnnotationMetadata
,AnnotationMetadataDelegate
,AnnotationMetadataProvider
,AnnotationSource
,ArgumentCoercible<T>
,Named
- All Known Subinterfaces:
UnsafeBeanProperty<B,T>
- All Known Implementing Classes:
AbstractBeanProperty
@Immutable public interface BeanProperty<B,T> extends AnnotatedElement, AnnotationMetadataDelegate, ArgumentCoercible<T>
Represents a bean property and associated annotation metadata.A
BeanProperty
allows you to read the value of a property viaget(Object)
or write to it viaset(Object, Object)
, without using reflection.The annotations of a property can be inspected via the
AnnotationMetadataProvider.getAnnotationMetadata()
method.- Since:
- 1.1
- See Also:
BeanIntrospection
-
-
Field Summary
-
Fields inherited from interface io.micronaut.core.annotation.AnnotationMetadata
CLASS_NAME_SUFFIX, EMPTY_METADATA, VALUE_MEMBER
-
Fields inherited from interface io.micronaut.core.annotation.AnnotationSource
EMPTY
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default Argument<T>
asArgument()
Represent the type as an argument, including any generic type information.default void
convertAndSet(B bean, java.lang.Object value)
Convert the value and set if on the bean using the default conversion service.T
get(B bean)
Read the bean value.default <T2> java.util.Optional<T2>
get(B bean, ArgumentConversionContext<T2> conversionContext)
Read the value and try to convert it to the given type.default <T2> java.util.Optional<T2>
get(B bean, Argument<T2> argument)
Read the value and try to convert it to the given type.default <T2> java.util.Optional<T2>
get(B bean, java.lang.Class<T2> type)
Read the value and try to convert it to the given type.default <T2> T2
get(B bean, java.lang.Class<T2> type, T2 defaultValue)
Read the value and try to convert it to the given type.BeanIntrospection<B>
getDeclaringBean()
default java.lang.Class<B>
getDeclaringType()
The declaring type of the property.java.lang.Class<T>
getType()
default boolean
hasSetterOrConstructorArgument()
This method returns true if the property can be mutated either via copy constructor or bean setter.default boolean
isReadOnly()
default boolean
isReadWrite()
Whether the property can be written to and read from.default boolean
isWriteOnly()
default void
set(B bean, T value)
Write the bean value.default B
withValue(B bean, T value)
This method will attempt to modify the property or if this is a immutable type using a copy constructor to return a new instance with the new value.-
Methods inherited from interface io.micronaut.core.annotation.AnnotatedElement
isDeclaredNonNull, isDeclaredNullable, isNonNull, isNullable
-
Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadata
getAnnotationValuesByName, getAnnotationValuesByStereotype, getDeclaredAnnotationValuesByName, getValues, hasDeclaredStereotype, isAnnotationPresent, isDeclaredAnnotationPresent
-
Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadataDelegate
booleanValue, booleanValue, booleanValue, booleanValue, classValue, classValue, classValue, classValue, classValues, classValues, classValues, classValues, doubleValue, doubleValue, doubleValue, enumValue, enumValue, enumValue, enumValue, enumValues, enumValues, enumValues, enumValues, findAnnotation, findAnnotation, findDeclaredAnnotation, findDeclaredAnnotation, findRepeatableAnnotation, findRepeatableAnnotation, getAnnotation, getAnnotation, getAnnotationNameByStereotype, getAnnotationNameByStereotype, getAnnotationNames, getAnnotationNamesByStereotype, getAnnotationNamesByStereotype, getAnnotationType, getAnnotationType, getAnnotationTypeByStereotype, getAnnotationTypeByStereotype, getAnnotationTypesByStereotype, getAnnotationTypesByStereotype, getAnnotationTypesByStereotype, getAnnotationValuesByType, getDeclaredAnnotation, getDeclaredAnnotation, getDeclaredAnnotationNameByStereotype, getDeclaredAnnotationNames, getDeclaredAnnotationNamesByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationValuesByType, getDeclaredMetadata, getDeclaredStereotypeAnnotationNames, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValues, getStereotypeAnnotationNames, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValues, getValues, hasAnnotation, hasAnnotation, hasDeclaredAnnotation, hasDeclaredAnnotation, hasDeclaredStereotype, hasDeclaredStereotype, hasDeclaredStereotype, hasPropertyExpressions, hasSimpleAnnotation, hasSimpleDeclaredAnnotation, hasStereotype, hasStereotype, hasStereotype, hasStereotype, intValue, intValue, intValue, isAnnotationPresent, isDeclaredAnnotationPresent, isEmpty, isFalse, isFalse, isPresent, isPresent, isRepeatableAnnotation, isRepeatableAnnotation, isTrue, isTrue, longValue, longValue, stringValue, stringValue, stringValue, stringValue, stringValues, stringValues, stringValues, stringValues, synthesize, synthesize, synthesizeAll, synthesizeAnnotationsByType, synthesizeDeclared, synthesizeDeclared, synthesizeDeclared, synthesizeDeclaredAnnotationsByType
-
Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadataProvider
getAnnotationMetadata
-
-
-
-
Method Detail
-
getDeclaringBean
@NonNull BeanIntrospection<B> getDeclaringBean()
- Returns:
- The declaring bean introspection.
-
get
@Nullable T get(@NonNull B bean)
Read the bean value.- Parameters:
bean
- The bean to read from- Returns:
- The value
- Throws:
java.lang.IllegalArgumentException
- If the bean instance if not of the correct type
-
get
@NonNull default <T2> java.util.Optional<T2> get(@NonNull B bean, @NonNull java.lang.Class<T2> type)
Read the value and try to convert it to the given type.- Type Parameters:
T2
- The generic type- Parameters:
bean
- The beantype
- The type- Returns:
- The value if conversion was possible.
-
get
default <T2> java.util.Optional<T2> get(@NonNull B bean, @NonNull Argument<T2> argument)
Read the value and try to convert it to the given type.- Type Parameters:
T2
- The generic type- Parameters:
bean
- The beanargument
- The type- Returns:
- The value if conversion was possible.
-
get
default <T2> java.util.Optional<T2> get(@NonNull B bean, @NonNull ArgumentConversionContext<T2> conversionContext)
Read the value and try to convert it to the given type.- Type Parameters:
T2
- The generic type- Parameters:
bean
- The beanconversionContext
- The conversion context to use- Returns:
- The value if conversion was possible.
-
get
@Nullable default <T2> T2 get(@NonNull B bean, @NonNull java.lang.Class<T2> type, @Nullable T2 defaultValue)
Read the value and try to convert it to the given type.- Type Parameters:
T2
- The generic type- Parameters:
bean
- The beantype
- The typedefaultValue
- The default value if conversion is not possible- Returns:
- The value if conversion was possible.
-
hasSetterOrConstructorArgument
default boolean hasSetterOrConstructorArgument()
This method returns true if the property can be mutated either via copy constructor or bean setter.- Returns:
- True if it is mutable
- Since:
- 2.3.0
- See Also:
withValue(Object, Object)
-
withValue
default B withValue(@NonNull B bean, @Nullable T value)
This method will attempt to modify the property or if this is a immutable type using a copy constructor to return a new instance with the new value.This differs from
set(Object, Object)
which will throw an exception if the property does not have a setter.- If the property is read-only but can be provided via constructor argument a new instance representing a copy of the bean is returned.
- If the property is mutable then the passed instance is returned and
set(Object, Object)
invoked to mutate the property - If there is no way for the property to be mutated then an
UnsupportedOperationException
is thrown
- Parameters:
bean
- The beanvalue
- The new value- Returns:
- Either the existing instance or the property is mutable or a newly created instance via the copy constructor pattern.
- Throws:
java.lang.UnsupportedOperationException
- if the property cannot be mutated- Since:
- 2.3.0
-
set
default void set(@NonNull B bean, @Nullable T value)
Write the bean value.- Parameters:
bean
- The beanvalue
- The value to write- Throws:
java.lang.IllegalArgumentException
- If either the bean type or value type are not correct
-
convertAndSet
default void convertAndSet(@NonNull B bean, @Nullable java.lang.Object value)
Convert the value and set if on the bean using the default conversion service.- Parameters:
bean
- The beanvalue
- The value- Throws:
ConversionErrorException
- If the value couldn't be converted
-
asArgument
@NonNull default Argument<T> asArgument()
Represent the type as an argument, including any generic type information.- Specified by:
asArgument
in interfaceArgumentCoercible<B>
- Returns:
- The argument
-
isReadOnly
default boolean isReadOnly()
- Returns:
- Whether the property is read-only
-
isWriteOnly
default boolean isWriteOnly()
- Returns:
- Whether the property is write-only
-
isReadWrite
default boolean isReadWrite()
Whether the property can be written to and read from.- Returns:
- True if it can.
-
getDeclaringType
default java.lang.Class<B> getDeclaringType()
The declaring type of the property.- Returns:
- The type
-
-