Commit 44331a7f331c2d2e3c6b750add60f5fd8a29a7f7

Authored by perry.werneck@gmail.com
1 parent 4fb74d6c

Implementando interface jni

@@ -146,6 +146,7 @@ case "$host" in @@ -146,6 +146,7 @@ case "$host" in
146 PLUGINS="hllapi" 146 PLUGINS="hllapi"
147 APP_GUI_SRC="resources.rc" 147 APP_GUI_SRC="resources.rc"
148 DLLPREFIX="" 148 DLLPREFIX=""
  149 + JNI_CPPFLAGS="-I\$(JDK_HOME)/include -I\$(JDK_HOME)/include/win32"
149 ;; 150 ;;
150 151
151 *-apple-*) 152 *-apple-*)
@@ -169,6 +170,7 @@ case "$host" in @@ -169,6 +170,7 @@ case "$host" in
169 LDAPPFLAGS="" 170 LDAPPFLAGS=""
170 DBGRPATH="-Wl,--rpath,.bin/Debug/lib" 171 DBGRPATH="-Wl,--rpath,.bin/Debug/lib"
171 DBGCMDPREFIX="LD_LIBRARY_PATH=\$(BINDIR)/Debug/lib" 172 DBGCMDPREFIX="LD_LIBRARY_PATH=\$(BINDIR)/Debug/lib"
  173 + JNI_CPPFLAGS="-I\$(JDK_HOME)/include -I\$(JDK_HOME)/include/linux"
172 174
173 esac 175 esac
174 176
@@ -339,6 +341,7 @@ AC_SUBST(JAVAH) @@ -339,6 +341,7 @@ AC_SUBST(JAVAH)
339 AC_SUBST(JAR) 341 AC_SUBST(JAR)
340 AC_SUBST(JDK_HOME) 342 AC_SUBST(JDK_HOME)
341 AC_SUBST(JRE_HOME) 343 AC_SUBST(JRE_HOME)
  344 +AC_SUBST(JNI_CPPFLAGS)
