aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchibash <chiba@javassist.org>2016-10-14 02:40:06 +0900
committerchibash <chiba@javassist.org>2016-10-14 02:40:06 +0900
commit6a9079aa44cf883b9edc204c64fd0012bf917819 (patch)
treedfcb070ddba47e45323c5f77a59576d63b0c6dba
parentb3daebd813330549d789a591e1f28c6f09e18184 (diff)
downloadjavassist-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.jarbin724931 -> 725109 bytes
-rw-r--r--src/main/javassist/bytecode/annotation/Annotation.java14
-rw-r--r--src/main/javassist/bytecode/annotation/AnnotationImpl.java4
3 files changed, 14 insertions, 4 deletions
diff --git a/javassist.jar b/javassist.jar
index 53c4f4da..83712459 100644
--- a/javassist.jar
+++ b/javassist.jar
Binary files differ
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);
}