public final class ReflectionRecipes
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
ReflectionRecipes.ListBackedImmutableQueue<T> |
Modifier and Type | Field and Description |
---|---|
private static java.util.Map<java.lang.Class,java.util.List<java.lang.Class>> |
ASSIGNABLE_MAPPING |
private static java.util.Map<java.lang.Class,java.lang.Class> |
PRIMITIVE_MAPPING |
Modifier | Constructor and Description |
---|---|
private |
ReflectionRecipes() |
Modifier and Type | Method and Description |
---|---|
private static boolean |
canInject(Parameter parameter,
InjectableParameter injectableParameter) |
static java.lang.Class<?>[] |
classesFromParameters(Parameter[] parameters)
Extracts class instances from parameters.
|
static boolean |
exactMatch(java.lang.Class<?>[] classes,
java.lang.Object[] args)
Matches an array of class instances to an array of instances.
|
static boolean |
exactMatch(Parameter[] parameters,
java.lang.Object[] args)
Matches an array of parameters to an array of instances.
|
static Parameter[] |
filter(Parameter[] parameters,
java.util.Set<InjectableParameter> filters)
Omits 1.
|
static Parameter[] |
getConstructorParameters(java.lang.reflect.Constructor constructor)
Extracts constructor parameters.
|
static Parameter[] |
getMethodParameters(java.lang.reflect.Method method)
Extracts method parameters.
|
private static Parameter[] |
getParameters(java.lang.Class<?>[] parametersTypes,
java.lang.annotation.Annotation[][] parametersAnnotations) |
private static void |
initAssignableMapping() |
private static void |
initPrimitiveMapping() |
static java.lang.Object[] |
inject(Parameter[] parameters,
java.util.Set<InjectableParameter> filters,
java.lang.Object[] args,
java.lang.reflect.Constructor constructor,
ITestContext context,
ITestResult testResult)
Injects appropriate arguments.
|
static java.lang.Object[] |
inject(Parameter[] parameters,
java.util.Set<InjectableParameter> filters,
java.lang.Object[] args,
java.lang.reflect.Method injectionMethod,
ITestContext context,
ITestResult testResult)
Injects appropriate arguments.
|
static boolean |
isInstanceOf(java.lang.Class reference,
java.lang.Object object)
Checks if an instance is an instance of the given class.
|
static boolean |
isOrExtends(java.lang.Class<?> reference,
java.lang.Class<?> clazz)
Checks a class instance for being a given class or its sub-class.
|
static boolean |
isOrImplementsInterface(java.lang.Class<?> reference,
java.lang.Class<?> clazz)
Checks a class instance for being a given interface or its implementation.
|
static boolean |
lenientMatch(java.lang.Class<?>[] classes,
java.lang.Object[] args)
Matches an array of class instances to an array of instances.
|
static boolean |
lenientMatch(Parameter[] parameters,
java.lang.Object[] args)
Matches an array of parameters to an array of instances.
|
static boolean |
matchArrayEnding(java.lang.Class<?>[] classes,
java.lang.Object[] args)
Matches an array of class instances to an array of instances having last class instance an array.
|
static boolean |
matchArrayEnding(Parameter[] parameters,
java.lang.Object[] param) |
private static java.lang.Object[] |
nativelyInject(Parameter[] parameters,
java.util.Set<InjectableParameter> filters,
java.lang.Object[] args,
java.lang.Object injectionMethod,
ITestContext context,
ITestResult testResult) |
private static final java.util.Map<java.lang.Class,java.lang.Class> PRIMITIVE_MAPPING
private static final java.util.Map<java.lang.Class,java.util.List<java.lang.Class>> ASSIGNABLE_MAPPING
private static void initPrimitiveMapping()
private static void initAssignableMapping()
public static boolean isInstanceOf(java.lang.Class reference, java.lang.Object object)
reference
- reference class.object
- instance to be tested.public static boolean isOrImplementsInterface(java.lang.Class<?> reference, java.lang.Class<?> clazz)
reference
- reference interface instance.clazz
- class instance to be tested.public static boolean isOrExtends(java.lang.Class<?> reference, java.lang.Class<?> clazz)
reference
- reference class instance.clazz
- class instance to be tested.public static java.lang.Class<?>[] classesFromParameters(Parameter[] parameters)
parameters
- an array of parameters.public static Parameter[] getMethodParameters(java.lang.reflect.Method method)
method
- any valid method.public static Parameter[] getConstructorParameters(java.lang.reflect.Constructor constructor)
constructor
- any valid constructor.private static Parameter[] getParameters(java.lang.Class<?>[] parametersTypes, java.lang.annotation.Annotation[][] parametersAnnotations)
public static boolean matchArrayEnding(Parameter[] parameters, java.lang.Object[] param)
matchArrayEnding(Class[], Object[])
public static boolean matchArrayEnding(java.lang.Class<?>[] classes, java.lang.Object[] args)
Assuming upper case letters denote classes and corresponding lowercase its instances. Classes {A,B,C...}, instances {a,b,c1,c2} ==> check for {a,b,{c1,c2}} match or Classes {A,B,C[]}, instances {a,b,c1,c2} ==> check for {a,b,{c1,c2}} match both of the above cases are equivalent.
classes
- array of class instances to check against.args
- instances to be verified.public static boolean exactMatch(Parameter[] parameters, java.lang.Object[] args)
exactMatch(Class[], Object[])
public static boolean exactMatch(java.lang.Class<?>[] classes, java.lang.Object[] args)
classes
- array of class instances to check against.args
- instances to be verified.public static boolean lenientMatch(Parameter[] parameters, java.lang.Object[] args)
lenientMatch(Class[], Object[])
public static boolean lenientMatch(java.lang.Class<?>[] classes, java.lang.Object[] args)
classes
- array of class instances to check against.args
- instances to be verified.public static Parameter[] filter(Parameter[] parameters, java.util.Set<InjectableParameter> filters)
An example would be Input: {ITestContext.class, int.class, Boolean.class, TestContext.class} Output: {int.class, Boolean.class}
parameters
- array of parameter instances under question.filters
- filters to use.public static java.lang.Object[] inject(Parameter[] parameters, java.util.Set<InjectableParameter> filters, java.lang.Object[] args, java.lang.reflect.Method injectionMethod, ITestContext context, ITestResult testResult)
parameters
- array of parameter instances under question.filters
- filters to use.args
- user supplied arguments.injectionMethod
- current test method.context
- current test context.testResult
- on going test results.private static java.lang.Object[] nativelyInject(Parameter[] parameters, java.util.Set<InjectableParameter> filters, java.lang.Object[] args, java.lang.Object injectionMethod, ITestContext context, ITestResult testResult)
public static java.lang.Object[] inject(Parameter[] parameters, java.util.Set<InjectableParameter> filters, java.lang.Object[] args, java.lang.reflect.Constructor constructor, ITestContext context, ITestResult testResult)
parameters
- array of parameter instances under question.filters
- filters to use.args
- user supplied arguments.constructor
- current test method.context
- current test context.testResult
- on going test results.private static boolean canInject(Parameter parameter, InjectableParameter injectableParameter)