342 345
343 #--[ Headers ]------------------------------------------------------------------------------------------------------------------------------------------------ 346 #--[ Headers ]------------------------------------------------------------------------------------------------------------------------------------------------
344 347
src/java/Makefile.in
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 # 25 #
26 26
27 PACKAGE_NAME=@PACKAGE_NAME@ 27 PACKAGE_NAME=@PACKAGE_NAME@
28 -SOURCES= 28 +SOURCES=main.cc info.cc
29 29
30 #---[ Paths ]------------------------------------------------------------------ 30 #---[ Paths ]------------------------------------------------------------------
31 31
@@ -70,24 +70,24 @@ include $(CLASSLIBDIR)/class.mak @@ -70,24 +70,24 @@ include $(CLASSLIBDIR)/class.mak
70 70
71 #---[ Build options ]---------------------------------------------------------- 71 #---[ Build options ]----------------------------------------------------------
72 72
73 -CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ 73 +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 jni3270.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 jni3270.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 $<
86 86
87 -$(BINDIR)/java/$(PACKAGE)/%.class: %.java 87 +$(BINDIR)/java/$(PACKAGE_NAME)/%.class: %.java
88 @echo $< ... 88 @echo $< ...
89 @mkdir -p `dirname $@` 89 @mkdir -p `dirname $@`
90 - $(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -sourcepath $(PWD) -d $(BINDIR)/java $^ 90 + $(JAVAC) -encoding utf-8 -d $(BINDIR)/java $^
91 91
92 #---[ Release targets ]-------------------------------------------------------- 92 #---[ Release targets ]--------------------------------------------------------
93 93
@@ -117,10 +117,10 @@ run: $(BINDBG)/jni3270@DLLEXT@ @@ -117,10 +117,10 @@ run: $(BINDBG)/jni3270@DLLEXT@
117 117
118 #---[ Misc targets ]----------------------------------------------------------- 118 #---[ Misc targets ]-----------------------------------------------------------
119 119
120 -jni3270.h: $(BINDIR)/java/$(PACKAGE)/terminal.class 120 +jni3270.h: $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
121 @echo $< ... 121 @echo $< ...
122 @mkdir -p `dirname $@` 122 @mkdir -p `dirname $@`
123 - @$(JAVAH) -o $@ -classpath $(BINDIR)/java $(PACKAGE).terminal 123 + $(JAVAH) -o $@ -classpath $(BINDIR)/java $(PACKAGE_NAME).terminal
124 124
125 125
126 install: $(BINRLS)/jni3270@DLLEXT@ 126 install: $(BINRLS)/jni3270@DLLEXT@
src/java/info.cc 0 → 100644
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como info.cc e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 + #include "private.h"
  31 +
  32 +
  33 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  34 +
  35 +JNIEXPORT jstring JNICALL Java_pw3270_terminal_getVersion (JNIEnv *env, jobject obj) {
  36 +
  37 +}
  38 +
  39 +JNIEXPORT jstring JNICALL Java_pw3270_terminal_getRevision(JNIEnv *, jobject) {
  40 +
  41 +}
src/java/jni3270.cbp
@@ -32,8 +32,13 @@ @@ -32,8 +32,13 @@
32 <Compiler> 32 <Compiler>
33 <Add option="-Wall" /> 33 <Add option="-Wall" />
34 </Compiler> 34 </Compiler>
  35 + <Unit filename="../../configure.ac" />
  36 + <Unit filename="../include/pw3270/class.h" />
35 <Unit filename="Makefile.in" /> 37 <Unit filename="Makefile.in" />
  38 + <Unit filename="info.cc" />
36 <Unit filename="jni3270.h" /> 39 <Unit filename="jni3270.h" />
  40 + <Unit filename="main.cc" />
  41 + <Unit filename="private.h" />
37 <Unit filename="terminal.java" /> 42 <Unit filename="terminal.java" />
38 <Extensions> 43 <Extensions>
39 <code_completion /> 44 <code_completion />
src/java/main.cc 0 → 100644
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como main.cc e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 + #include "private.h"
  31 +
  32 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  33 +
  34 +
src/java/private.h 0 → 100644
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como private.h e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +#ifndef PRIVATE_H_INCLUDED
  30 +
  31 + #define PRIVATE_H_INCLUDED
  32 +
  33 + #include "jni3270.h"
  34 +
  35 +
  36 +
  37 +#endif // PRIVATE_H_INCLUDED
src/java/terminal.java
@@ -24,6 +24,9 @@ @@ -24,6 +24,9 @@
24 * 24 *
25 * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) 25 * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) 26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + * licinio@bb.com.br (Licínio Luis Branco)
  28 + * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
  29 + * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda)
27 * 30 *
28 */ 31 */
29 32
@@ -31,47 +34,17 @@ package pw3270; @@ -31,47 +34,17 @@ package pw3270;
31 34
32 public class terminal 35 public class terminal
33 { 36 {
34 - /* Get library/extension info */  
35 - public native String getVersion();  
36 - public native String getRevision(); 37 + // Init/Deinit
  38 + private native int init();
  39 + private native int deinit();
37 40
38 - /* Connect/Disconnect */  
39 - public native int Connect( String uri, int timeout );  
40 - public native int Disconnect();  
41 - public native int getConnectionState();  
42 -  
43 - /* Get Status */  
44 - public native boolean isConnected();  
45 - public native boolean isTerminalReady();  
46 - public native String getEncoding();  
47 -  
48 - /* Get/Query Screen contents */  
49 - public native String getScreenContentAt(int row, int col, int size);  
50 - public native String getScreenContent();  
51 - public native boolean queryStringAt(int row, int col, String key);  
52 -  
53 - /* Actions/Screen changes */  
54 - public native int sendEnterKey();  
55 - public native int setStringAt(int row, int col, String str);  
56 - public native int sendPFKey(int key);  
57 -  
58 - /* Waiting */  
59 - public native int wait(int seconds);  
60 - public native int waitForTerminalReady(int timeout);  
61 - public native int waitForStringAt(int row, int col, String key, int timeout);  
62 -  
63 - /* Non-native methods */  
64 - public int Connect(String hostinfo)  
65 - {  
66 - int rc = Connect(hostinfo,10);  
67 - if(rc != 0)  
68 - return rc;  
69 - return waitForTerminalReady(10);  
70 - } 41 + // Get library/extension info
  42 + public native String get_version();
  43 + public native String get_revision();
71 44
72 static 45 static
73 { 46 {
74 - System.loadLibrary("jni3270"); 47 + System.loadLibrary("pw3270_jni");
75 } 48 }
76 49
77 }; 50 };