From 3fd5b5612bacdfda57daf2d4c6b3d847c0aa4aea Mon Sep 17 00:00:00 2001 From: Mikhail Lobotskiy Date: Tue, 23 Jul 2024 17:32:51 +0400 Subject: [PATCH] Add test Java example --- .../doctrenderer/docbuilder.java/make.py | 24 +++++++++++++++++++ .../java/docbuilder/CDocBuilderContext.java | 13 ++++++++++ .../docbuilder/CDocBuilderContextScope.java | 13 ++++++++++ .../src/java/docbuilder/FileTypes.java | 5 ++++ .../docbuilder.java/test/Program.java | 18 ++++++++++++++ .../docbuilder.java/test/make_test.py | 23 ++++++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/make.py create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/FileTypes.java create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/test/Program.java create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/test/make_test.py diff --git a/DesktopEditor/doctrenderer/docbuilder.java/make.py b/DesktopEditor/doctrenderer/docbuilder.java/make.py new file mode 100644 index 0000000000..12c575c89b --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/make.py @@ -0,0 +1,24 @@ +import os +import argparse + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Build Java wrapper for docbuilder library') + parser.add_argument('-H', '--headers', action='store_true', help='Generate C++ JNI header files') + parser.add_argument('-jar', '--jar', action='store_true', help='Build into JAR archive') + args = parser.parse_args() + + file_dir = os.path.dirname(os.path.realpath(__file__)); + os.chdir(file_dir + '/src/java') + + java_files = '' + for file in os.listdir('docbuilder'): + if file.endswith('.java'): + java_files += ' docbuilder/' + file + + if args.jar: + # TODO + print('JAR build is not supported yet :(') + else: + classes_dir = file_dir + '/build/classes' + headers_dir = file_dir + '/src/jni' + os.system('javac -d ' + classes_dir + (' -h ' + headers_dir if args.headers else '') + java_files) diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java new file mode 100644 index 0000000000..659b70fb5f --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java @@ -0,0 +1,13 @@ +package docbuilder; + +public class CDocBuilderContext { + public CDocBuilderContext() { + c_internal = 0; + } + + CDocBuilderContext(long internal) { + c_internal = internal; + } + + long c_internal = 0; +} diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java new file mode 100644 index 0000000000..c23482797e --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java @@ -0,0 +1,13 @@ +package docbuilder; + +public class CDocBuilderContextScope { + public CDocBuilderContextScope() { + c_internal = 0; + } + + CDocBuilderContextScope(long internal) { + c_internal = internal; + } + + long c_internal = 0; +} diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/FileTypes.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/FileTypes.java new file mode 100644 index 0000000000..9fac49f865 --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/FileTypes.java @@ -0,0 +1,5 @@ +package docbuilder; + +public class FileTypes { + public static final int K = 42; +} diff --git a/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java b/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java new file mode 100644 index 0000000000..1fb4fb32ff --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java @@ -0,0 +1,18 @@ +import docbuilder.CDocBuilder; + +public class Program { + public static void main(String[] args) { + test(); + + // Need to explicitly call System.gc() because finalizers might not automatically get called + // Note: Even System.gc() can not guarantee that finalizers will be actually called. Possible memory leaks! + System.gc(); + } + + public static void test() { + CDocBuilder.initialize("C:\\Users\\mixa_\\main\\core\\build\\lib\\win_64\\debug"); + CDocBuilder builder = new CDocBuilder(); + System.out.println(builder.getVersion()); + CDocBuilder.dispose(); + } +} diff --git a/DesktopEditor/doctrenderer/docbuilder.java/test/make_test.py b/DesktopEditor/doctrenderer/docbuilder.java/test/make_test.py new file mode 100644 index 0000000000..6a87cd1562 --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/test/make_test.py @@ -0,0 +1,23 @@ +import os +import argparse +import platform + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Build and run the test example for docbuilder Java wrapper') + parser.add_argument('-r', '--run', dest='builder_dir', metavar='', help='Run the test example with specified docbuilder directory') + args = parser.parse_args() + + file_dir = os.path.dirname(os.path.realpath(__file__)); + os.chdir(file_dir) + + java_file = 'Program.java' + + if not args.builder_dir: + os.system('javac -d build/classes -cp ../build/classes ' + java_file) + else: + os_name = platform.system().lower() + builder_dir = args.builder_dir + if 'windows' == os_name: + # to load dependent libraries + os.environ['PATH'] = builder_dir + os.pathsep + os.environ['PATH'] + os.system('java -cp ../build/classes' + os.pathsep + 'build/classes -Djava.library.path=\"' + builder_dir + '\" Program')