Tom Tromey wrote:
> Archie> It seems from a first look that these java.lang.Class methods
> Archie> which are currently native:
> Archie>       Class.getClasses()
> Archie> [ ... ]
> 
> Archie> could be implemented entirely in Java, by relying on these methods:
> Archie>       Class.getDeclaredClasses()
> Archie> [ ... ]
> 
> Archie> Would this work? It would save a lot of native code writing
> Archie> for JVM implementors.
> 
> I took a quick look at this.  The various methods make different
> SecurityManager calls.  So a straightforward implementation wouldn't
> be correct.

Hmmm, maybe I'm confused. I was thinking something along these lines...

  public Field[] getFields() {
        // Do security manager check
        // call getFieldsNoSecurityCheck()
  }

  public Field[] getDeclaredFields() {
        // Do security manager check
        // call getDeclaredFieldsNoSecurityCheck()
  }

  private Field[] getFieldsNoSecurityCheck() {
        // call getDeclaredFieldsNoSecurityCheck()
        if (this.isInterface())
            // recurse: superclass.getFieldsNoSecurityCheck()
        else {
            // recurse: superinterface.getFieldsNoSecurityCheck()
            // for all superinterfaces
        }
        // return combined array
  }

  private native Field[] getDeclaredFieldsNoSecurityCheck();

  // same idea for getMethods(), getConstructors(), and getClasses()

I was planning on doing this whether or not it was merged into Classpath.
Is there a fundamental problem with this approach I'm not seeing?

Thanks for taking the time to look at this.

Cheers,
-Archie

__________________________________________________________________________
Archie Cobbs     *     Packet Design     *     http://www.packetdesign.com


_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath

Reply via email to