diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog index ab8f5b13ca1..59dff24bd0f 100644 --- a/libjava/testsuite/ChangeLog +++ b/libjava/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2001-01-26 Tom Tromey + + * libjava.jni/martin.out: New file. + * libjava.jni/martin.c: New file. + * libjava.jni/martin.java: New file. + 2001-01-16 Richard Henderson * lib/libjava.exp (bytecompile_file): Don't unset CLASSPATH. diff --git a/libjava/testsuite/libjava.jni/martin.c b/libjava/testsuite/libjava.jni/martin.c new file mode 100644 index 00000000000..31f53e1d1fa --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.c @@ -0,0 +1,41 @@ +#include +#include "martin.h" +#include + +void Java_martin_myNative(JNIEnv* env, jobject this, jstring s) +{ + jclass cls; + jfieldID fid; + jobject obj; + jmethodID mid; + + printf("From C\n"); + + cls = (*env)->FindClass(env, "java/lang/System"); + if (cls == 0) { + printf("java/lang/System lookup failed\n"); + return; + } + fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava/io/PrintStream;"); + if (fid == 0) { + printf("java/lang/System::out lookup failed\n"); + return; + } + obj = (*env)->GetStaticObjectField(env, cls, fid); + if (obj == 0) { + printf("GetStaticObjectField call failed\n"); + return; + } + cls = (*env)->GetObjectClass(env, obj); + if (cls == 0) { + printf("GetObjectClass(out) failed\n"); + return; + } + mid = (*env)->GetMethodID(env, cls, "println", "(Ljava/lang/String;)V"); + if (mid == 0) { + printf("println method lookup failed\n"); + return; + } + (*env)->CallVoidMethod(env, obj, mid, s); +} + diff --git a/libjava/testsuite/libjava.jni/martin.java b/libjava/testsuite/libjava.jni/martin.java new file mode 100644 index 00000000000..b866a605c2e --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.java @@ -0,0 +1,21 @@ +// Test case from Martin Kahlert + +public class martin { + public native void myNative(String s); + + public void myJava(String s) { + s = s + ", Java"; + System.out.println(s); + } + + public static void main(String args[]) { + martin x = new martin(); + x.myJava("Hello"); + x.myNative("Hello, Java (from C)"); + x.myJava("Goodbye"); + } + + static { + System.loadLibrary("martin"); + } +} diff --git a/libjava/testsuite/libjava.jni/martin.out b/libjava/testsuite/libjava.jni/martin.out new file mode 100644 index 00000000000..a25bc6c28ef --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.out @@ -0,0 +1,4 @@ +Hello, Java +From C +Hello, Java (from C) +Goodbye, Java