martin.out: New file.
authorTom Tromey <tromey@redhat.com>
Fri, 26 Jan 2001 22:41:41 +0000 (22:41 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 26 Jan 2001 22:41:41 +0000 (22:41 +0000)
* libjava.jni/martin.out: New file.
* libjava.jni/martin.c: New file.
* libjava.jni/martin.java: New file.

From-SVN: r39286

libjava/testsuite/ChangeLog
libjava/testsuite/libjava.jni/martin.c [new file with mode: 0644]
libjava/testsuite/libjava.jni/martin.java [new file with mode: 0644]
libjava/testsuite/libjava.jni/martin.out [new file with mode: 0644]

index ab8f5b13ca1d820f5b0b3ccfc8aaa1639aa27177..59dff24bd0f14fd4c65b6abbf0635b8b0836b24a 100644 (file)
@@ -1,3 +1,9 @@
+2001-01-26  Tom Tromey  <tromey@redhat.com>
+
+       * libjava.jni/martin.out: New file.
+       * libjava.jni/martin.c: New file.
+       * libjava.jni/martin.java: New file.
+
 2001-01-16  Richard Henderson  <rth@redhat.com>
 
        * 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 (file)
index 0000000..31f53e1
--- /dev/null
@@ -0,0 +1,41 @@
+#include <jni.h>
+#include "martin.h"
+#include <stdio.h>
+
+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 (file)
index 0000000..b866a60
--- /dev/null
@@ -0,0 +1,21 @@
+// Test case from Martin Kahlert <martin.kahlert@infineon.com>
+
+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 (file)
index 0000000..a25bc6c
--- /dev/null
@@ -0,0 +1,4 @@
+Hello, Java
+From C
+Hello, Java (from C)
+Goodbye, Java