[jboss-jira] [JBoss JIRA] Created: (JASSIST-120) Please add CtCalss.getFields(boolean isIncludePrivate)

Yu Kobayashi (JIRA) jira-events at lists.jboss.org
Thu May 27 02:21:08 EDT 2010


Please add CtCalss.getFields(boolean isIncludePrivate)
------------------------------------------------------

                 Key: JASSIST-120
                 URL: https://jira.jboss.org/browse/JASSIST-120
             Project: Javassist
          Issue Type: Feature Request
    Affects Versions: 3.12.0.GA
            Reporter: Yu Kobayashi
            Assignee: Shigeru Chiba


Currently, CtClass.getFields() does not include private fields.
This is same to java.lang.Class.getFields()
But I wish to have CtClass.getFields(boolean isIncludePrivate).

I made a patch for this. 
"src_original" includes JASSIST-119 and maybe line number is incorrect from 3.12.0.GA.


diff -r -u src_original/main/javassist/CtClass.java src/main/javassist/CtClass.java
--- src_original/main/javassist/CtClass.java	2010-05-27 15:00:24.940937600 +0900
+++ src/main/javassist/CtClass.java	2010-05-27 15:06:13.862662400 +0900
@@ -674,7 +674,9 @@
      * That array includes non-private fields inherited from the
      * superclasses.
      */
-    public CtField[] getFields() { return new CtField[0]; }
+    public CtField[] getFields() { return getFields(false); }
+    
+    public CtField[] getFields(boolean isIncludePrivate) { return new CtField[0]; }
     
     /**
      * Returns the field with the specified name.  The returned field
diff -r -u src_original/main/javassist/CtClassType.java src/main/javassist/CtClassType.java
--- src_original/main/javassist/CtClassType.java	2010-05-27 15:01:16.094492800 +0900
+++ src/main/javassist/CtClassType.java	2010-05-27 15:02:02.971899200 +0900
@@ -859,19 +859,19 @@
         }
     }
 
-	public CtField[] getFields() {
+	public CtField[] getFields(boolean isIncludePrivate) {
         ArrayList alist = new ArrayList();
-        getFields(alist, this);
+        getFields(alist, this, isIncludePrivate);
         return (CtField[])alist.toArray(new CtField[alist.size()]);
 	}
 
-    private static void getFields(ArrayList alist, CtClass cc) {
+    private static void getFields(ArrayList alist, CtClass cc, boolean isIncludePrivate) {
         int i, num;
         if (cc == null)
             return;
 
         try {
-            getFields(alist, cc.getSuperclass());
+            getFields(alist, cc.getSuperclass(), isIncludePrivate);
         }
         catch (NotFoundException e) {}
 
@@ -879,7 +879,7 @@
             CtClass[] ifs = cc.getInterfaces();
             num = ifs.length;
             for (i = 0; i < num; ++i)
-                getFields(alist, ifs[i]);
+                getFields(alist, ifs[i], isIncludePrivate);
         }
         catch (NotFoundException e) {}
 
@@ -888,7 +888,7 @@
         CtMember tail = memCache.lastField();
         while (field != tail) {
             field = field.next();
-            if (!Modifier.isPrivate(field.getModifiers()))
+            if (isIncludePrivate || !Modifier.isPrivate(field.getModifiers()))
                 alist.add(field);
         }
     }


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list