aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist
diff options
context:
space:
mode:
authorchibash <chiba@javassist.org>2014-11-21 08:23:38 +0900
committerchibash <chiba@javassist.org>2014-11-21 08:23:38 +0900
commit7f73ad1fbc637870857839969ff55f2552f3e0ea (patch)
treefc13cc55ced6395ef0fdb61f80f6e15f91eb0919 /src/main/javassist
parent8c08b63daaaa5b1626a8666ee6e8d16c728e99a6 (diff)
downloadjavassist-7f73ad1fbc637870857839969ff55f2552f3e0ea.tar.gz
javassist-7f73ad1fbc637870857839969ff55f2552f3e0ea.zip
fixed JASSIST-237
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());
+ }
+ }
}
}