summaryrefslogtreecommitdiff
path: root/libjava/java/lang/Class.java
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-05 20:40:11 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-05 20:40:11 +0000
commitf91ed2b141975d0deafba31bd2dec640610a0b4b (patch)
treed6831eedd78519f01123093a5f9a1b1695f7a3ea /libjava/java/lang/Class.java
parent13c773a754902f99f21c8926af690472242795a7 (diff)
downloadgcc-f91ed2b141975d0deafba31bd2dec640610a0b4b.tar.gz
2002-07-04 Tom Tromey <tromey@redhat.com>
Jeff Sturm <jsturm@one-point.com> Fix for PR libgcj/7060: * java/lang/Class.h (_getMethod): Renamed from getMethod. * java/lang/natClass.cc (_getMethod): Renamed from getMethod. Recurse into superinterfaces. Don't throw NoSuchMethodException. * java/lang/Class.java (getMethod): New Java implementation; complies with spec. (_getMethod): New native method. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55266 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/Class.java')
-rw-r--r--libjava/java/lang/Class.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java
index 7bd38dee01f..12306da8061 100644
--- a/libjava/java/lang/Class.java
+++ b/libjava/java/lang/Class.java
@@ -121,8 +121,29 @@ public final class Class implements Serializable
private static final native String getSignature (Class[] parameterTypes,
boolean is_construtor);
- public native Method getMethod (String methodName, Class[] parameterTypes)
- throws NoSuchMethodException, SecurityException;
+ public native Method _getMethod (String methodName, Class[] parameterTypes);
+
+ public Method getMethod (String methodName, Class[] parameterTypes)
+ throws NoSuchMethodException, SecurityException
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null)
+ {
+ sm.checkMemberAccess(this, Member.PUBLIC);
+ Package p = getPackage();
+ if (p != null)
+ sm.checkPackageAccess(p.getName());
+ }
+
+ if ("<init>".equals(methodName) || "<clinit>".equals(methodName))
+ throw new NoSuchMethodException(methodName);
+
+ Method m = _getMethod(methodName, parameterTypes);
+ if (m == null)
+ throw new NoSuchMethodException (methodName);
+ return m;
+ }
+
private native int _getMethods (Method[] result, int offset);
public native Method[] getMethods () throws SecurityException;