]> source.dussan.org Git - javassist.git/commitdiff
fixed a minor problem of CtClassType
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Wed, 8 Mar 2006 07:19:35 +0000 (07:19 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Wed, 8 Mar 2006 07:19:35 +0000 (07:19 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@257 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/CtClass.java
src/main/javassist/CtClassType.java

index aee4909419005597ac5bc44538ed2543a865c177..fe6597a1f31bc7fc5706249c4893e15358122340 100644 (file)
@@ -1137,7 +1137,7 @@ public abstract class CtClass {
      * @param directoryName     it must end without a directory separator.
      */
     public void writeFile(String directoryName)
-        throws NotFoundException, CannotCompileException, IOException
+        throws CannotCompileException, IOException
     {
         String classname = getName();
         String filename = directoryName + File.separatorChar
index 770d57246fa2d557ac8ee170bb31af049add063a..86dbf3b27955f2f29dd123882afc0928d6957cf7 100644 (file)
@@ -437,12 +437,11 @@ class CtClassType extends CtClass {
         }
 
         Object[] result = new Object[size1 + size2];
-        ClassLoader cl = ClassPool.getContextClassLoader();
         for (int i = 0; i < size1; i++)
-            result[i] = anno1[i].toAnnotationType(cl, cp);
+            result[i] = toAnnoType(anno1[i], cp);
 
         for (int j = 0; j < size2; j++)
-            result[j + size1] = anno2[j].toAnnotationType(cl, cp);
+            result[j + size1] = toAnnoType(anno2[j], cp);
 
         return result;
     }
@@ -460,7 +459,6 @@ class CtClassType extends CtClass {
            return new Object[0][];
 
         Object[][] result = new Object[numParameters][];
-        ClassLoader cl = ClassPool.getContextClassLoader();
         for (int i = 0; i < numParameters; i++) {
             Annotation[] anno1, anno2;
             int size1, size2;
@@ -485,15 +483,28 @@ class CtClassType extends CtClass {
 
             result[i] = new Object[size1 + size2];
             for (int j = 0; j < size1; ++j)
-               result[i][j] = anno1[j].toAnnotationType(cl, cp);
+                result[i][j] = toAnnoType(anno1[j], cp);
 
             for (int j = 0; j < size2; ++j)
-               result[i][j + size1] = anno2[j].toAnnotationType(cl, cp);
+                result[i][j + size1] = toAnnoType(anno2[j], cp);
         }
 
         return result;
     }
 
+    private static Object toAnnoType(Annotation anno, ClassPool cp)
+        throws ClassNotFoundException
+    {
+        try {
+            ClassLoader cl = ClassPool.getContextClassLoader();
+            return anno.toAnnotationType(cl, cp);
+        }
+        catch (ClassNotFoundException e) {
+            ClassLoader cl2 = cp.getClass().getClassLoader();
+            return anno.toAnnotationType(cl2, cp);
+        }
+    }
+
     public boolean subclassOf(CtClass superclass) {
         if (superclass == null)
             return false;