@Internal public abstract class AbstractExecutableMethod extends java.lang.Object implements ExecutableMethod, EnvironmentConfigurable
Abstract base class for generated ExecutableMethod
classes to implement. The generated classes should
implement the Executable.invoke(Object, Object...)
method at compile time providing direct dispatch
of the target method
Modifier and Type | Field and Description |
---|---|
protected java.lang.Class[] |
argTypes |
protected java.lang.Class |
declaringType |
protected java.lang.String |
methodName |
CLASS_NAME_SUFFIX, EMPTY_METADATA, VALUE_MEMBER
EMPTY
Modifier | Constructor and Description |
---|---|
protected |
AbstractExecutableMethod(java.lang.Class<?> declaringType,
java.lang.String methodName,
Argument genericReturnType) |
protected |
AbstractExecutableMethod(java.lang.Class<?> declaringType,
java.lang.String methodName,
Argument genericReturnType,
Argument... arguments) |
Modifier and Type | Method and Description |
---|---|
void |
configure(Environment environment)
Configure the component for the given environment.
|
boolean |
equals(java.lang.Object o) |
AnnotationMetadata |
getAnnotationMetadata()
Supplies the metadata.
|
Argument[] |
getArguments()
The required argument types.
|
java.lang.Class[] |
getArgumentTypes() |
java.lang.Class |
getDeclaringType() |
java.lang.String |
getMethodName() |
ReturnType |
getReturnType() |
java.lang.reflect.Method |
getTargetMethod()
Soft resolves the target
Method avoiding reflection until as late as possible. |
int |
hashCode() |
java.lang.Object |
invoke(java.lang.Object instance,
java.lang.Object... arguments)
Invokes the method.
|
protected abstract java.lang.Object |
invokeInternal(java.lang.Object instance,
java.lang.Object[] arguments) |
protected AnnotationMetadata |
resolveAnnotationMetadata()
Resolves the annotation metadata for this method.
|
protected java.lang.reflect.Method |
resolveTargetMethod()
Resolves the target method.
|
java.lang.String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
isAbstract, isSuspend
getArguments
getArgumentNames, getArguments, getName, getTargetMethod
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, getAnnotation, getAnnotation, getAnnotationNameByStereotype, getAnnotationNameByStereotype, getAnnotationNames, getAnnotationNamesByStereotype, getAnnotationNamesByStereotype, getAnnotationType, getAnnotationTypeByStereotype, getAnnotationTypeByStereotype, getAnnotationTypesByStereotype, getAnnotationValuesByType, getDeclaredAnnotation, getDeclaredAnnotation, getDeclaredAnnotationNameByStereotype, getDeclaredAnnotationNames, getDeclaredAnnotationNamesByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationValuesByType, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValues, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValues, getValues, hasAnnotation, hasAnnotation, hasDeclaredAnnotation, hasDeclaredAnnotation, hasDeclaredStereotype, hasDeclaredStereotype, hasDeclaredStereotype, hasSimpleAnnotation, hasSimpleDeclaredAnnotation, hasStereotype, hasStereotype, hasStereotype, hasStereotype, intValue, intValue, intValue, isAnnotationPresent, isDeclaredAnnotationPresent, isEmpty, isFalse, isFalse, isPresent, isPresent, isTrue, isTrue, longValue, longValue, stringValue, stringValue, stringValue, stringValue, stringValues, stringValues, synthesize, synthesizeAll, synthesizeAnnotationsByType, synthesizeDeclared, synthesizeDeclared, synthesizeDeclaredAnnotationsByType
isDeclaredNonNull, isDeclaredNullable, isNonNull, isNullable
protected final java.lang.Class declaringType
protected final java.lang.String methodName
protected final java.lang.Class[] argTypes
protected AbstractExecutableMethod(java.lang.Class<?> declaringType, java.lang.String methodName, Argument genericReturnType, Argument... arguments)
declaringType
- The declaring typemethodName
- The method namegenericReturnType
- The generic return typearguments
- The argumentsprotected AbstractExecutableMethod(java.lang.Class<?> declaringType, java.lang.String methodName, Argument genericReturnType)
declaringType
- The declaring typemethodName
- The method namegenericReturnType
- The generic return typepublic AnnotationMetadata getAnnotationMetadata()
AnnotationMetadataProvider
AnnotationMetadata.EMPTY_METADATA
.getAnnotationMetadata
in interface AnnotationMetadataProvider
AnnotationMetadata
public void configure(Environment environment)
EnvironmentConfigurable
configure
in interface EnvironmentConfigurable
environment
- The environmentpublic boolean equals(java.lang.Object o)
public int hashCode()
public java.lang.String toString()
toString
in class java.lang.Object
public ReturnType getReturnType()
getReturnType
in interface MethodReference
public java.lang.Class[] getArgumentTypes()
getArgumentTypes
in interface MethodReference
public java.lang.Class getDeclaringType()
getDeclaringType
in interface MethodReference
public java.lang.String getMethodName()
getMethodName
in interface MethodReference
public final java.lang.Object invoke(java.lang.Object instance, java.lang.Object... arguments)
Executable
invoke
in interface Executable
instance
- The instancearguments
- The argumentsprotected abstract java.lang.Object invokeInternal(java.lang.Object instance, java.lang.Object[] arguments)
instance
- The instancearguments
- The argumentsprotected AnnotationMetadata resolveAnnotationMetadata()
AnnotationMetadata
public Argument[] getArguments()
Executable
getArguments
in interface Executable
public final java.lang.reflect.Method getTargetMethod()
Method
avoiding reflection until as late as possible.java.lang.NoSuchMethodError
- if the method doesn't exist@NonNull protected java.lang.reflect.Method resolveTargetMethod()