diff options
author | chibash <chiba@javassist.org> | 2016-10-14 02:40:06 +0900 |
---|---|---|
committer | chibash <chiba@javassist.org> | 2016-10-14 02:40:06 +0900 |
commit | 6a9079aa44cf883b9edc204c64fd0012bf917819 (patch) | |
tree | dfcb070ddba47e45323c5f77a59576d63b0c6dba | |
parent | b3daebd813330549d789a591e1f28c6f09e18184 (diff) | |
download | javassist-6a9079aa44cf883b9edc204c64fd0012bf917819.tar.gz javassist-6a9079aa44cf883b9edc204c64fd0012bf917819.zip |
implements better annotation handling since Javassist may fail to
create a proxy object due to access controls by jigsaw.
-rw-r--r-- | javassist.jar | bin | 724931 -> 725109 bytes | |||
-rw-r--r-- | src/main/javassist/bytecode/annotation/Annotation.java | 14 | ||||
-rw-r--r-- | src/main/javassist/bytecode/annotation/AnnotationImpl.java | 4 |
3 files changed, 14 insertions, 4 deletions
diff --git a/javassist.jar b/javassist.jar Binary files differindex 53c4f4da..83712459 100644 --- a/javassist.jar +++ b/javassist.jar diff --git a/src/main/javassist/bytecode/annotation/Annotation.java b/src/main/javassist/bytecode/annotation/Annotation.java index 831960e3..6054f549 100644 --- a/src/main/javassist/bytecode/annotation/Annotation.java +++ b/src/main/javassist/bytecode/annotation/Annotation.java @@ -292,9 +292,17 @@ public class Annotation { public Object toAnnotationType(ClassLoader cl, ClassPool cp) throws ClassNotFoundException, NoSuchClassError { - return AnnotationImpl.make(cl, - MemberValue.loadClass(cl, getTypeName()), - cp, this); + Class clazz = MemberValue.loadClass(cl, getTypeName()); + try { + return AnnotationImpl.make(cl, clazz, cp, this); + } + catch (IllegalArgumentException e) { + /* AnnotationImpl.make() may throw this exception + * when it fails to make a proxy object for some + * reason. + */ + throw new ClassNotFoundException(clazz.getName(), e); + } } /** diff --git a/src/main/javassist/bytecode/annotation/AnnotationImpl.java b/src/main/javassist/bytecode/annotation/AnnotationImpl.java index babac927..672d2f3c 100644 --- a/src/main/javassist/bytecode/annotation/AnnotationImpl.java +++ b/src/main/javassist/bytecode/annotation/AnnotationImpl.java @@ -67,7 +67,9 @@ public class AnnotationImpl implements InvocationHandler { * @return the annotation */ public static Object make(ClassLoader cl, Class clazz, ClassPool cp, - Annotation anon) { + Annotation anon) + throws IllegalArgumentException + { AnnotationImpl handler = new AnnotationImpl(anon, cp, cl); return Proxy.newProxyInstance(cl, new Class[] { clazz }, handler); } |