Commit 53c66d56bb3e473a509fcf5b6ab52842b428e68d

Authored by perry.werneck@gmail.com
1 parent 44331a7f

Implementando interface jni

src/java/Makefile.in
@@ -74,12 +74,12 @@ CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ -I../include @@ -74,12 +74,12 @@ CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ -I../include
74 74
75 #---[ Rules ]------------------------------------------------------------------ 75 #---[ Rules ]------------------------------------------------------------------
76 76
77 -$(OBJDBG)/%.o: %.cc Makefile jni3270.h 77 +$(OBJDBG)/%.o: %.cc Makefile *.h
78 @echo " CC `basename $@`" 78 @echo " CC `basename $@`"
79 @mkdir -p `dirname $@` 79 @mkdir -p `dirname $@`
80 $(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $< 80 $(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $<
81 81
82 -$(OBJRLS)/%.o: %.cc Makefile jni3270.h 82 +$(OBJRLS)/%.o: %.cc Makefile *.h
83 @echo " CC `basename $@`" 83 @echo " CC `basename $@`"
84 @mkdir -p `dirname $@` 84 @mkdir -p `dirname $@`
85 @$(CXX) -DNDEBUG=1 $(CXXFLAGS) -o $@ -c $< 85 @$(CXX) -DNDEBUG=1 $(CXXFLAGS) -o $@ -c $<
src/java/info.cc
@@ -32,10 +32,16 @@ @@ -32,10 +32,16 @@
32 32
33 /*---[ Implement ]----------------------------------------------------------------------------------*/ 33 /*---[ Implement ]----------------------------------------------------------------------------------*/
34 34
35 -JNIEXPORT jstring JNICALL Java_pw3270_terminal_getVersion (JNIEnv *env, jobject obj) { 35 +JNIEXPORT jstring JNICALL Java_pw3270_terminal_get_1version (JNIEnv *env, jobject obj) {
  36 +
  37 + session *s = getHandle(env,obj);
  38 + return env->NewStringUTF(s->get_version().c_str());
36 39
37 } 40 }
38 41
39 -JNIEXPORT jstring JNICALL Java_pw3270_terminal_getRevision(JNIEnv *, jobject) { 42 +JNIEXPORT jstring JNICALL Java_pw3270_terminal_get_1revision(JNIEnv *env, jobject obj) {
  43 +
  44 + session *s = getHandle(env,obj);
  45 + return env->NewStringUTF(s->get_revision().c_str());
40 46
41 } 47 }
src/java/main.cc
@@ -31,4 +31,32 @@ @@ -31,4 +31,32 @@
31 31
32 /*---[ Implement ]----------------------------------------------------------------------------------*/ 32 /*---[ Implement ]----------------------------------------------------------------------------------*/
33 33
  34 +static jfieldID getHandleField(JNIEnv *env, jobject obj) {
  35 + jclass c = env->GetObjectClass(obj);
  36 + // J is the type signature for long:
  37 + return env->GetFieldID(c, "nativeHandle", "J");
  38 +}
34 39
  40 +session * getHandle(JNIEnv *env, jobject obj) {
  41 + jlong handle = env->GetLongField(obj, getHandleField(env, obj));
  42 + return reinterpret_cast<PW3270_NAMESPACE::session *>(handle);
  43 +}
  44 +
  45 +JNIEXPORT jint JNICALL Java_pw3270_terminal_init(JNIEnv *env, jobject obj, jstring id) {
  46 +
  47 + jlong handle = reinterpret_cast<jlong>(session::create());
  48 +
  49 + env->SetLongField(obj, getHandleField(env, obj), handle);
  50 +
  51 + return 0;
  52 +}
  53 +
  54 +JNIEXPORT jint JNICALL Java_pw3270_terminal_deinit(JNIEnv *env, jobject obj) {
  55 +
  56 + session *s = getHandle(env,obj);
  57 + delete s;
  58 +
  59 + env->SetLongField(obj, getHandleField(env, obj), 0);
  60 +
  61 + return 0;
  62 +}
src/java/private.h
@@ -31,7 +31,10 @@ @@ -31,7 +31,10 @@
31 #define PRIVATE_H_INCLUDED 31 #define PRIVATE_H_INCLUDED
32 32
33 #include "jni3270.h" 33 #include "jni3270.h"
  34 + #include <pw3270/class.h>
34 35
  36 + using namespace PW3270_NAMESPACE;
35 37
  38 + PW3270_NAMESPACE::session * getHandle(JNIEnv *env, jobject obj);
36 39
37 #endif // PRIVATE_H_INCLUDED 40 #endif // PRIVATE_H_INCLUDED
src/java/terminal.java
@@ -34,14 +34,26 @@ package pw3270; @@ -34,14 +34,26 @@ package pw3270;
34 34
35 public class terminal 35 public class terminal
36 { 36 {
  37 + // PW3270 session handle
  38 + private long nativeHandle;
  39 +
37 // Init/Deinit 40 // Init/Deinit
38 - private native int init(); 41 + private native int init(String id);
39 private native int deinit(); 42 private native int deinit();
40 43
41 // Get library/extension info 44 // Get library/extension info
42 public native String get_version(); 45 public native String get_version();
43 public native String get_revision(); 46 public native String get_revision();
44 47
  48 +
  49 + public terminal(String id) {
  50 + init(id);
  51 + }
  52 +
  53 + protected void finalize( ) throws Throwable {
  54 + deinit();
  55 + }
  56 +
45 static 57 static
46 { 58 {
47 System.loadLibrary("pw3270_jni"); 59 System.loadLibrary("pw3270_jni");