Commit d0bf243c5f8855933b83c03c19fe2d30f19d5106
1 parent
c052f63e
Exists in
master
and in
5 other branches
Implementando teste da classe jni
Showing
3 changed files
with
42 additions
and
6 deletions
Show diff stats
src/java/main.cc
... | ... | @@ -42,7 +42,7 @@ session * getHandle(JNIEnv *env, jobject obj) { |
42 | 42 | return reinterpret_cast<PW3270_NAMESPACE::session *>(handle); |
43 | 43 | } |
44 | 44 | |
45 | -JNIEXPORT jint JNICALL Java_pw3270_terminal_init(JNIEnv *env, jobject obj, jstring id) { | |
45 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_init__(JNIEnv *env, jobject obj) { | |
46 | 46 | |
47 | 47 | try { |
48 | 48 | |
... | ... | @@ -55,16 +55,47 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_init(JNIEnv *env, jobject obj, jstri |
55 | 55 | |
56 | 56 | } |
57 | 57 | |
58 | +} | |
59 | + | |
60 | + | |
61 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_init__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring j_id) { | |
62 | + | |
63 | + const char * id = env->GetStringUTFChars(j_id, 0); | |
64 | + | |
65 | + try { | |
66 | + | |
67 | + jlong handle = reinterpret_cast<jlong>(session::create(id)); | |
68 | + env->SetLongField(obj, getHandleField(env, obj), handle); | |
69 | + env->ReleaseStringUTFChars( j_id, id); | |
70 | + | |
71 | + } catch(std::exception &e) { | |
72 | + | |
73 | + env->ReleaseStringUTFChars( j_id, id); | |
74 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | |
75 | + | |
76 | + } | |
77 | + | |
58 | 78 | |
59 | 79 | return 0; |
60 | 80 | } |
61 | 81 | |
62 | 82 | JNIEXPORT jint JNICALL Java_pw3270_terminal_deinit(JNIEnv *env, jobject obj) { |
63 | 83 | |
64 | - session *s = getHandle(env,obj); | |
65 | - delete s; | |
84 | + try { | |
85 | + | |
86 | + session *s = getHandle(env,obj); | |
87 | + | |
88 | + if(s) { | |
89 | + delete s; | |
90 | + } | |
66 | 91 | |
67 | - env->SetLongField(obj, getHandleField(env, obj), 0); | |
92 | + env->SetLongField(obj, getHandleField(env, obj), 0); | |
93 | + | |
94 | + } catch(std::exception &e) { | |
95 | + | |
96 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | |
97 | + | |
98 | + } | |
68 | 99 | |
69 | 100 | return 0; |
70 | 101 | } | ... | ... |
src/java/terminal.java
... | ... | @@ -31,10 +31,11 @@ package pw3270; |
31 | 31 | |
32 | 32 | public class terminal |
33 | 33 | { |
34 | - // PW3270 session handle | |
34 | + // lib3270's session handle | |
35 | 35 | private long nativeHandle; |
36 | 36 | |
37 | 37 | // Init/Deinit |
38 | + private native int init(); | |
38 | 39 | private native int init(String id); |
39 | 40 | private native int deinit(); |
40 | 41 | |
... | ... | @@ -43,6 +44,10 @@ public class terminal |
43 | 44 | public native String get_revision(); |
44 | 45 | |
45 | 46 | |
47 | + public terminal() { | |
48 | + init(); | |
49 | + } | |
50 | + | |
46 | 51 | public terminal(String id) { |
47 | 52 | init(id); |
48 | 53 | } | ... | ... |
src/java/testprogram.java
... | ... | @@ -36,7 +36,7 @@ public class testprogram |
36 | 36 | try |
37 | 37 | { |
38 | 38 | System.err.println("Begin"); |
39 | - terminal host = new terminal("pw3270:a"); | |
39 | + terminal host = new terminal(); | |
40 | 40 | System.err.println("pw3270 version " + host.get_version() + " revision " + host.get_revision()); |
41 | 41 | System.err.println("End"); |
42 | 42 | } | ... | ... |