From: Tom Tromey Date: Tue, 26 Aug 2003 14:37:10 +0000 (+0000) Subject: Proxy.java (ProxyData): `pack' now a String. X-Git-Tag: releases/gcc-3.4.0~4062 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6077db911457c2a58f7d3903db48807ab0a2c14b;p=thirdparty%2Fgcc.git Proxy.java (ProxyData): `pack' now a String. * java/lang/reflect/Proxy.java (ProxyData): `pack' now a String. (ProxyData.getPackage): New method. (ProxyData.getProxyData): Use package name, not Package. (ClassFactory.ClassFactory): Updated. From-SVN: r70809 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 17b2fe548454..c1f401d92900 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2003-08-26 Tom Tromey + + * java/lang/reflect/Proxy.java (ProxyData): `pack' now a String. + (ProxyData.getPackage): New method. + (ProxyData.getProxyData): Use package name, not Package. + (ClassFactory.ClassFactory): Updated. + 2003-08-25 Scott Gilbertson * Makefile.am: added gnu/awt/xlib/XOffScreenImage.java. * Makefile.in: re-generated. diff --git a/libjava/java/lang/reflect/Proxy.java b/libjava/java/lang/reflect/Proxy.java index e327f44664b2..1b38a4838425 100644 --- a/libjava/java/lang/reflect/Proxy.java +++ b/libjava/java/lang/reflect/Proxy.java @@ -1,5 +1,5 @@ /* Proxy.java -- build a proxy class that implements reflected interfaces - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -733,7 +733,7 @@ public class Proxy implements Serializable * The package this class is in. Possibly null, meaning the unnamed * package. */ - Package pack; + String pack; /** * The interfaces this class implements. Non-null, but possibly empty. @@ -776,6 +776,21 @@ public class Proxy implements Serializable { } + /** + * Return the name of a package given the name of a class. + * Returns null if no package. We use this in preference to + * using Class.getPackage() to avoid problems with ClassLoaders + * that don't set the package. + */ + static String getPackage(Class k) + { + String name = k.getName(); + int idx = name.lastIndexOf('.'); + if (idx >= 0) + return name.substring(0, idx); + return null; + } + /** * Verifies that the arguments are legal, and sets up remaining data * This should only be called when a class must be generated, as @@ -818,8 +833,8 @@ public class Proxy implements Serializable if (! Modifier.isPublic(inter.getModifiers())) if (in_package) { - Package p = inter.getPackage(); - if (data.pack != inter.getPackage()) + String p = getPackage(inter); + if (! data.pack.equals(p)) throw new IllegalArgumentException("non-public interfaces " + "from different " + "packages"); @@ -827,7 +842,7 @@ public class Proxy implements Serializable else { in_package = true; - data.pack = inter.getPackage(); + data.pack = getPackage(inter); } for (int j = i-1; j >= 0; j--) if (data.interfaces[j] == inter) @@ -954,7 +969,7 @@ public class Proxy implements Serializable // access_flags putU2(Modifier.SUPER | Modifier.FINAL | Modifier.PUBLIC); // this_class - qualName = ((data.pack == null ? "" : data.pack.getName() + '.') + qualName = ((data.pack == null ? "" : data.pack + '.') + "$Proxy" + data.id); putU2(classInfo(TypeSignature.getEncodingOfClass(qualName, false))); // super_class