]
Shigeru Chiba resolved JASSIST-120.
-----------------------------------
Resolution: Rejected
This feature can be implemented by an external function using getDeclaredFields().
I reject this proposal to keep the API simple and minimum.
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: