Commit 44331a7f331c2d2e3c6b750add60f5fd8a29a7f7
1 parent
4fb74d6c
Exists in
master
and in
5 other branches
Implementando interface jni
Showing
7 changed files
with
137 additions
and
44 deletions
Show diff stats
configure.ac
| @@ -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@ |
| @@ -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 /> |
| @@ -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 | + |
| @@ -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 | }; |