下面列出了java.lang.reflect.AnnotatedArrayType#java.lang.NoSuchMethodException 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void verifyArrayFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType at;
at = c.getDeclaredField("typeAnnotatedArray").getAnnotatedType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[0], anno, "array1");
arrayTA[0] = anno;
for (int i = 1; i <= 3; i++) {
at = ((AnnotatedArrayType) at).getAnnotatedGenericComponentType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[i], anno, "array" + (i + 1));
arrayTA[i] = anno;
}
}
private void verifyMethodTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
Executable typeAnnotatedMethod =
c.getDeclaredMethod("typeAnnotatedMethod", TypeAnnotatedTestClass.class);
anno = typeAnnotatedMethod.getAnnotatedReturnType().getAnnotations()[0];
verifyTestAnn(returnTA, anno, "return");
returnTA = anno;
anno = typeAnnotatedMethod.getTypeParameters()[0].getAnnotations()[0];
verifyTestAnn(methodTypeParameterTA, anno, "methodTypeParameter");
methodTypeParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedParameterTypes()[0].getAnnotations()[0];
verifyTestAnn(formalParameterTA, anno, "formalParameter");
formalParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedExceptionTypes()[0].getAnnotations()[0];
verifyTestAnn(throwsTA, anno, "throws");
throwsTA = anno;
}
private void verifyArrayFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType at;
at = c.getDeclaredField("typeAnnotatedArray").getAnnotatedType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[0], anno, "array1");
arrayTA[0] = anno;
for (int i = 1; i <= 3; i++) {
at = ((AnnotatedArrayType) at).getAnnotatedGenericComponentType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[i], anno, "array" + (i + 1));
arrayTA[i] = anno;
}
}
private void verifyMethodTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
Executable typeAnnotatedMethod =
c.getDeclaredMethod("typeAnnotatedMethod", TypeAnnotatedTestClass.class);
anno = typeAnnotatedMethod.getAnnotatedReturnType().getAnnotations()[0];
verifyTestAnn(returnTA, anno, "return");
returnTA = anno;
anno = typeAnnotatedMethod.getTypeParameters()[0].getAnnotations()[0];
verifyTestAnn(methodTypeParameterTA, anno, "methodTypeParameter");
methodTypeParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedParameterTypes()[0].getAnnotations()[0];
verifyTestAnn(formalParameterTA, anno, "formalParameter");
formalParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedExceptionTypes()[0].getAnnotations()[0];
verifyTestAnn(throwsTA, anno, "throws");
throwsTA = anno;
}
private void verifyArrayFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType at;
at = c.getDeclaredField("typeAnnotatedArray").getAnnotatedType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[0], anno, "array1");
arrayTA[0] = anno;
for (int i = 1; i <= 3; i++) {
at = ((AnnotatedArrayType) at).getAnnotatedGenericComponentType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[i], anno, "array" + (i + 1));
arrayTA[i] = anno;
}
}
private void verifyMethodTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
Executable typeAnnotatedMethod =
c.getDeclaredMethod("typeAnnotatedMethod", TypeAnnotatedTestClass.class);
anno = typeAnnotatedMethod.getAnnotatedReturnType().getAnnotations()[0];
verifyTestAnn(returnTA, anno, "return");
returnTA = anno;
anno = typeAnnotatedMethod.getTypeParameters()[0].getAnnotations()[0];
verifyTestAnn(methodTypeParameterTA, anno, "methodTypeParameter");
methodTypeParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedParameterTypes()[0].getAnnotations()[0];
verifyTestAnn(formalParameterTA, anno, "formalParameter");
formalParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedExceptionTypes()[0].getAnnotations()[0];
verifyTestAnn(throwsTA, anno, "throws");
throwsTA = anno;
}
private void verifyArrayFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType at;
at = c.getDeclaredField("typeAnnotatedArray").getAnnotatedType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[0], anno, "array1");
arrayTA[0] = anno;
for (int i = 1; i <= 3; i++) {
at = ((AnnotatedArrayType) at).getAnnotatedGenericComponentType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[i], anno, "array" + (i + 1));
arrayTA[i] = anno;
}
}
private void verifyMethodTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
Executable typeAnnotatedMethod =
c.getDeclaredMethod("typeAnnotatedMethod", TypeAnnotatedTestClass.class);
anno = typeAnnotatedMethod.getAnnotatedReturnType().getAnnotations()[0];
verifyTestAnn(returnTA, anno, "return");
returnTA = anno;
anno = typeAnnotatedMethod.getTypeParameters()[0].getAnnotations()[0];
verifyTestAnn(methodTypeParameterTA, anno, "methodTypeParameter");
methodTypeParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedParameterTypes()[0].getAnnotations()[0];
verifyTestAnn(formalParameterTA, anno, "formalParameter");
formalParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedExceptionTypes()[0].getAnnotations()[0];
verifyTestAnn(throwsTA, anno, "throws");
throwsTA = anno;
}
private void verifyArrayFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType at;
at = c.getDeclaredField("typeAnnotatedArray").getAnnotatedType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[0], anno, "array1");
arrayTA[0] = anno;
for (int i = 1; i <= 3; i++) {
at = ((AnnotatedArrayType) at).getAnnotatedGenericComponentType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[i], anno, "array" + (i + 1));
arrayTA[i] = anno;
}
}
private void verifyMethodTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
Executable typeAnnotatedMethod =
c.getDeclaredMethod("typeAnnotatedMethod", TypeAnnotatedTestClass.class);
anno = typeAnnotatedMethod.getAnnotatedReturnType().getAnnotations()[0];
verifyTestAnn(returnTA, anno, "return");
returnTA = anno;
anno = typeAnnotatedMethod.getTypeParameters()[0].getAnnotations()[0];
verifyTestAnn(methodTypeParameterTA, anno, "methodTypeParameter");
methodTypeParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedParameterTypes()[0].getAnnotations()[0];
verifyTestAnn(formalParameterTA, anno, "formalParameter");
formalParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedExceptionTypes()[0].getAnnotations()[0];
verifyTestAnn(throwsTA, anno, "throws");
throwsTA = anno;
}
private void verifyArrayFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType at;
at = c.getDeclaredField("typeAnnotatedArray").getAnnotatedType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[0], anno, "array1");
arrayTA[0] = anno;
for (int i = 1; i <= 3; i++) {
at = ((AnnotatedArrayType) at).getAnnotatedGenericComponentType();
anno = at.getAnnotations()[0];
verifyTestAnn(arrayTA[i], anno, "array" + (i + 1));
arrayTA[i] = anno;
}
}
private void verifyMethodTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
Executable typeAnnotatedMethod =
c.getDeclaredMethod("typeAnnotatedMethod", TypeAnnotatedTestClass.class);
anno = typeAnnotatedMethod.getAnnotatedReturnType().getAnnotations()[0];
verifyTestAnn(returnTA, anno, "return");
returnTA = anno;
anno = typeAnnotatedMethod.getTypeParameters()[0].getAnnotations()[0];
verifyTestAnn(methodTypeParameterTA, anno, "methodTypeParameter");
methodTypeParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedParameterTypes()[0].getAnnotations()[0];
verifyTestAnn(formalParameterTA, anno, "formalParameter");
formalParameterTA = anno;
anno = typeAnnotatedMethod.getAnnotatedExceptionTypes()[0].getAnnotations()[0];
verifyTestAnn(throwsTA, anno, "throws");
throwsTA = anno;
}
public static void main(String argv[]) throws NoSuchFieldException, NoSuchMethodException {
if (argv.length == 1 && argv[0].equals("buildagent")) {
buildAgent();
return;
}
if (inst == null) {
throw new RuntimeException("Instrumentation object was null");
}
RedefineAnnotations test = new RedefineAnnotations();
test.testTransformAndVerify();
}
private void testTransformAndVerify()
throws NoSuchFieldException, NoSuchMethodException {
Class<TypeAnnotatedTestClass> c = TypeAnnotatedTestClass.class;
Class<?> myClass = c;
/*
* Verify that the expected annotations are where they should be before transform.
*/
verifyClassTypeAnnotations(c);
verifyFieldTypeAnnotations(c);
verifyMethodTypeAnnotations(c);
try {
inst.addTransformer(new Transformer(), true);
inst.retransformClasses(myClass);
} catch (UnmodifiableClassException e) {
throw new RuntimeException(e);
}
/*
* Verify that the expected annotations are where they should be after transform.
* Also verify that before and after are equal.
*/
verifyClassTypeAnnotations(c);
verifyFieldTypeAnnotations(c);
verifyMethodTypeAnnotations(c);
}
private void verifyFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
verifyBasicFieldTypeAnnotations(c);
verifyInnerFieldTypeAnnotations(c);
verifyArrayFieldTypeAnnotations(c);
verifyMapFieldTypeAnnotations(c);
}
private void verifyBasicFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno = c.getDeclaredField("typeAnnotatedBoolean").getAnnotatedType().getAnnotations()[0];
verifyTestAnn(fieldTA, anno, "field");
fieldTA = anno;
}
private void verifyInnerFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
AnnotatedType at = c.getDeclaredField("typeAnnotatedInner").getAnnotatedType();
Annotation anno = at.getAnnotations()[0];
verifyTestAnn(innerTA, anno, "inner");
innerTA = anno;
}
private void verifyMapFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType atBase;
AnnotatedType atParameter;
atBase = c.getDeclaredField("typeAnnotatedMap").getAnnotatedType();
anno = atBase.getAnnotations()[0];
verifyTestAnn(mapTA[0], anno, "map1");
mapTA[0] = anno;
atParameter =
((AnnotatedParameterizedType) atBase).
getAnnotatedActualTypeArguments()[0];
anno = ((AnnotatedWildcardType) atParameter).getAnnotations()[0];
verifyTestAnn(mapTA[1], anno, "map2");
mapTA[1] = anno;
anno =
((AnnotatedWildcardType) atParameter).
getAnnotatedUpperBounds()[0].getAnnotations()[0];
verifyTestAnn(mapTA[2], anno, "map3");
mapTA[2] = anno;
atParameter =
((AnnotatedParameterizedType) atBase).
getAnnotatedActualTypeArguments()[1];
anno = ((AnnotatedParameterizedType) atParameter).getAnnotations()[0];
verifyTestAnn(mapTA[3], anno, "map4");
mapTA[3] = anno;
anno =
((AnnotatedParameterizedType) atParameter).
getAnnotatedActualTypeArguments()[0].getAnnotations()[0];
verifyTestAnn(mapTA[4], anno, "map5");
mapTA[4] = anno;
}
public static void main(String argv[]) throws NoSuchFieldException, NoSuchMethodException {
if (argv.length == 1 && argv[0].equals("buildagent")) {
buildAgent();
return;
}
if (inst == null) {
throw new RuntimeException("Instrumentation object was null");
}
RedefineAnnotations test = new RedefineAnnotations();
test.testTransformAndVerify();
}
private void testTransformAndVerify()
throws NoSuchFieldException, NoSuchMethodException {
Class<TypeAnnotatedTestClass> c = TypeAnnotatedTestClass.class;
Class<?> myClass = c;
/*
* Verify that the expected annotations are where they should be before transform.
*/
verifyClassTypeAnnotations(c);
verifyFieldTypeAnnotations(c);
verifyMethodTypeAnnotations(c);
try {
inst.addTransformer(new Transformer(), true);
inst.retransformClasses(myClass);
} catch (UnmodifiableClassException e) {
throw new RuntimeException(e);
}
/*
* Verify that the expected annotations are where they should be after transform.
* Also verify that before and after are equal.
*/
verifyClassTypeAnnotations(c);
verifyFieldTypeAnnotations(c);
verifyMethodTypeAnnotations(c);
}
private void verifyFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
verifyBasicFieldTypeAnnotations(c);
verifyInnerFieldTypeAnnotations(c);
verifyArrayFieldTypeAnnotations(c);
verifyMapFieldTypeAnnotations(c);
}
private void verifyBasicFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno = c.getDeclaredField("typeAnnotatedBoolean").getAnnotatedType().getAnnotations()[0];
verifyTestAnn(fieldTA, anno, "field");
fieldTA = anno;
}
private void verifyInnerFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
AnnotatedType at = c.getDeclaredField("typeAnnotatedInner").getAnnotatedType();
Annotation anno = at.getAnnotations()[0];
verifyTestAnn(innerTA, anno, "inner");
innerTA = anno;
}
private void verifyMapFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType atBase;
AnnotatedType atParameter;
atBase = c.getDeclaredField("typeAnnotatedMap").getAnnotatedType();
anno = atBase.getAnnotations()[0];
verifyTestAnn(mapTA[0], anno, "map1");
mapTA[0] = anno;
atParameter =
((AnnotatedParameterizedType) atBase).
getAnnotatedActualTypeArguments()[0];
anno = ((AnnotatedWildcardType) atParameter).getAnnotations()[0];
verifyTestAnn(mapTA[1], anno, "map2");
mapTA[1] = anno;
anno =
((AnnotatedWildcardType) atParameter).
getAnnotatedUpperBounds()[0].getAnnotations()[0];
verifyTestAnn(mapTA[2], anno, "map3");
mapTA[2] = anno;
atParameter =
((AnnotatedParameterizedType) atBase).
getAnnotatedActualTypeArguments()[1];
anno = ((AnnotatedParameterizedType) atParameter).getAnnotations()[0];
verifyTestAnn(mapTA[3], anno, "map4");
mapTA[3] = anno;
anno =
((AnnotatedParameterizedType) atParameter).
getAnnotatedActualTypeArguments()[0].getAnnotations()[0];
verifyTestAnn(mapTA[4], anno, "map5");
mapTA[4] = anno;
}
public static void main(String argv[]) throws NoSuchFieldException, NoSuchMethodException {
if (argv.length == 1 && argv[0].equals("buildagent")) {
buildAgent();
return;
}
if (inst == null) {
throw new RuntimeException("Instrumentation object was null");
}
RedefineAnnotations test = new RedefineAnnotations();
test.testTransformAndVerify();
}
private void testTransformAndVerify()
throws NoSuchFieldException, NoSuchMethodException {
Class<TypeAnnotatedTestClass> c = TypeAnnotatedTestClass.class;
Class<?> myClass = c;
/*
* Verify that the expected annotations are where they should be before transform.
*/
verifyClassTypeAnnotations(c);
verifyFieldTypeAnnotations(c);
verifyMethodTypeAnnotations(c);
try {
inst.addTransformer(new Transformer(), true);
inst.retransformClasses(myClass);
} catch (UnmodifiableClassException e) {
throw new RuntimeException(e);
}
/*
* Verify that the expected annotations are where they should be after transform.
* Also verify that before and after are equal.
*/
verifyClassTypeAnnotations(c);
verifyFieldTypeAnnotations(c);
verifyMethodTypeAnnotations(c);
}
private void verifyFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
verifyBasicFieldTypeAnnotations(c);
verifyInnerFieldTypeAnnotations(c);
verifyArrayFieldTypeAnnotations(c);
verifyMapFieldTypeAnnotations(c);
}
private void verifyBasicFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno = c.getDeclaredField("typeAnnotatedBoolean").getAnnotatedType().getAnnotations()[0];
verifyTestAnn(fieldTA, anno, "field");
fieldTA = anno;
}
private void verifyInnerFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
AnnotatedType at = c.getDeclaredField("typeAnnotatedInner").getAnnotatedType();
Annotation anno = at.getAnnotations()[0];
verifyTestAnn(innerTA, anno, "inner");
innerTA = anno;
}
private void verifyMapFieldTypeAnnotations(Class c)
throws NoSuchFieldException, NoSuchMethodException {
Annotation anno;
AnnotatedType atBase;
AnnotatedType atParameter;
atBase = c.getDeclaredField("typeAnnotatedMap").getAnnotatedType();
anno = atBase.getAnnotations()[0];
verifyTestAnn(mapTA[0], anno, "map1");
mapTA[0] = anno;
atParameter =
((AnnotatedParameterizedType) atBase).
getAnnotatedActualTypeArguments()[0];
anno = ((AnnotatedWildcardType) atParameter).getAnnotations()[0];
verifyTestAnn(mapTA[1], anno, "map2");
mapTA[1] = anno;
anno =
((AnnotatedWildcardType) atParameter).
getAnnotatedUpperBounds()[0].getAnnotations()[0];
verifyTestAnn(mapTA[2], anno, "map3");
mapTA[2] = anno;
atParameter =
((AnnotatedParameterizedType) atBase).
getAnnotatedActualTypeArguments()[1];
anno = ((AnnotatedParameterizedType) atParameter).getAnnotations()[0];
verifyTestAnn(mapTA[3], anno, "map4");
mapTA[3] = anno;
anno =
((AnnotatedParameterizedType) atParameter).
getAnnotatedActualTypeArguments()[0].getAnnotations()[0];
verifyTestAnn(mapTA[4], anno, "map5");
mapTA[4] = anno;
}