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

Shigeru Chiba (JIRA) jira-events at lists.jboss.org
Thu Jul 8 20:26:46 EDT 2010


     [ https://jira.jboss.org/browse/JASSIST-120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

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: 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