diff options
author | chibash <chiba@javassist.org> | 2014-11-21 08:23:38 +0900 |
---|---|---|
committer | chibash <chiba@javassist.org> | 2014-11-21 08:23:38 +0900 |
commit | 7f73ad1fbc637870857839969ff55f2552f3e0ea (patch) | |
tree | fc13cc55ced6395ef0fdb61f80f6e15f91eb0919 /src/main/javassist | |
parent | 8c08b63daaaa5b1626a8666ee6e8d16c728e99a6 (diff) | |
download | javassist-7f73ad1fbc637870857839969ff55f2552f3e0ea.tar.gz javassist-7f73ad1fbc637870857839969ff55f2552f3e0ea.zip |
fixed JASSIST-237
Diffstat (limited to 'src/main/javassist')
-rw-r--r-- | src/main/javassist/ClassPool.java | 15 | ||||
-rw-r--r-- | src/main/javassist/CtClassType.java | 15 |
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()); + } + } } } |