aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/javassist')
-rw-r--r--src/main/javassist/ClassPool.java15
-rw-r--r--src/main/javassist/CtClassType.java15
2 files changed, 24 insertions, 6 deletions
diff --git a/src/main/javassist/ClassPool.java b/src/main/javassist/ClassPool.java
index 0493c6db..5e006b81 100644
--- a/src/main/javassist/ClassPool.java
+++ b/src/main/javassist/ClassPool.java
@@ -864,14 +864,19 @@ public class ClassPool {
*
* @param name a fully-qualified interface name.
* Or null if the annotation has no super interface.
- * @param superclass the super interface.
* @throws RuntimeException if the existing interface is frozen.
* @since 3.19
*/
- public CtClass makeAnnotation(String name, CtClass superclass) throws RuntimeException {
- CtClass cc = makeInterface(name, superclass);
- cc.setModifiers(cc.getModifiers() | Modifier.ANNOTATION);
- return cc;
+ public CtClass makeAnnotation(String name) throws RuntimeException {
+ try {
+ CtClass cc = makeInterface(name, get("java.lang.annotation.Annotation"));
+ cc.setModifiers(cc.getModifiers() | Modifier.ANNOTATION);
+ return cc;
+ }
+ catch (NotFoundException e) {
+ // should never happen.
+ throw new RuntimeException(e.getMessage(), e);
+ }
}
/**
diff --git a/src/main/javassist/CtClassType.java b/src/main/javassist/CtClassType.java
index 7ed43759..ef3a2f77 100644
--- a/src/main/javassist/CtClassType.java
+++ b/src/main/javassist/CtClassType.java
@@ -676,7 +676,20 @@ class CtClassType extends CtClass {
}
catch (ClassNotFoundException e) {
ClassLoader cl2 = cp.getClass().getClassLoader();
- return anno.toAnnotationType(cl2, cp);
+ try {
+ return anno.toAnnotationType(cl2, cp);
+ }
+ catch (ClassNotFoundException e2){
+ try {
+ Class<?> clazz = cp.get(anno.getTypeName()).toClass();
+ return javassist.bytecode.annotation.AnnotationImpl.make(
+ clazz.getClassLoader(),
+ clazz, cp, anno);
+ }
+ catch (Throwable e3) {
+ throw new ClassNotFoundException(anno.getTypeName());
+ }
+ }
}
}