Package io.micronaut.inject.beans
Class AbstractInitializableBeanIntrospection<B>
java.lang.Object
io.micronaut.inject.beans.AbstractInitializableBeanIntrospection<B>
- Type Parameters:
B- The bean type
- All Implemented Interfaces:
AnnotationMetadata,AnnotationMetadataDelegate,AnnotationMetadataProvider,AnnotationSource,BeanInfo<B>,BeanIntrospection<B>,UnsafeBeanInstantiationIntrospection<B>,Ordered,ArgumentCoercible<B>
- Direct Known Subclasses:
AbstractInitializableBeanIntrospectionAndReference
public abstract class AbstractInitializableBeanIntrospection<B>
extends Object
implements UnsafeBeanInstantiationIntrospection<B>
Abstract implementation of the
BeanIntrospection interface. This class is subclasses at compilation time by generated byte code and should not be used directly.
Implementation is using method dispatch to access the bean instance.
- Since:
- 3.1
- Author:
- Denis Stepanov
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classBean method compile-time data container.static final classBean property compile-time data container.Nested classes/interfaces inherited from interface io.micronaut.core.beans.BeanIntrospection
BeanIntrospection.Builder<T> -
Field Summary
Fields inherited from interface io.micronaut.core.annotation.AnnotationMetadata
CLASS_NAME_SUFFIX, EMPTY_METADATA, VALUE_MEMBERFields inherited from interface io.micronaut.core.annotation.AnnotationSource
EMPTYFields inherited from interface io.micronaut.core.order.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractInitializableBeanIntrospection(Class<B> beanType, AnnotationMetadata annotationMetadata, AnnotationMetadata constructorAnnotationMetadata, Argument<?>[] constructorArguments, AbstractInitializableBeanIntrospection.BeanPropertyRef<Object>[] propertiesRefs, AbstractInitializableBeanIntrospection.BeanMethodRef<Object>[] methodsRefs) -
Method Summary
Modifier and TypeMethodDescriptionbuilder()protected <V> VTriggers the invocation of the method at index.protected <V> VdispatchOne(int index, @NonNull Object target, @Nullable Object arg) Triggers the invocation of the method at index for a single argument call.booleanfindIndexedProperty(@NonNull Class<? extends Annotation> annotationType, @NonNull String annotationValue) Get all the bean properties annotated for the given type.protected final MethodgetAccessibleTargetMethodByIndex(int index) FindMethodrepresentation at the method by index.Supplies the metadata.Returns theBeanMethodinstances for this introspection.protected Collection<BeanProperty<B,Object>> getBeanPropertiesIndexedSubset(int[] indexes) Returns subset of bean properties defined by an array of indexes.The bean type.Argument<?>[]The constructor arguments needed to instantiate the bean.getIndexedProperties(@NonNull Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given annotation type.getIndexedProperty(@NonNull Class<? extends Annotation> annotationType, @NonNull String annotationValue) Get all the bean properties annotated for the given type.getProperty(@NonNull String name) Obtain a property by name.protected BeanProperty<B,Object> getPropertyByIndex(int index) Obtain a property by its index.protected abstract MethodgetTargetMethodByIndex(int index) FindMethodrepresentation at the method by index.protected booleanWhether an accessible constructor exists.inthashCode()Instantiates an instance of the bean, throwing an exception is instantiation is not possible.instantiate(boolean strictNullable, Object... arguments) Instantiates an instance of the bean, throwing an exception is instantiation is not possible.protected BinstantiateInternal(@Nullable Object[] arguments) Reflection free bean instantiation implementation for the given arguments.instantiateUnsafe(@NonNull Object... arguments) Instantiates an instance of the bean.intpropertyIndexOf(String name) Obtain the property index position.toString()protected final RuntimeExceptionunknownDispatchAtIndexException(int index) Creates a new exception when the dispatch at index is not found.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface io.micronaut.core.annotation.AnnotationMetadata
enumValuesSet, enumValuesSet, getValues, hasDeclaredStereotype, hasEvaluatedExpressions, hasStereotypeNonRepeating, isAnnotationPresent, isDeclaredAnnotationPresentMethods inherited from interface io.micronaut.core.annotation.AnnotationMetadataDelegate
booleanValue, booleanValue, booleanValue, booleanValue, classValue, classValue, classValue, classValue, classValues, classValues, classValues, classValues, copyAnnotationMetadata, 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, getAnnotationValuesByName, getAnnotationValuesByStereotype, getAnnotationValuesByType, getDeclaredAnnotation, getDeclaredAnnotation, getDeclaredAnnotationNameByStereotype, getDeclaredAnnotationNames, getDeclaredAnnotationNamesByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationValuesByName, getDeclaredAnnotationValuesByType, getDeclaredMetadata, getDeclaredStereotypeAnnotationNames, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValues, getStereotypeAnnotationNames, getTargetAnnotationMetadata, 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, synthesizeDeclaredAnnotationsByTypeMethods inherited from interface io.micronaut.core.beans.BeanInfo
asArgument, getGenericBeanType, getOrderMethods inherited from interface io.micronaut.core.beans.BeanIntrospection
getIndexedProperty, getProperty, getPropertyNames, getReadProperty, getReadProperty, getReadPropertyNames, getRequiredProperty, getRequiredReadProperty, getRequiredWriteProperty, getWriteProperty, getWriteProperty, hasBuilder, instantiate, isBuildable
-
Constructor Details
-
AbstractInitializableBeanIntrospection
protected AbstractInitializableBeanIntrospection(Class<B> beanType, AnnotationMetadata annotationMetadata, AnnotationMetadata constructorAnnotationMetadata, Argument<?>[] constructorArguments, AbstractInitializableBeanIntrospection.BeanPropertyRef<Object>[] propertiesRefs, AbstractInitializableBeanIntrospection.BeanMethodRef<Object>[] methodsRefs)
-
-
Method Details
-
builder
- Specified by:
builderin interfaceBeanIntrospection<B>- Returns:
- Obtain a builder for this introspection.
-
hasConstructor
protected boolean hasConstructor()Whether an accessible constructor exists.- Returns:
- True if a default constructor exists
- Since:
- 4.7.11
-
instantiateInternal
Reflection free bean instantiation implementation for the given arguments.- Parameters:
arguments- The arguments- Returns:
- The bean
-
getPropertyByIndex
Obtain a property by its index.- Parameters:
index- The index of the property- Returns:
- A bean property
-
propertyIndexOf
Description copied from interface:BeanIntrospectionObtain the property index position.- Specified by:
propertyIndexOfin interfaceBeanIntrospection<B>- Parameters:
name- The name of the property- Returns:
- A property index or -1 of not found.
-
getTargetMethodByIndex
FindMethodrepresentation at the method by index. Used byMethodReference.getTargetMethod().- Parameters:
index- The index- Returns:
- The method
-
getAccessibleTargetMethodByIndex
FindMethodrepresentation at the method by index. Used byMethodReference.getTargetMethod().- Parameters:
index- The index- Returns:
- The method
- Since:
- 3.8.5
-
dispatch
Triggers the invocation of the method at index.- Type Parameters:
V- The result type- Parameters:
index- The method indextarget- The targetargs- The arguments- Returns:
- The result
-
dispatchOne
@Nullable protected <V> V dispatchOne(int index, @NonNull @NonNull Object target, @Nullable @Nullable Object arg) Triggers the invocation of the method at index for a single argument call. Allowing to not wrap a single argument in an object array.- Type Parameters:
V- The result type- Parameters:
index- The method indextarget- The targetarg- The argument- Returns:
- The result
-
unknownDispatchAtIndexException
Creates a new exception when the dispatch at index is not found.- Parameters:
index- The method index- Returns:
- The exception
-
findIndexedProperty
@Nullable public @Nullable BeanProperty<B,Object> findIndexedProperty(@NonNull @NonNull Class<? extends Annotation> annotationType, @NonNull @NonNull String annotationValue) Get all the bean properties annotated for the given type. Nullable result method version ofgetIndexedProperty(Class, String).- Parameters:
annotationType- The annotation typeannotationValue- The annotation value- Returns:
- An immutable collection of properties.
- See Also:
-
getIndexedProperties
@NonNull public @NonNull Collection<BeanProperty<B,Object>> getIndexedProperties(@NonNull @NonNull Class<? extends Annotation> annotationType) Description copied from interface:BeanIntrospectionGet all the bean properties annotated for the given annotation type. If the annotation isIntrospected.indexed()by the given annotation, then it will be included in the resulting list.- Specified by:
getIndexedPropertiesin interfaceBeanIntrospection<B>- Parameters:
annotationType- The annotation type- Returns:
- An immutable collection of properties.
- See Also:
-
getBeanPropertiesIndexedSubset
Returns subset of bean properties defined by an array of indexes.- Parameters:
indexes- The indexes- Returns:
- a collection of bean properties
-
instantiate
Description copied from interface:BeanIntrospectionInstantiates an instance of the bean, throwing an exception is instantiation is not possible.- Specified by:
instantiatein interfaceBeanIntrospection<B>- Returns:
- An instance
- Throws:
InstantiationException- If the bean cannot be instantiated or the arguments are not satisfied.
-
instantiate
@NonNull public B instantiate(boolean strictNullable, Object... arguments) throws InstantiationException Description copied from interface:BeanIntrospectionInstantiates an instance of the bean, throwing an exception is instantiation is not possible.- Specified by:
instantiatein interfaceBeanIntrospection<B>- Parameters:
strictNullable- If true, require null parameters to be annotated with a nullable annotationarguments- The arguments required to instantiate bean. Should match the types returned byBeanIntrospection.getConstructorArguments()- Returns:
- An instance
- Throws:
InstantiationException- If the bean cannot be instantiated.
-
instantiateUnsafe
Description copied from interface:UnsafeBeanInstantiationIntrospectionInstantiates an instance of the bean.- Specified by:
instantiateUnsafein interfaceUnsafeBeanInstantiationIntrospection<B>- Parameters:
arguments- The arguments required to instantiate bean.- Returns:
- An instance
-
getConstructor
- Specified by:
getConstructorin interfaceBeanIntrospection<B>- Returns:
- The bean constructor.
-
getConstructorArguments
Description copied from interface:BeanIntrospectionThe constructor arguments needed to instantiate the bean.- Specified by:
getConstructorArgumentsin interfaceBeanIntrospection<B>- Returns:
- An argument array
-
getIndexedProperty
@NonNull public @NonNull Optional<BeanProperty<B,Object>> getIndexedProperty(@NonNull @NonNull Class<? extends Annotation> annotationType, @NonNull @NonNull String annotationValue) Description copied from interface:BeanIntrospectionGet all the bean properties annotated for the given type.- Specified by:
getIndexedPropertyin interfaceBeanIntrospection<B>- Parameters:
annotationType- The annotation typeannotationValue- The annotation value- Returns:
- An immutable collection of properties.
- See Also:
-
getProperty
@NonNull public @NonNull Optional<BeanProperty<B,Object>> getProperty(@NonNull @NonNull String name) Description copied from interface:BeanIntrospectionObtain a property by name.- Specified by:
getPropertyin interfaceBeanIntrospection<B>- Parameters:
name- The name of the property- Returns:
- A bean property if found
-
getAnnotationMetadata
Description copied from interface:AnnotationMetadataProviderSupplies the metadata. Defaults toAnnotationMetadata.EMPTY_METADATA.- Specified by:
getAnnotationMetadatain interfaceAnnotationMetadataProvider- Returns:
- The
AnnotationMetadata
-
getBeanProperties
- Specified by:
getBeanPropertiesin interfaceBeanIntrospection<B>- Returns:
- An immutable collection of properties.
-
getBeanReadProperties
- Specified by:
getBeanReadPropertiesin interfaceBeanIntrospection<B>- Returns:
- An immutable collection of read properties.
-
getBeanWriteProperties
- Specified by:
getBeanWritePropertiesin interfaceBeanIntrospection<B>- Returns:
- An immutable collection of write properties.
-
getBeanType
Description copied from interface:BeanIntrospectionThe bean type.- Specified by:
getBeanTypein interfaceBeanInfo<B>- Specified by:
getBeanTypein interfaceBeanIntrospection<B>- Returns:
- The bean type
-
getBeanMethods
Description copied from interface:BeanIntrospectionReturns theBeanMethodinstances for this introspection.The
BeanMethodinstances are only those methods annotated withio.micronaut.context.annotation.Executableand hence represent a subset of the actual methods of the class and do not include any methods that are exposed asBeanPropertyinstances.- Specified by:
getBeanMethodsin interfaceBeanIntrospection<B>- Returns:
- An immutable collection of methods.
-
equals
-
hashCode
public int hashCode() -
toString
-