From 1fe588e4318ec6ecb027e30e7ee7dac053a90dfb Mon Sep 17 00:00:00 2001 From: trackme518 <50262885+trackme518@users.noreply.github.com> Date: Mon, 21 Sep 2026 16:19:17 +0200 Subject: [PATCH 1/2] Add universal (Apple Silicon + Intel) native build without Xcode Apple removed JavaNativeFoundation and JavaVM headers from the macOS SDK, so the Xcode project can no longer link the JNI library, and the shipped x86_64-only binaries fail to load on arm64 JVMs. - build_universal.sh: builds Syphon and libJSyphon.jnilib as universal (x86_64 + arm64) with the Command Line Tools only; statically links the vendored JavaNativeFoundation sources (apple/openjdk xcodejdk14-release, APSL 2.0) instead of the removed system framework; ad-hoc code signs. - Vendored JavaNativeFoundation sources under JSyphon/native_src/jnf. - Replace removed imports with in JNI sources. - Build Syphon with -DSYPHON_CORE_RESTORE: restores GL state (VAO etc.) around core-profile publishing. Apple's driver shares these bindings across share-group contexts, so without it Processing's shader validation failed with 'No vertex array object bound'. - tests/vao_test.m: regression test for the VAO binding restore. - Rebuilt jsyphon.jar and universal native_libs binaries. - Bump Syphon-Framework to f476167 (post-5.0 main): adds Apple Silicon 32BGRA pixel format fix and core-profile improvements. Tested on macOS 26 (arm64 and x86_64 via Rosetta) with Processing 4.5.6. --- .gitignore | 3 + JSyphon/jar/jsyphon.jar | Bin 4404 -> 4398 bytes JSyphon/native_libs/Syphon | Bin 183824 -> 393664 bytes JSyphon/native_libs/libJSyphon.jnilib | Bin 73264 -> 270544 bytes JSyphon/native_src/build_universal.sh | 100 ++++ JSyphon/native_src/jnf/JNFAssert.h | 108 ++++ JSyphon/native_src/jnf/JNFAssert.m | 69 +++ JSyphon/native_src/jnf/JNFAutoreleasePool.h | 56 ++ JSyphon/native_src/jnf/JNFAutoreleasePool.m | 102 ++++ JSyphon/native_src/jnf/JNFDate.h | 69 +++ JSyphon/native_src/jnf/JNFDate.m | 81 +++ JSyphon/native_src/jnf/JNFException.h | 85 ++++ JSyphon/native_src/jnf/JNFException.m | 288 +++++++++++ JSyphon/native_src/jnf/JNFJNI.h | 301 +++++++++++ JSyphon/native_src/jnf/JNFJNI.m | 444 ++++++++++++++++ JSyphon/native_src/jnf/JNFJObjectWrapper.h | 76 +++ JSyphon/native_src/jnf/JNFJObjectWrapper.m | 137 +++++ JSyphon/native_src/jnf/JNFNumber.h | 68 +++ JSyphon/native_src/jnf/JNFNumber.m | 99 ++++ JSyphon/native_src/jnf/JNFObject.h | 60 +++ JSyphon/native_src/jnf/JNFObject.m | 65 +++ JSyphon/native_src/jnf/JNFPath.h | 59 +++ JSyphon/native_src/jnf/JNFPath.m | 58 +++ JSyphon/native_src/jnf/JNFRunLoop.h | 57 +++ JSyphon/native_src/jnf/JNFRunLoop.m | 78 +++ JSyphon/native_src/jnf/JNFRunnable.h | 52 ++ JSyphon/native_src/jnf/JNFRunnable.m | 84 +++ JSyphon/native_src/jnf/JNFString.h | 75 +++ JSyphon/native_src/jnf/JNFString.m | 109 ++++ JSyphon/native_src/jnf/JNFThread.h | 84 +++ JSyphon/native_src/jnf/JNFThread.m | 174 +++++++ JSyphon/native_src/jnf/JNFTypeCoercion.h | 105 ++++ JSyphon/native_src/jnf/JNFTypeCoercion.m | 480 ++++++++++++++++++ .../jnf/JavaNativeFoundation-Info.plist | 26 + JSyphon/native_src/jnf/JavaNativeFoundation.h | 53 ++ .../native_src/jnf/Modules/module.modulemap | 5 + JSyphon/native_src/jnf/debug.h | 57 +++ JSyphon/native_src/jnf/debug.m | 107 ++++ JSyphon/native_src/jsyphon_JSyphonClient.m | 5 +- JSyphon/native_src/jsyphon_JSyphonImage.m | 5 +- JSyphon/native_src/jsyphon_JSyphonServer.m | 5 +- .../native_src/jsyphon_JSyphonServerList.m | 5 +- JSyphon/native_src/tests/vao_test.m | 41 ++ README.md | 10 + Syphon-Framework | 2 +- 45 files changed, 3934 insertions(+), 13 deletions(-) create mode 100755 JSyphon/native_src/build_universal.sh create mode 100644 JSyphon/native_src/jnf/JNFAssert.h create mode 100644 JSyphon/native_src/jnf/JNFAssert.m create mode 100644 JSyphon/native_src/jnf/JNFAutoreleasePool.h create mode 100644 JSyphon/native_src/jnf/JNFAutoreleasePool.m create mode 100644 JSyphon/native_src/jnf/JNFDate.h create mode 100644 JSyphon/native_src/jnf/JNFDate.m create mode 100644 JSyphon/native_src/jnf/JNFException.h create mode 100644 JSyphon/native_src/jnf/JNFException.m create mode 100644 JSyphon/native_src/jnf/JNFJNI.h create mode 100644 JSyphon/native_src/jnf/JNFJNI.m create mode 100644 JSyphon/native_src/jnf/JNFJObjectWrapper.h create mode 100644 JSyphon/native_src/jnf/JNFJObjectWrapper.m create mode 100644 JSyphon/native_src/jnf/JNFNumber.h create mode 100644 JSyphon/native_src/jnf/JNFNumber.m create mode 100644 JSyphon/native_src/jnf/JNFObject.h create mode 100644 JSyphon/native_src/jnf/JNFObject.m create mode 100644 JSyphon/native_src/jnf/JNFPath.h create mode 100644 JSyphon/native_src/jnf/JNFPath.m create mode 100644 JSyphon/native_src/jnf/JNFRunLoop.h create mode 100644 JSyphon/native_src/jnf/JNFRunLoop.m create mode 100644 JSyphon/native_src/jnf/JNFRunnable.h create mode 100644 JSyphon/native_src/jnf/JNFRunnable.m create mode 100644 JSyphon/native_src/jnf/JNFString.h create mode 100644 JSyphon/native_src/jnf/JNFString.m create mode 100644 JSyphon/native_src/jnf/JNFThread.h create mode 100644 JSyphon/native_src/jnf/JNFThread.m create mode 100644 JSyphon/native_src/jnf/JNFTypeCoercion.h create mode 100644 JSyphon/native_src/jnf/JNFTypeCoercion.m create mode 100644 JSyphon/native_src/jnf/JavaNativeFoundation-Info.plist create mode 100644 JSyphon/native_src/jnf/JavaNativeFoundation.h create mode 100644 JSyphon/native_src/jnf/Modules/module.modulemap create mode 100644 JSyphon/native_src/jnf/debug.h create mode 100644 JSyphon/native_src/jnf/debug.m create mode 100644 JSyphon/native_src/tests/vao_test.m diff --git a/.gitignore b/.gitignore index 4e06bcb..e438270 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ JSyphon/native_src/JSyphon.xcodeproj/project.xcworkspace/xcuserdata JSyphon/native_src/JSyphon.xcodeproj/xcuserdata +JSyphon/native_src/build_universal +JSyphon/native_src/tests/vao_test +JSyphon/native_src/tests/Syphon diff --git a/JSyphon/jar/jsyphon.jar b/JSyphon/jar/jsyphon.jar index 171141d14ade4c7c7890acb14447af619de4a4e6..87576587ab6548ef5aaa0e104646d38e4abc9d5c 100644 GIT binary patch delta 505 zcmdm@v`&dHz?+$ci-CcIfg!WOGe zlDS%qR%gEQeCcU;bc>BkO77>*m7cCEpU&D7vnPfD&8WjlEMOyFs`G;Aw#(M5_?a0P z7EhkfDmFQepJ%f@qa-s}$>taqGe!t&8fzw0jG5CND(1(f3T2gZ&t~KU8FoE$nZ*~N z`|=qlH*$+^Hs$4lsF>``XO8ND$?bfmV527=;FB_657d)YTv?EjpQj(-&B!FejPN^9 z3J!STECGhMj#noO^2&@k=pzuuRTkkL?)M3-*0|^2ERf>Sd delta 467 zcmZ3dv_*+8z?+$ci-CcIfq{2dQP@O2bzUAIy=fia*$4&(hLnj;t~R}uJLhx<33~?x zm(0~_v^w*Z=gXNbyu2bNF_VjpxVsv&fuUU9VX`rK+T>dAjOo)J-MD+S^(W`lOF=*ICv+^@k&pY M5ENiD<^x#-07j>JoB#j- diff --git a/JSyphon/native_libs/Syphon b/JSyphon/native_libs/Syphon index 7cf6833fb067fa092adc0f37bcac7e3a31b2a38f..ad5fd542cf0d3edbc95220d6cfc9c962d240ba22 100755 GIT binary patch literal 393664 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 bWC_R;kR>2XK$d_k0a*gF1Y`-gA%Xt^m?urQ diff --git a/JSyphon/native_libs/libJSyphon.jnilib b/JSyphon/native_libs/libJSyphon.jnilib index 062c85fd8d417751790f00377ccce1c47bcc2dca..e901735889cb79a586242d7e516548650a506586 100755 GIT binary patch literal 270544 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\$L++@k_SiHuaGsBtLP!Gw_>@ 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

#>dgGgg>_h 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�Fnf4rj=_-myxy*CSS=%5USD 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 LAf$noHSqrcMIoyn diff --git a/JSyphon/native_src/build_universal.sh b/JSyphon/native_src/build_universal.sh new file mode 100755 index 0000000..78f6c52 --- /dev/null +++ b/JSyphon/native_src/build_universal.sh @@ -0,0 +1,100 @@ +#!/bin/bash -e +# +# Builds universal (x86_64 + arm64) versions of the Syphon framework binary +# and the JSyphon JNI library, without requiring Xcode (Command Line Tools +# plus a JDK for the JNI headers is enough). +# +# JavaNativeFoundation is no longer shipped with the macOS SDK, so the +# sources vendored under native_src/jnf (from apple/openjdk, +# xcodejdk14-release branch, APSL 2.0) are compiled statically into +# libJSyphon.jnilib. +# +# Requires: macOS Command Line Tools, a JDK (JAVA_HOME or Homebrew openjdk). +# +# Usage: ./build_universal.sh [output-dir] (default: ../native_libs) + +set -o pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +JSYPHON_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +JAVA_DIR="$(cd "$JSYPHON_DIR/.." && pwd)" +SYPHON_FW_DIR="$JAVA_DIR/Syphon-Framework" +SHARED_DIR="$JAVA_DIR/Shared" +JNF_DIR="$SCRIPT_DIR/jnf" +BUILD_DIR="$SCRIPT_DIR/build_universal" +OUT_DIR="$(cd "${1:-$JSYPHON_DIR/native_libs}" && pwd)" + +if [ ! -f "${JAVA_HOME:-}/include/jni.h" ]; then + if [ -d /opt/homebrew/opt/openjdk@17/include ]; then + JAVA_HOME=/opt/homebrew/opt/openjdk@17 + else + JAVA_HOME="$(dirname "$(dirname "$(command -v javac)")")" + fi +fi +if [ ! -f "$JAVA_HOME/include/jni.h" ]; then + echo "error: jni.h not found under JAVA_HOME=$JAVA_HOME (set JAVA_HOME to a full JDK)" >&2 + exit 1 +fi + +ARCHS="x86_64 arm64" +DEPLOY_TARGET_x86_64=10.13 +DEPLOY_TARGET_arm64=11.0 + +OBJCFLAGS="-fblocks -Wno-deprecated-declarations -Wno-unused-function -g0 -Os" + +rm -rf "$BUILD_DIR" +mkdir -p "$BUILD_DIR/include/JavaNativeFoundation" "$BUILD_DIR/include/Syphon" + +cp "$JNF_DIR"/*.h "$BUILD_DIR/include/JavaNativeFoundation/" +cp "$SYPHON_FW_DIR"/*.h "$BUILD_DIR/include/Syphon/" + +grep -v '^[[:space:]]*//' "$SYPHON_FW_DIR/Exported_Symbols.exp" | grep -v '^[[:space:]]*$' > "$BUILD_DIR/Exported_Symbols.exp" + +INCLUDES=(-I "$BUILD_DIR/include" -I "$SYPHON_FW_DIR" -I "$SHARED_DIR" -I "$SCRIPT_DIR" -I "$JAVA_HOME/include" -I "$JAVA_HOME/include/darwin") + +SYPHON_SOURCES=("$SYPHON_FW_DIR"/*.m "$SYPHON_FW_DIR"/*.c) +JSYPHON_SOURCES=("$SCRIPT_DIR"/jsyphon_JSyphon*.m "$JNF_DIR"/*.m "$SHARED_DIR/SyphonNameboundClient.m") + +for ARCH in $ARCHS; do + case "$ARCH" in + x86_64) MIN=$DEPLOY_TARGET_x86_64 ;; + arm64) MIN=$DEPLOY_TARGET_arm64 ;; + esac + COMMON=(-arch "$ARCH" -mmacosx-version-min="$MIN" -fPIC $OBJCFLAGS "${INCLUDES[@]}") + + echo "==> Building Syphon ($ARCH)" + clang -dynamiclib -o "$BUILD_DIR/Syphon-$ARCH" \ + "${COMMON[@]}" -fobjc-arc \ + -DSYPHON_CORE_RESTORE \ + -include "$SYPHON_FW_DIR/Syphon_Prefix.pch" \ + "${SYPHON_SOURCES[@]}" \ + -install_name "@loader_path/Syphon" \ + -current_version 1.0.0 -compatibility_version 1.0.0 \ + -Wl,-exported_symbols_list,"$BUILD_DIR/Exported_Symbols.exp" \ + -framework Cocoa -framework IOSurface -framework OpenGL -framework CoreVideo -framework Metal + + echo "==> Building libJSyphon.jnilib ($ARCH)" + clang -dynamiclib -o "$BUILD_DIR/libJSyphon.jnilib-$ARCH" \ + "${COMMON[@]}" -fno-objc-arc \ + "${JSYPHON_SOURCES[@]}" \ + -install_name "@rpath/libJSyphon.jnilib" \ + -current_version 1.0.0 -compatibility_version 1.0.0 \ + "$BUILD_DIR/Syphon-$ARCH" \ + -Wl,-undefined,dynamic_lookup \ + -framework Cocoa -framework OpenGL -framework CoreData +done + +echo "==> Creating universal binaries" +lipo -create -output "$BUILD_DIR/Syphon" "$BUILD_DIR/Syphon-x86_64" "$BUILD_DIR/Syphon-arm64" +lipo -create -output "$BUILD_DIR/libJSyphon.jnilib" "$BUILD_DIR/libJSyphon.jnilib-x86_64" "$BUILD_DIR/libJSyphon.jnilib-arm64" + +echo "==> Ad-hoc code signing" +codesign --force --sign - "$BUILD_DIR/Syphon" +codesign --force --sign - "$BUILD_DIR/libJSyphon.jnilib" + +echo "==> Installing to $OUT_DIR" +cp "$BUILD_DIR/Syphon" "$OUT_DIR/Syphon" +cp "$BUILD_DIR/libJSyphon.jnilib" "$OUT_DIR/libJSyphon.jnilib" + +lipo -info "$OUT_DIR/Syphon" "$OUT_DIR/libJSyphon.jnilib" +echo "Done." diff --git a/JSyphon/native_src/jnf/JNFAssert.h b/JSyphon/native_src/jnf/JNFAssert.h new file mode 100644 index 0000000..9499c3f --- /dev/null +++ b/JSyphon/native_src/jnf/JNFAssert.h @@ -0,0 +1,108 @@ +#ifndef JNFASSERT_H +#define JNFASSERT_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Assertions used by the JNF_COCOA_ENTER()/JNF_COCOA_EXIT() and class + * caching macros. When building debug builds, improper use of the caching + * macros will trigger warnings output to the console. + */ + +#import + +#ifdef DEBUG +#define JAVA_ASSERTIONS_ON +#endif /* DEBUG */ + +// Use the WARN macro to send a message to stderr in the +// debug build. It gets removed from the optimized build +// during preprocessing. +#ifdef DEBUG +#define JNF_WARN JNFDebugWarning +#else +#define JNF_WARN if (0) JNFDebugWarning +#endif /* DEBUG */ + +__BEGIN_DECLS + +JNF_EXPORT extern void JNFDebugWarning(const char *fmt, ...); + +JNF_EXPORT extern void JNFAssertionFailure(const char *file, int line, const char *condition, const char *msg); + +#ifdef JAVA_ASSERTIONS_ON + +#define JNF_ASSERT_FAILURE(condition, msg) \ + JNFAssertionFailure(__FILE__, __LINE__, condition, msg) \ + + +#define JNF_ASSERT_MSG(condition, msg) \ +do { \ + if (!(condition)) { \ + JNF_ASSERT_FAILURE(#condition, msg); \ + } \ +} while(0) \ + + +#define JNF_ASSERT_COND(condition) \ + JNF_ASSERT_MSG(condition, NULL) \ + + +#define JNF_EXCEPTION_WARN(env, msg) \ +do { \ + (*(env))->ExceptionDescribe(env); \ + JNF_ASSERT_FAILURE("Java exception thrown", msg); \ +} while (0) \ + + +#define JNF_ASSERT_NO_EXCEPTION_MSG(env, msg) \ +if ((*(env))->ExceptionOccurred(env)) { \ + JNF_EXCEPTION_WARN(env, msg); \ +} \ + + +#define JNF_ASSERT_NO_EXCEPTION(env) \ + JNF_ASSERT_NO_EXCEPTION_MSG(env, NULL) \ + +#else + +#define JNF_ASSERT_COND(condition) +#define JNF_ASSERT_MSG(condition, msg) +#define JNF_EXCEPTION_WARN(env, msg) +#define JNF_ASSERT_NO_EXCEPTION(env) +#define JNF_ASSERT_NO_EXCEPTION_MSG(env, msg) + +#endif /* JAVA_ASSERTIONS_ON */ + +JNF_EXPORT extern void JNFDumpJavaStack(JNIEnv *env); + +__END_DECLS + +#endif /* JNFASSERT_H */ diff --git a/JSyphon/native_src/jnf/JNFAssert.m b/JSyphon/native_src/jnf/JNFAssert.m new file mode 100644 index 0000000..fceb8f8 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFAssert.m @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFJNI.h" +#import "JNFAssert.h" + +#import "debug.h" + +static void JNFDebugMessageV(const char *fmt, va_list args) { + // Prints a message and breaks into debugger. + fprintf(stderr, "JavaNativeFoundation: "); + vfprintf(stderr, fmt, args); + fprintf(stderr, "\n"); +} + +static void JNFDebugMessage(const char *fmt, ...) { + // Takes printf args and then calls DebugBreak + va_list args; + va_start(args, fmt); + JNFDebugMessageV(fmt, args); + va_end(args); +} + +void JNFDebugWarning(const char *fmt, ...) { + // Takes printf args and then calls DebugBreak + va_list args; + va_start(args, fmt); + JNFDebugMessageV(fmt, args); + va_end(args); +} + +void JNFAssertionFailure(const char *file, int line, const char *condition, const char *msg) { + JNFDebugMessage("Assertion failure: %s", condition); + if (msg) JNFDebugMessage(msg); + JNFDebugMessage("File %s; Line %d", file, line); +} + +void JNFDumpJavaStack(JNIEnv *env) { + static JNF_CLASS_CACHE(jc_Thread, "java/lang/Thread"); + static JNF_STATIC_MEMBER_CACHE(jsm_Thread_dumpStack, jc_Thread, "dumpStack", "()V"); + JNFCallVoidMethod(env, jc_Thread.cls, jsm_Thread_dumpStack); +} diff --git a/JSyphon/native_src/jnf/JNFAutoreleasePool.h b/JSyphon/native_src/jnf/JNFAutoreleasePool.h new file mode 100644 index 0000000..d0e9709 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFAutoreleasePool.h @@ -0,0 +1,56 @@ +#ifndef JNFAUTORELEASEPOOL_H +#define JNFAUTORELEASEPOOL_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Utility class used by the JNF_COCOA_ENTER()/JNF_COCOA_EXIT() macros + * from JNFJNI.h. Do not use this class or releated functions directly. + */ + +#import + +#import + +__BEGIN_DECLS + +typedef void JNFAutoreleasePoolToken; + +// JNFNativeMethodEnter - called on entry to each native method by the +// JNF_COCOA_ENTER(env) macro in JNFJNI.h +JNF_EXPORT extern JNFAutoreleasePoolToken *JNFNativeMethodEnter(void); + +// JNFNativeMethodExit - called on exit from each native method by the +// JNF_COCOA_EXIT(env) macro in JNFJNI.h +JNF_EXPORT extern void JNFNativeMethodExit(JNFAutoreleasePoolToken *token); + +__END_DECLS + +#endif /* JNFAUTORELEASEPOOL_H */ diff --git a/JSyphon/native_src/jnf/JNFAutoreleasePool.m b/JSyphon/native_src/jnf/JNFAutoreleasePool.m new file mode 100644 index 0000000..50d513b --- /dev/null +++ b/JSyphon/native_src/jnf/JNFAutoreleasePool.m @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * The JNFAutoreleasePool manages setting up and tearing down autorelease + * pools for Java calls into the Cocoa frameworks. + * + * The external entry point into this machinery is JNFMethodEnter() and JNFMethodExit(). + */ + +#import "JNFAutoreleasePool.h" + +#import + +// These are vended by the Objective-C runtime, but they are unfortunately +// not available as API in the macOS SDK. We are following suit with swift +// and clang in declaring them inline here. They canot be removed or changed +// in the OS without major bincompat ramifications. +// +// These were added in macOS 10.7. +void * _Nonnull objc_autoreleasePoolPush(void); +void objc_autoreleasePoolPop(void * _Nonnull context); + +#if TIMED +static int64_t elapsedTime = 0; +#endif + +#pragma mark - +#pragma mark External API + +// JNFNativeMethodEnter - called on entry to each native method +// +// It sets up an autorelease pool, and will return a token if +// JNFNativeMethodExit should be called. It attempts to consider +// how much time has elapsed since the last autorelease pop. + +JNFAutoreleasePoolToken *JNFNativeMethodEnter() { +#if TIMED + int64_t start = mach_absolute_time(); +#endif + + JNFAutoreleasePoolToken * const tokenToReturn = objc_autoreleasePoolPush(); + +#if TIMED + elapsedTime += (mach_absolute_time() - start); +#endif + + return tokenToReturn; +} + + +// JNFNativeMethodExit - called on exit from native methods +// +// This method is only called on exit from the first +// native method to appear in the execution stack. +// This function does not need to be called on exit +// from the inner native methods (as an optimization). +// JNFNativeMethodEnter sets the token to non-nil if +// JNFNativeMethodExit needs to be called on exit. + +void JNFNativeMethodExit(JNFAutoreleasePoolToken *token) { + +#if TIMED + int64_t start = mach_absolute_time(); +#endif + + objc_autoreleasePoolPop(token); + +#if TIMED + elapsedTime += (mach_absolute_time() - start); + + NSLog(@"elapsedTime: %llu", elapsedTime); + // elapsedTime = 0; +#endif +} diff --git a/JSyphon/native_src/jnf/JNFDate.h b/JSyphon/native_src/jnf/JNFDate.h new file mode 100644 index 0000000..0a3620a --- /dev/null +++ b/JSyphon/native_src/jnf/JNFDate.h @@ -0,0 +1,69 @@ +#ifndef JNFDATE_H +#define JNFDATE_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Functions to convert between date container classes. + */ + +#import + +#import + +__BEGIN_DECLS + +/* + * Converts java.util.Calendar and java.util.Date to an NSDate + * NOTE: Return value is auto-released. + */ +JNF_EXPORT extern NSDate *JNFJavaToNSDate(JNIEnv *env, jobject date); + +/* + * Converts an NSDate to a java.util.Calendar + * NOTE: This returns a JNI local ref. Any code that calls this should call DeleteLocalRef when done with the return value. + */ +JNF_EXPORT extern jobject JNFNSToJavaCalendar(JNIEnv *env, NSDate *date); + +/* + * Converts a millisecond time interval since the Java Jan 1, 1970 epoch into an + * NSTimeInterval since Mac OS X's Jan 1, 2001 epoch. + */ +JNF_EXPORT extern NSTimeInterval JNFJavaMillisToNSTimeInterval(jlong javaMillisSince1970); + +/* + * Converts an NSTimeInterval since the Mac OS X Jan 1, 2001 epoch into a + * Java millisecond time interval since Java's Jan 1, 1970 epoch. + */ +JNF_EXPORT extern jlong JNFNSTimeIntervalToJavaMillis(NSTimeInterval intervalSince2001); + +__END_DECLS + +#endif /* JNFDATE_H */ diff --git a/JSyphon/native_src/jnf/JNFDate.m b/JSyphon/native_src/jnf/JNFDate.m new file mode 100644 index 0000000..f3b4042 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFDate.m @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFDate.h" +#import "JNFJNI.h" + + +static JNF_CLASS_CACHE(sjc_Calendar, "java/util/Calendar"); +static JNF_CLASS_CACHE(sjc_Date, "java/util/Date"); + +JNF_EXPORT extern NSTimeInterval JNFJavaMillisToNSTimeInterval(jlong javaMillisSince1970) +{ + return (NSTimeInterval)(((double)javaMillisSince1970 / 1000.0) - NSTimeIntervalSince1970); +} + +JNF_EXPORT extern jlong JNFNSTimeIntervalToJavaMillis(NSTimeInterval intervalSince2001) +{ + return (jlong)((intervalSince2001 + NSTimeIntervalSince1970) * 1000.0); +} + +JNF_EXPORT extern NSDate *JNFJavaToNSDate(JNIEnv *env, jobject date) +{ + if (date == NULL) return nil; + + jlong millis = 0; + if (JNFIsInstanceOf(env, date, &sjc_Calendar)) { + static JNF_MEMBER_CACHE(jm_getTimeInMillis, sjc_Calendar, "getTimeInMillis", "()J"); + millis = JNFCallLongMethod(env, date, jm_getTimeInMillis); + } else if (JNFIsInstanceOf(env, date, &sjc_Date)) { + static JNF_MEMBER_CACHE(jm_getTime, sjc_Date, "getTime", "()J"); + millis = JNFCallLongMethod(env, date, jm_getTime); + } + + if (millis == 0) { + return nil; + } + + return [NSDate dateWithTimeIntervalSince1970:((double)millis / 1000.0)]; +} + +JNF_EXPORT extern jobject JNFNSToJavaCalendar(JNIEnv *env, NSDate *date) +{ + if (date == nil) return NULL; + + const jlong millis = (jlong)([date timeIntervalSince1970] * 1000.0); + + static JNF_STATIC_MEMBER_CACHE(jsm_getInstance, sjc_Calendar, "getInstance", "()Ljava/util/Calendar;"); + jobject calendar = JNFCallStaticObjectMethod(env, jsm_getInstance); + + static JNF_MEMBER_CACHE(jm_setTimeInMillis, sjc_Calendar, "setTimeInMillis", "(J)V"); + JNFCallVoidMethod(env, calendar, jm_setTimeInMillis, millis); + + return calendar; +} diff --git a/JSyphon/native_src/jnf/JNFException.h b/JSyphon/native_src/jnf/JNFException.h new file mode 100644 index 0000000..f314587 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFException.h @@ -0,0 +1,85 @@ +#ifndef JNFEXCEPTION_H +#define JNFEXCEPTION_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * JNFExceptions handle bridging exceptions between Foundation and Java. NSExceptions are + * caught by the JNF_COCOA_ENTER()/JNF_COCOA_EXIT() macros, and transformed and thrown as + * Java exceptions at the JNI boundry. The macros in JNFJNI.h also check for Java exceptions + * and rethrow them as NSExceptions until they hit an @try/@catch block, or the + * JNF_COCOA_ENTER()/JNF_COCOA_EXIT() macros. + */ + +#import + +#import + +__BEGIN_DECLS + +// Some exception class names. +// These strings contain the full class name of each Java exception, so +// they are handy to use when you need to throw an exception. +JNF_EXPORT extern const char *kOutOfMemoryError; +JNF_EXPORT extern const char *kClassNotFoundException; +JNF_EXPORT extern const char *kNullPointerException; +JNF_EXPORT extern const char *kIllegalAccessException; +JNF_EXPORT extern const char *kIllegalArgumentException; +JNF_EXPORT extern const char *kNoSuchFieldException; +JNF_EXPORT extern const char *kNoSuchMethodException; +JNF_EXPORT extern const char *kRuntimeException; + +// JNFException - a subclass of NSException that wraps a Java exception +// +// When a java exception is thrown out to a native method, use +raiseUnnamedException: +// to turn it into an NSException. When returning out of a native method in +// which an NSException has been raised, use the -raiseToJava: method to turn +// it back into a Java exception and "throw" it, in the Java sense. + +JNF_EXPORT +@interface JNFException : NSException + ++ (void)raiseUnnamedException:(JNIEnv *)env; ++ (void)raise:(JNIEnv *)env throwable:(jthrowable)throwable; ++ (void)raise:(JNIEnv *)env as:(const char *)javaExceptionType reason:(const char *)reasonMsg; + +- init:(JNIEnv *)env throwable:(jthrowable)throwable; +- init:(JNIEnv *)env as:(const char *)javaExceptionType reason:(const char *)reasonMsg; + ++ (void)throwToJava:(JNIEnv *)env exception:(NSException *)exception; ++ (void)throwToJava:(JNIEnv *)env exception:(NSException *)exception as:(const char *)javaExceptionType; + +- (void)raiseToJava:(JNIEnv *)env; + +@end + +__END_DECLS + +#endif /* JNFEXCEPTION_H */ diff --git a/JSyphon/native_src/jnf/JNFException.m b/JSyphon/native_src/jnf/JNFException.m new file mode 100644 index 0000000..28a75dd --- /dev/null +++ b/JSyphon/native_src/jnf/JNFException.m @@ -0,0 +1,288 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFException.h" + +#import +#import + +#import "JNFObject.h" +#import "JNFString.h" +#import "JNFAssert.h" +#import "JNFThread.h" +#import "debug.h" + + +#define JAVA_LANG "java/lang/" +const char* kOutOfMemoryError = JAVA_LANG "OutOfMemoryError"; +const char* kClassNotFoundException = JAVA_LANG "ClassNotFoundException"; +const char* kNullPointerException = JAVA_LANG "NullPointerException"; +const char* kIllegalAccessException = JAVA_LANG "IllegalAccessException"; +const char* kIllegalArgumentException = JAVA_LANG "IllegalArgumentException"; +const char* kNoSuchFieldException = JAVA_LANG "NoSuchFieldException"; +const char* kNoSuchMethodException = JAVA_LANG "NoSuchMethodException"; +const char* kRuntimeException = JAVA_LANG "RuntimeException"; + +@interface JNFException () +@property (readwrite, nonatomic, assign) jthrowable javaException; +@end + +@interface JNFException(_JNFPrivateExceptionLifecycle) + +- (void) _setThrowable:(jthrowable)throwable withEnv:(JNIEnv *)env; +- (void) _clearThrowableWithEnv:(JNIEnv *)env; +- (void) _setThrowable:(jthrowable)throwable withNonNullEnv:(JNIEnv *)env; +- (void) _clearThrowableWithNonNullEnv:(JNIEnv *)env; + +@end + + +@implementation JNFException + +- initUnnamed:(JNIEnv *)env { + JNF_ASSERT_COND(env); + jthrowable throwable = (*env)->ExceptionOccurred(env); + if (throwable) return [self init:env throwable:throwable]; + + return [self initWithName:@"JavaNativeException" reason:@"See Java exception" userInfo:nil]; +} + ++ (void)raiseUnnamedException:(JNIEnv *)env { + JNF_ASSERT_COND(env); + [[[[JNFException alloc] initUnnamed:env] autorelease] raise]; +} + ++ (void)raise:(JNIEnv *)env throwable:(jthrowable)throwable { + JNF_ASSERT_COND(env); + [[[[JNFException alloc] init:env throwable:throwable] autorelease] raise]; +} + ++ (void)raise:(JNIEnv *)env as:(const char *)javaExceptionType reason:(const char *)reasonMsg { + JNF_ASSERT_COND(env); + [[[[JNFException alloc] init:env as:javaExceptionType reason:reasonMsg] autorelease] raise]; +} + +- init:(JNIEnv *)env throwable:(jthrowable)throwable { + [self _setThrowable:throwable withEnv:env]; + (*env)->ExceptionClear(env); // The exception will be rethrown in -raiseToJava + + static jclass jc_Throwable = NULL; + if (jc_Throwable == NULL) { + jc_Throwable = (*env)->FindClass(env, "java/lang/Throwable"); + jthrowable unexpected = (*env)->ExceptionOccurred(env); + if (unexpected) { + (*env)->ExceptionClear(env); + return [self initWithName:@"JavaNativeException" reason:@"Internal JNF Error: could not find Throwable class" userInfo:nil]; + } + } + + static jmethodID jm_Throwable_getMessage = NULL; + if (jm_Throwable_getMessage == NULL && jc_Throwable != NULL) { + jm_Throwable_getMessage = (*env)->GetMethodID(env, jc_Throwable, "toString", "()Ljava/lang/String;"); + jthrowable unexpected = (*env)->ExceptionOccurred(env); + if (unexpected) { + (*env)->ExceptionClear(env); + return [self initWithName:@"JavaNativeException" reason:@"Internal JNF Error: could not find Throwable.toString() method" userInfo:nil]; + } + } + + if (jm_Throwable_getMessage == NULL) { + return [self initWithName:@"JavaNativeException" reason:@"Internal JNF Error: exception occurred, unable to determine cause" userInfo:nil]; + } + + jobject msg = (*env)->CallObjectMethod(env, throwable, jm_Throwable_getMessage); + jthrowable unexpected = (*env)->ExceptionOccurred(env); + if (unexpected) { + (*env)->ExceptionClear(env); + return [self initWithName:@"JavaNativeException" reason:@"Internal JNF Error: failed calling Throwable.toString()" userInfo:nil]; + } + + NSString *reason = JNFJavaToNSString(env, msg); + (*env)->DeleteLocalRef(env, msg); + return [self initWithName:@"JavaNativeException" reason:reason userInfo:nil]; +} + +- init:(JNIEnv *)env as:(const char *)javaExceptionType reason:(const char *)reasonMsg { + jclass exceptionClass = NULL; + char *buf = NULL; + + JNF_ASSERT_COND(env); + if (javaExceptionType != NULL) { + exceptionClass = (*env)->FindClass(env, javaExceptionType); + } + + if (exceptionClass == NULL) { + // Try to throw an AWTError exception + static jthrowable panicExceptionClass = NULL; + const char* panicExceptionName = kRuntimeException; + if (panicExceptionClass == NULL) { + jclass cls = (*env)->FindClass(env, panicExceptionName); + if (cls != NULL) { + panicExceptionClass = (*env)->NewGlobalRef(env, cls); + } + } + + exceptionClass = panicExceptionClass; + if (javaExceptionType == NULL) { + reasonMsg = "Missing Java exception class name while trying to throw a new Java exception"; + } else { + // Quick and dirty thread-safe message buffer. + buf = calloc(1, 512); + if (buf != NULL) { + sprintf(buf, "Unknown throwable class: %s.80", javaExceptionType); + reasonMsg = buf; + } else { + reasonMsg = "Unknown throwable class, out of memory!"; + } + } + javaExceptionType = panicExceptionName; + } + + // Can't throw squat if there's no class to throw + if (exceptionClass != NULL) { + (*env)->ThrowNew(env, exceptionClass, reasonMsg); + jthrowable ex = (*env)->ExceptionOccurred(env); + if (ex) { + (*env)->ExceptionClear(env); // Exception will be rethrown in -raiseToJava + } + [self _setThrowable:ex withEnv:env]; + } + + if (reasonMsg == NULL) reasonMsg = "unknown"; + + @try { + return [self initWithName:[NSString stringWithUTF8String:javaExceptionType] + reason:[NSString stringWithUTF8String:reasonMsg] + userInfo:nil]; + } @finally { + if (buf != NULL) free(buf); + } + + return self; +} + ++ (void)throwToJava:(JNIEnv *)env exception:(NSException *)exception { + [self throwToJava:env exception:exception as:kRuntimeException]; +} + ++ (void)throwToJava:(JNIEnv *)env exception:(NSException *)exception as:(const char *)javaExceptionType{ + if (![exception isKindOfClass:[JNFException class]]) { + exception = [[JNFException alloc] init:env as:javaExceptionType reason:[[NSString stringWithFormat:@"Non-Java exception raised, not handled! (Original problem: %@)", [exception reason]] UTF8String]]; + [exception autorelease]; + JNF_WARN("NSException not handled by native method. Passing to Java."); + } + + [(JNFException *)exception raiseToJava:env]; +} + +- (void)raiseToJava:(JNIEnv *)env { + jthrowable const javaException = self.javaException; + + JNF_ASSERT_COND(env); + JNF_ASSERT_COND(javaException != NULL); + (*env)->Throw(env, javaException); +} + +- (NSString *)description { + jthrowable const javaException = self.javaException; + NSString *desc = [super description]; + if (!javaException) return desc; + + @try { + JNFThreadContext ctx = JNFThreadDetachImmediately; + JNIEnv *env = JNFObtainEnv(&ctx); + if (!env) { + NSLog(@"JavaNativeFoundation: NULL JNIEnv error occurred obtaining Java exception description"); + return desc; + } + (*env)->ExceptionClear(env); + NSString *stackTrace = JNFGetStackTraceAsNSString(env, javaException); + JNFReleaseEnv(env, &ctx); + + return stackTrace; + } @catch (NSException *e) { + // we clearly blew up trying to print our own exception, so we should + // not try to do that again, even if it looks helpful - its a trap! + NSLog(@"JavaNativeFoundation error occurred obtaining Java exception description"); + } + return desc; +} + +- (void) _setThrowable:(jthrowable)throwable withEnv:(JNIEnv *)env { + if (env) { + [self _clearThrowableWithNonNullEnv:env]; + [self _setThrowable:throwable withNonNullEnv:env]; + return; + } + + JNFThreadContext threadContext = JNFThreadDetachImmediately; + env = JNFObtainEnv(&threadContext); + if (env == NULL) return; + + [self _clearThrowableWithNonNullEnv:env]; + [self _setThrowable:throwable withEnv:env]; + + JNFReleaseEnv(env, &threadContext); +} + +- (void) _clearThrowableWithEnv:(JNIEnv *)env { + if (env) { + [self _clearThrowableWithNonNullEnv:env]; + return; + } + + JNFThreadContext threadContext = JNFThreadDetachImmediately; + env = JNFObtainEnv(&threadContext); + if (env == NULL) return; // leak? + + [self _clearThrowableWithNonNullEnv:env]; + + JNFReleaseEnv(env, &threadContext); +} + +- (void) _setThrowable:(jthrowable)throwable withNonNullEnv:(JNIEnv *)env { + if (!throwable) return; + self.javaException = (*env)->NewGlobalRef(env, throwable); +} + +// delete and clear +- (void) _clearThrowableWithNonNullEnv:(JNIEnv *)env { + jthrowable const javaException = self.javaException; + if (!javaException) return; + self.javaException = NULL; + (*env)->DeleteGlobalRef(env, javaException); +} + +- (void) dealloc { + [self _clearThrowableWithEnv:NULL]; + [super dealloc]; +} + +@end diff --git a/JSyphon/native_src/jnf/JNFJNI.h b/JSyphon/native_src/jnf/JNFJNI.h new file mode 100644 index 0000000..d5a0bca --- /dev/null +++ b/JSyphon/native_src/jnf/JNFJNI.h @@ -0,0 +1,301 @@ +#ifndef JNFJNI_H +#define JNFJNI_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * The basic building blocks of writing Java JNI code that interacts with Objective-C. + * + * All JNI functions should call JNF_COCOA_ENTER()/JNF_COCOA_EXIT() to properly + * catch thrown NSExceptions and periodically flush the autorelease pool for the + * current thread. JNF_COCOA_DURING()/JNF_COCOA_HANDLE() should only be used when + * AppKit is known to not be initialized yet. + * + * JNF_CLASS_CACHE()/JNF_MEMBER_CACHE()/JNF_STATIC_MEMBER_CACHE()/JNF_CTOR_CACHE() + * all cache references to Java classes, methods, and variables for use by the + * GET/SET/CALL functions. These functions check for Java exceptions, immediately + * re-throwing them as JNFExceptions, and are simpler than their pure JNI equivalents. + */ + +#import +#import +#import + +#define JNF_EXPORT __attribute__ ((visibility ("default"))) API_UNAVAILABLE(ios) + +#import +#import + +__BEGIN_DECLS + +// from jlong.h +// All pointers in and out of JNI functions should be expressed as jlongs +// to accomodate for both 32-bit and 64-bit pointer sizes +#ifndef jlong_to_ptr +#define jlong_to_ptr(a) ((void *)(uintptr_t)(a)) +#endif + +#ifndef ptr_to_jlong +#define ptr_to_jlong(a) ((jlong)(uintptr_t)(a)) +#endif + +// JNF_COCOA_DURING - Outermost exception scope for a JNI native method +// +// Use this macro only if you don't want any autorelease pool set or +// other JNFThreadContext setup (ie, if the AppKit isn't running +// yet). Usually, you want to use JNF_COCOA_ENTER & JNF_COCOA_EXIT +#define JNF_COCOA_DURING(env) \ +@try { + + +// JNF_COCOA_HANDLE - Close of JNF_COCOA_DURING +// +// Use this macro to match an JNF_COCOA_DURING +// This macro ensures that no NSException is thrown into +// the VM. It turns NSExceptions into Java exceptions. +#define JNF_COCOA_HANDLE(env) \ +} @catch(NSException *localException) { \ + [JNFException throwToJava:env exception:localException]; \ +} \ + + +// JNF_COCOA_ENTER - Place at the beginning of every JNI method +// +// Sets up an exception handler and an autorelease pool if one is +// not already setup. +// +// Note: if the native method executes before AppKit is +// initialized, use JNF_COCOA_DURING. +#define JNF_COCOA_ENTER(env) \ +{ \ + JNFAutoreleasePoolToken* _token = JNFNativeMethodEnter(); \ + JNF_COCOA_DURING(env) + + +// JNF_COCOA_EXIT - Place at the end of every JNI method +// +// Catches NSExceptions and re-throws them as Java exceptions. +// Use this macro to match JNF_COCOA_ENTER. +#define JNF_COCOA_EXIT(env) \ + JNF_COCOA_HANDLE(env) \ + @finally { \ + if (_token) JNFNativeMethodExit(_token); \ + } \ +} + +// JNF_CHECK_AND_RETHROW_EXCEPTION - rethrows exceptions from Java +// +// Takes an exception thrown from Java, and transforms it into an +// NSException. The NSException should bubble up to the upper-most +// JNF_COCOA_ENTER/JNF_COCOA_EXIT pair, and then be re-thrown as +// a Java exception when returning from JNI. This check should be +// done after raw JNI operations which could cause a Java exception +// to be be thrown. The JNF{Get/Set/Call} macros below do this +// check automatically. +#define JNF_CHECK_AND_RETHROW_EXCEPTION(env) \ +{ \ + jthrowable _exception = (*env)->ExceptionOccurred(env); \ + if (_exception) [JNFException raise:env throwable:_exception]; \ +} + + +// Use JNF_CLASS_CACHE, JNF_MEMBER_CACHE, JNF_STATIC_MEMBER_CACHE +// and JNF_CTOR_CACHE as convenient ways to create +// JNFClassInfo and JNFMemberInfo records that can +// be passed to the utility functions that follow. + +// JNF_CLASS_CACHE - Create a JNFClassInfo struct +// +// Use this macro to define a JNFClassInfo struct. +// For example: +// JNF_CLASS_CACHE(jc_java_awt_Font, "java/awt/Font"); +// defines the symbol jc_java_awt_Font to point to the +// appropriately initialized JNFClassInfo struct. +// The "jc_" prefix is short for "java class." +#define JNF_CLASS_CACHE(cache_symbol, name) \ + JNFClassInfo cache_symbol = {name, NULL} + +// JNF_MEMBER_CACHE - Create a JNFMemberInfo struct +// +// This macro creates and initializes a JNFMemberInfo +// struct, and defines a pointer to it. Example: +// JNF_MEMBER_CACHE(jm_Font_isBold, jc_java_awt_Font, "isBold", "Z"); +// This defines the symbol jm_Font_isBold to point to a +// JNFMemberInfo struct that represents the isBold method +// of the class java.awt.Font. Use this macro for both +// fields and methods. +#define JNF_MEMBER_CACHE(cache_symbol, class_cache_symbol, name, sig) \ + JNFMemberInfo _ ## cache_symbol = {name, sig, NO, &class_cache_symbol, {NULL}}, *cache_symbol=&_ ## cache_symbol + +// JNF_STATIC_MEMBER_CACHE - Create a JNFMemberInfo struct for static members +// +// Same as JNF_MEMBER_CACHE, but used for static fields and mehods. +#define JNF_STATIC_MEMBER_CACHE(cache_symbol, class_cache_symbol, name, sig) \ + JNFMemberInfo _ ## cache_symbol = {name, sig, YES, &class_cache_symbol, {NULL}}, *cache_symbol=&_ ## cache_symbol + +// JNF_CTOR_CACHE - Create a JNFMemberInfo struct for a constructor +// +// Same as JNF_MEMBER_CACHE, but for constructors +#define JNF_CTOR_CACHE(cache_symbol, class_cache_symbol, sig) \ + JNFMemberInfo _ ## cache_symbol = {"", sig, NO, &class_cache_symbol, {NULL}}, *cache_symbol=&_ ## cache_symbol + + +// JNFClassInfo - struct for caching a java class reference +// +// Create one of these by using the JNF_CLASS_CACHE macro (below). +// The class ref is resolved lazily. +typedef struct _JNFClassInfo { + const char *name; // fully/qualified/ClassName + jclass cls; // The JNI global class reference. +} JNFClassInfo; + +// JNFMemberInfo - struct for caching a field or method ID +// +// Create these by using the JNF_MEMBER_CACHE macro (below). +// The member ID is resolved lazily. +typedef struct _JNFMemberInfo { + const char *name; // The name of the member + const char *sig; // The signature of the member + BOOL isStatic; // Is this member declared static? + JNFClassInfo *classInfo; // points to the JNFClassInfo struct of + // which this field/method is a member. + union _j { + jfieldID fieldID; // If field, the JNI field ID + jmethodID methodID; // If method, the JNI method ID + } j; +} JNFMemberInfo; + + +/* + * JNI Utility Functions + * + * These functions make use of class and method ID caching, so they + * are more efficient than simply calling their JNI equivalents directly. + * They also detect Java exceptions and throw a corresponding + * NSException when JNI returns with a Java exception. + * Therefore, you should be prepared to handle exceptions + * before they propagate either back to the VM or up + * to the run loop. + */ + +// JNFIsInstanceOf - returns whether obj is an instance of clazz +JNF_EXPORT extern BOOL JNFIsInstanceOf(JNIEnv *env, jobject obj, JNFClassInfo *clazz); + +// Creating instances +JNF_EXPORT extern jobject JNFNewObject(JNIEnv *env, JNFMemberInfo *constructor, ...); + +// Creating arrays +JNF_EXPORT extern jobjectArray JNFNewObjectArray (JNIEnv *env, JNFClassInfo *clazz, jsize length); +JNF_EXPORT extern jbooleanArray JNFNewBooleanArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jbyteArray JNFNewByteArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jcharArray JNFNewCharArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jshortArray JNFNewShortArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jintArray JNFNewIntArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jlongArray JNFNewLongArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jfloatArray JNFNewFloatArray (JNIEnv *env, jsize length); +JNF_EXPORT extern jdoubleArray JNFNewDoubleArray (JNIEnv *env, jsize length); + +// Non-static getters +JNF_EXPORT extern jobject JNFGetObjectField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jboolean JNFGetBooleanField(JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jbyte JNFGetByteField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jchar JNFGetCharField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jshort JNFGetShortField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jint JNFGetIntField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jlong JNFGetLongField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jfloat JNFGetFloatField (JNIEnv *env, jobject obj, JNFMemberInfo *field); +JNF_EXPORT extern jdouble JNFGetDoubleField (JNIEnv *env, jobject obj, JNFMemberInfo *field); + +// Static getters +JNF_EXPORT extern jobject JNFGetStaticObjectField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jboolean JNFGetStaticBooleanField(JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jbyte JNFGetStaticByteField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jchar JNFGetStaticCharField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jshort JNFGetStaticShortField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jint JNFGetStaticIntField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jlong JNFGetStaticLongField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jfloat JNFGetStaticFloatField (JNIEnv *env, JNFMemberInfo *field); +JNF_EXPORT extern jdouble JNFGetStaticDoubleField (JNIEnv *env, JNFMemberInfo *field); + +// Non-static setters +JNF_EXPORT extern void JNFSetObjectField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jobject val); +JNF_EXPORT extern void JNFSetBooleanField(JNIEnv *env, jobject obj, JNFMemberInfo *field, jboolean val); +JNF_EXPORT extern void JNFSetByteField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jbyte val); +JNF_EXPORT extern void JNFSetCharField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jchar val); +JNF_EXPORT extern void JNFSetShortField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jshort val); +JNF_EXPORT extern void JNFSetIntField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jint val); +JNF_EXPORT extern void JNFSetLongField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jlong val); +JNF_EXPORT extern void JNFSetFloatField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jfloat val); +JNF_EXPORT extern void JNFSetDoubleField (JNIEnv *env, jobject obj, JNFMemberInfo *field, jdouble val); + +// Static setters +JNF_EXPORT extern void JNFSetStaticObjectField (JNIEnv *env, JNFMemberInfo *field, jobject val); +JNF_EXPORT extern void JNFSetStaticBooleanField(JNIEnv *env, JNFMemberInfo *field, jboolean val); +JNF_EXPORT extern void JNFSetStaticByteField (JNIEnv *env, JNFMemberInfo *field, jbyte val); +JNF_EXPORT extern void JNFSetStaticCharField (JNIEnv *env, JNFMemberInfo *field, jchar val); +JNF_EXPORT extern void JNFSetStaticShortField (JNIEnv *env, JNFMemberInfo *field, jshort val); +JNF_EXPORT extern void JNFSetStaticIntField (JNIEnv *env, JNFMemberInfo *field, jint val); +JNF_EXPORT extern void JNFSetStaticLongField (JNIEnv *env, JNFMemberInfo *field, jlong val); +JNF_EXPORT extern void JNFSetStaticFloatField (JNIEnv *env, JNFMemberInfo *field, jfloat val); +JNF_EXPORT extern void JNFSetStaticDoubleField (JNIEnv *env, JNFMemberInfo *field, jdouble val); + +// Calling instance methods +JNF_EXPORT extern void JNFCallVoidMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jobject JNFCallObjectMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jboolean JNFCallBooleanMethod(JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jbyte JNFCallByteMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jchar JNFCallCharMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jshort JNFCallShortMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jint JNFCallIntMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jlong JNFCallLongMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jfloat JNFCallFloatMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); +JNF_EXPORT extern jdouble JNFCallDoubleMethod (JNIEnv *env, jobject obj, JNFMemberInfo *method, ...); + +// Calling static methods +JNF_EXPORT extern void JNFCallStaticVoidMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jobject JNFCallStaticObjectMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jboolean JNFCallStaticBooleanMethod(JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jbyte JNFCallStaticByteMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jchar JNFCallStaticCharMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jshort JNFCallStaticShortMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jint JNFCallStaticIntMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jlong JNFCallStaticLongMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jfloat JNFCallStaticFloatMethod (JNIEnv *env, JNFMemberInfo *method, ...); +JNF_EXPORT extern jdouble JNFCallStaticDoubleMethod (JNIEnv *env, JNFMemberInfo *method, ...); + +// Global references +JNF_EXPORT extern jobject JNFNewGlobalRef(JNIEnv *env, jobject obj); +JNF_EXPORT extern void JNFDeleteGlobalRef(JNIEnv *env, jobject globalRef); +JNF_EXPORT extern jobject JNFNewWeakGlobalRef(JNIEnv *env, jobject obj); +JNF_EXPORT extern void JNFDeleteWeakGlobalRef(JNIEnv *env, jobject globalRef); + +__END_DECLS + +#endif /* JNFJNI_H */ diff --git a/JSyphon/native_src/jnf/JNFJNI.m b/JSyphon/native_src/jnf/JNFJNI.m new file mode 100644 index 0000000..1d20327 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFJNI.m @@ -0,0 +1,444 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFJNI.h" + +#import "JNFAssert.h" +#import "debug.h" + +// constants ripped from jvm.h +#define JVM_SIGNATURE_ARRAY '[' +#define JVM_SIGNATURE_BYTE 'B' +#define JVM_SIGNATURE_CHAR 'C' +#define JVM_SIGNATURE_CLASS 'L' +#define JVM_SIGNATURE_ENDCLASS ';' +#define JVM_SIGNATURE_ENUM 'E' +#define JVM_SIGNATURE_FLOAT 'F' +#define JVM_SIGNATURE_DOUBLE 'D' +#define JVM_SIGNATURE_FUNC '(' +#define JVM_SIGNATURE_ENDFUNC ')' +#define JVM_SIGNATURE_INT 'I' +#define JVM_SIGNATURE_LONG 'J' +#define JVM_SIGNATURE_SHORT 'S' +#define JVM_SIGNATURE_VOID 'V' +#define JVM_SIGNATURE_BOOLEAN 'Z' + +// IS_METHOD - Does the parameter point to a method member? +// +// This is used mostly in asserts. +#define IS_METHOD(member) (*(member->sig) == SIGNATURE_FUNC) + +static inline BOOL isMethod(JNFMemberInfo *member) { + return (*(member->sig)) == JVM_SIGNATURE_FUNC; +} + +static void JNFLookupClass(JNIEnv *env, JNFClassInfo *class) { + jclass localCls = NULL; + JNF_ASSERT_COND(class); + localCls = (*env)->FindClass(env, class->name); + if (localCls == NULL) [JNFException raiseUnnamedException:env]; + + class->cls = JNFNewGlobalRef(env, localCls); + (*env)->DeleteLocalRef(env, localCls); + if (class->cls == NULL) [JNFException raiseUnnamedException:env]; +} + +static void JNFLookupMemberID(JNIEnv *env, JNFMemberInfo *member) { + JNF_ASSERT_COND(member); + JNF_ASSERT_COND(member->classInfo); + + if (member->classInfo->cls == NULL) JNFLookupClass(env, member->classInfo); + + if (isMethod(member)) { + member->j.methodID = member->isStatic ? + (*env)->GetStaticMethodID(env, member->classInfo->cls, member->name, member->sig) : + (*env)->GetMethodID(env, member->classInfo->cls, member->name, member->sig); + } else { // This member is a field + member->j.fieldID = member->isStatic ? + (*env)->GetStaticFieldID(env, member->classInfo->cls, member->name, member->sig) : + (*env)->GetFieldID(env, member->classInfo->cls, member->name, member->sig); + } + + // If NULL, then exception occurred + if (member->j.methodID == NULL) [JNFException raiseUnnamedException:env]; +} + +BOOL JNFIsInstanceOf(JNIEnv *env, jobject obj, JNFClassInfo *clazz) { + if (clazz->cls == NULL) JNFLookupClass(env, clazz); + return (BOOL)(*env)->IsInstanceOf(env, obj, clazz->cls); +} + +// +// A whole mess o' macros +// +// All of these macros provide caching of class refs and member IDs, +// which speeds all member accesses following the first. In addition, +// Java exceptions are caught and turned into NSExceptions, +// so error handling is much easier on the native side. +// +// You can use these if you need them for optimization, but it's generally +// easier and better to use the utility functions in jni_utilities.h. + +// LOOKUP_MEMBER_ID - Lookup a fieldID if needed +// +// Give this macro a JNFMemberInfo*, and it will +// lookup and cache the field ID as needed. +#define LOOKUP_MEMBER_ID(env, member) \ +if (member->j.fieldID == NULL) \ +JNFLookupMemberID(env, member) + +#ifdef RAWT_DEBUG +#define VERIFY_MEMBERS +#endif + +#ifdef VERIFY_MEMBERS +#define VERIFY_FIELD(env, obj, field, sig) VerifyMember(env, obj, field, sig, NO) +#define VERIFY_METHOD(env, obj, method, sig) VerifyMember(env, obj, method, sig, YES) +#else +#define VERIFY_FIELD(env, obj, member, sig) +#define VERIFY_METHOD(env, obj, member, sig) +#endif /* RAWT_DEBUG */ + +// GET_FIELD - Safe way to get a java field +// +// This macro takes care of the caching and exception +// propgation. +#define GET_FIELD(env, obj, field, result, sig, jni_call) \ + LOOKUP_MEMBER_ID(env, field); \ + VERIFY_FIELD(env, obj, field, sig); \ + result = (*env)->jni_call(env, obj, field->j.fieldID); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// GET_STATIC_FIELD +// +#define GET_STATIC_FIELD(env, field, result, sig, jni_call) \ + LOOKUP_MEMBER_ID(env, field); \ + VERIFY_FIELD(env, NULL, field, sig); \ + result = (*env)->jni_call(env, field->classInfo->cls, field->j.fieldID); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// SET_FIELD - Safe way to set a java field +// +// Similar to GET_FIELD +#define SET_FIELD(env, obj, field, val, sig, jni_call) \ + LOOKUP_MEMBER_ID(env, field); \ + VERIFY_FIELD(env, obj, field, sig); \ + (*env)->jni_call(env, obj, field->j.fieldID, val); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// SET_STATIC_FIELD +// +#define SET_STATIC_FIELD(env, field, val, sig, jni_call) \ + LOOKUP_MEMBER_ID(env, field); \ + VERIFY_FIELD(env, NULL, field, sig); \ + (*env)->jni_call(env, field->classInfo->cls, field->j.fieldID, val); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// CALL_VOID_METHOD +// +// "args" is a va_list +#define CALL_VOID_METHOD(env, obj, method, jni_call, args) \ + LOOKUP_MEMBER_ID(env, method); \ + VERIFY_METHOD(env, obj, method, JVM_SIGNATURE_VOID); \ + (*env)->jni_call(env, obj, method->j.methodID, args); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// CALL_STATIC_VOID_METHOD +// +// "args" is a va_list +#define CALL_STATIC_VOID_METHOD(env, method, jni_call, args) \ + LOOKUP_MEMBER_ID(env, method); \ + VERIFY_METHOD(env, NULL, method, JVM_SIGNATURE_VOID); \ + (*env)->jni_call(env, method->classInfo->cls, method->j.methodID, args); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// CALL_METHOD - Call a method that returns a value +// +// "args" is a va_list +#define CALL_METHOD(env, obj, method, result, sig, jni_call, args ) \ + LOOKUP_MEMBER_ID(env, method); \ + VERIFY_METHOD(env, obj, method, sig); \ + result = (*env)->jni_call(env, obj, method->j.methodID, args); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + +// CALL_STATIC_METHOD - Call a static method that returns a value +// +// "args" is a va_list +#define CALL_STATIC_METHOD(env, method, result, sig, jni_call, args) \ + LOOKUP_MEMBER_ID(env, method); \ + VERIFY_METHOD(env, NULL, method, sig); \ + result = (*env)->jni_call(env, method->classInfo->cls, method->j.methodID, args); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + + +// NEW_OBJECT - Create instances +// +// "constructor" is a JNFMemberInfo* to a constructor method +// "args" is a va_list of arguments +#define NEW_OBJECT(env, constructor, obj, args) \ + LOOKUP_MEMBER_ID(env, constructor); \ + VERIFY_METHOD(env, NULL, constructor, JVM_SIGNATURE_VOID); \ + obj = (*env)->NewObjectV(env, constructor->classInfo->cls, constructor->j.methodID, args); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + + +// +// Non-static getters & setters +#define GET_FIELD_IMPLEMENTATION(type, sig, jni_call) \ + type JNF ## jni_call(JNIEnv *env, jobject obj, JNFMemberInfo* field) { \ + type result; \ + JNF_ASSERT_COND(!field->isStatic); \ + GET_FIELD(env, obj, field, result, sig, jni_call); \ + return result; \ + } + +#define SET_FIELD_IMPLEMENTATION(type, sig, jni_call) \ + void JNF ## jni_call(JNIEnv *env, jobject obj, JNFMemberInfo* field, type val) {\ + JNF_ASSERT_COND(!field->isStatic); \ + SET_FIELD(env, obj, field, val, sig, jni_call); \ + } + +// +// Non-static getter implemenations +GET_FIELD_IMPLEMENTATION(jobject, JVM_SIGNATURE_ENDCLASS, GetObjectField) +GET_FIELD_IMPLEMENTATION(jboolean, JVM_SIGNATURE_BOOLEAN, GetBooleanField) +GET_FIELD_IMPLEMENTATION(jbyte, JVM_SIGNATURE_BYTE, GetByteField) +GET_FIELD_IMPLEMENTATION(jchar, JVM_SIGNATURE_CHAR, GetCharField) +GET_FIELD_IMPLEMENTATION(jshort, JVM_SIGNATURE_SHORT, GetShortField) +GET_FIELD_IMPLEMENTATION(jint, JVM_SIGNATURE_INT, GetIntField) +GET_FIELD_IMPLEMENTATION(jlong, JVM_SIGNATURE_LONG, GetLongField) +GET_FIELD_IMPLEMENTATION(jfloat, JVM_SIGNATURE_FLOAT, GetFloatField) +GET_FIELD_IMPLEMENTATION(jdouble, JVM_SIGNATURE_DOUBLE, GetDoubleField) + +// +// Non-static setter implemenations +SET_FIELD_IMPLEMENTATION(jobject, JVM_SIGNATURE_ENDCLASS, SetObjectField) +SET_FIELD_IMPLEMENTATION(jboolean, JVM_SIGNATURE_BOOLEAN, SetBooleanField) +SET_FIELD_IMPLEMENTATION(jbyte, JVM_SIGNATURE_BYTE, SetByteField) +SET_FIELD_IMPLEMENTATION(jchar, JVM_SIGNATURE_CHAR, SetCharField) +SET_FIELD_IMPLEMENTATION(jshort, JVM_SIGNATURE_SHORT, SetShortField) +SET_FIELD_IMPLEMENTATION(jint, JVM_SIGNATURE_INT, SetIntField) +SET_FIELD_IMPLEMENTATION(jlong, JVM_SIGNATURE_LONG, SetLongField) +SET_FIELD_IMPLEMENTATION(jfloat, JVM_SIGNATURE_FLOAT, SetFloatField) +SET_FIELD_IMPLEMENTATION(jdouble, JVM_SIGNATURE_DOUBLE, SetDoubleField) + +// +// Static getters & setters +#define GET_STATIC_FIELD_IMPLEMENTATION(type, sig, jni_call) \ + type JNF ## jni_call(JNIEnv *env, JNFMemberInfo* field) { \ + type result; \ + JNF_ASSERT_COND(field->isStatic); \ + GET_STATIC_FIELD(env, field, result, sig, jni_call); \ + return result; \ + } + +#define SET_STATIC_FIELD_IMPLEMENTATION(type, sig, jni_call) \ + void JNF ## jni_call(JNIEnv *env, JNFMemberInfo* field, type val) { \ + JNF_ASSERT_COND(field->isStatic); \ + SET_STATIC_FIELD(env, field, val, sig, jni_call); \ + } + +// +// Static getter implementations +GET_STATIC_FIELD_IMPLEMENTATION(jobject, JVM_SIGNATURE_ENDCLASS, GetStaticObjectField) +GET_STATIC_FIELD_IMPLEMENTATION(jboolean, JVM_SIGNATURE_BOOLEAN, GetStaticBooleanField) +GET_STATIC_FIELD_IMPLEMENTATION(jbyte, JVM_SIGNATURE_BYTE, GetStaticByteField) +GET_STATIC_FIELD_IMPLEMENTATION(jchar, JVM_SIGNATURE_CHAR, GetStaticCharField) +GET_STATIC_FIELD_IMPLEMENTATION(jshort, JVM_SIGNATURE_SHORT, GetStaticShortField) +GET_STATIC_FIELD_IMPLEMENTATION(jint, JVM_SIGNATURE_INT, GetStaticIntField) +GET_STATIC_FIELD_IMPLEMENTATION(jlong, JVM_SIGNATURE_LONG, GetStaticLongField) +GET_STATIC_FIELD_IMPLEMENTATION(jfloat, JVM_SIGNATURE_FLOAT, GetStaticFloatField) +GET_STATIC_FIELD_IMPLEMENTATION(jdouble, JVM_SIGNATURE_DOUBLE, GetStaticDoubleField) + +// +// Static setter implemenations +SET_STATIC_FIELD_IMPLEMENTATION(jobject, JVM_SIGNATURE_ENDCLASS, SetStaticObjectField) +SET_STATIC_FIELD_IMPLEMENTATION(jboolean, JVM_SIGNATURE_BOOLEAN, SetStaticBooleanField) +SET_STATIC_FIELD_IMPLEMENTATION(jbyte, JVM_SIGNATURE_BYTE, SetStaticByteField) +SET_STATIC_FIELD_IMPLEMENTATION(jchar, JVM_SIGNATURE_CHAR, SetStaticCharField) +SET_STATIC_FIELD_IMPLEMENTATION(jshort, JVM_SIGNATURE_SHORT, SetStaticShortField) +SET_STATIC_FIELD_IMPLEMENTATION(jint, JVM_SIGNATURE_INT, SetStaticIntField) +SET_STATIC_FIELD_IMPLEMENTATION(jlong, JVM_SIGNATURE_LONG, SetStaticLongField) +SET_STATIC_FIELD_IMPLEMENTATION(jfloat, JVM_SIGNATURE_FLOAT, SetStaticFloatField) +SET_STATIC_FIELD_IMPLEMENTATION(jdouble, JVM_SIGNATURE_DOUBLE, SetStaticDoubleField) + + +// +// Calling instance methods +// +// FIX: if an exception is thrown, va_end is not called. +// On i386, va_end is a null macro. Check on PPC to verify the same. +void JNFCallVoidMethod(JNIEnv *env, jobject obj, JNFMemberInfo* method, ...) { + va_list args; + JNF_ASSERT_COND(!method->isStatic); + va_start(args, method); + CALL_VOID_METHOD(env, obj, method, CallVoidMethodV, args); + va_end(args); +} + +#define CALL_METHOD_IMPLEMENTATION(type, sig, jni_call) \ + type JNF ## jni_call(JNIEnv *env, jobject obj, JNFMemberInfo* method, ...) {\ + type result; \ + va_list args; \ + JNF_ASSERT_COND(!method->isStatic); \ + va_start(args, method); \ + CALL_METHOD(env, obj, method, result, sig, jni_call ## V, args); \ + va_end(args); \ + return result; \ + } + +CALL_METHOD_IMPLEMENTATION(jobject, JVM_SIGNATURE_ENDCLASS, CallObjectMethod) +CALL_METHOD_IMPLEMENTATION(jboolean, JVM_SIGNATURE_BOOLEAN, CallBooleanMethod) +CALL_METHOD_IMPLEMENTATION(jbyte, JVM_SIGNATURE_BYTE, CallByteMethod) +CALL_METHOD_IMPLEMENTATION(jchar, JVM_SIGNATURE_CHAR, CallCharMethod) +CALL_METHOD_IMPLEMENTATION(jshort, JVM_SIGNATURE_SHORT, CallShortMethod) +CALL_METHOD_IMPLEMENTATION(jint, JVM_SIGNATURE_INT, CallIntMethod) +CALL_METHOD_IMPLEMENTATION(jlong, JVM_SIGNATURE_LONG, CallLongMethod) +CALL_METHOD_IMPLEMENTATION(jfloat, JVM_SIGNATURE_FLOAT, CallFloatMethod) +CALL_METHOD_IMPLEMENTATION(jdouble, JVM_SIGNATURE_DOUBLE, CallDoubleMethod) + +// +// Calling static methods +// +// FIX: if an exception is thrown, va_end is not called. +// On i386, va_end is a null macro. Check on PPC to verify the same. +void JNFCallStaticVoidMethod(JNIEnv *env, JNFMemberInfo* method, ...) { + va_list args; + JNF_ASSERT_COND(method->isStatic); + va_start(args, method); + CALL_STATIC_VOID_METHOD(env, method, CallStaticVoidMethodV, args); + va_end(args); +} + +#define CALL_STATIC_METHOD_IMPLEMENTATION(type, sig, jni_call) \ + type JNF ## jni_call(JNIEnv *env, JNFMemberInfo* method, ...) { \ + type result; \ + va_list args; \ + JNF_ASSERT_COND(method->isStatic); \ + va_start(args, method); \ + CALL_STATIC_METHOD(env, method, result, sig, jni_call ## V, args); \ + va_end(args); \ + return result; \ + } + +CALL_STATIC_METHOD_IMPLEMENTATION(jobject, JVM_SIGNATURE_ENDCLASS, CallStaticObjectMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jboolean, JVM_SIGNATURE_BOOLEAN, CallStaticBooleanMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jbyte, JVM_SIGNATURE_BYTE, CallStaticByteMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jchar, JVM_SIGNATURE_CHAR, CallStaticCharMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jshort, JVM_SIGNATURE_SHORT, CallStaticShortMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jint, JVM_SIGNATURE_INT, CallStaticIntMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jlong, JVM_SIGNATURE_LONG, CallStaticLongMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jfloat, JVM_SIGNATURE_FLOAT, CallStaticFloatMethod) +CALL_STATIC_METHOD_IMPLEMENTATION(jdouble, JVM_SIGNATURE_DOUBLE, CallStaticDoubleMethod) + +// +// Creating new object instances +jobject JNFNewObject(JNIEnv *env, JNFMemberInfo* constructor, ...) +{ + jobject newobj; + va_list args; + JNF_ASSERT_COND(!constructor->isStatic); + va_start(args, constructor); + NEW_OBJECT(env, constructor, newobj, args); + va_end(args); + return newobj; +} + +jobjectArray JNFNewObjectArray(JNIEnv *env, JNFClassInfo *clazz, jsize length) +{ + if (clazz->cls == NULL) JNFLookupClass(env, clazz); + JNF_ASSERT_COND(clazz->cls); + jobjectArray newArray = (*env)->NewObjectArray(env, length, clazz->cls, NULL); + JNF_CHECK_AND_RETHROW_EXCEPTION(env); + return newArray; +} + +#define NEW_PRIMITIVE_ARRAY(primitiveArrayType, methodName) \ + primitiveArrayType JNF ## methodName(JNIEnv *env, jsize length) { \ + primitiveArrayType array = (*env)->methodName(env, length); \ + JNF_CHECK_AND_RETHROW_EXCEPTION(env); \ + return array; \ + } + +NEW_PRIMITIVE_ARRAY(jbooleanArray, NewBooleanArray) +NEW_PRIMITIVE_ARRAY(jbyteArray, NewByteArray) +NEW_PRIMITIVE_ARRAY(jcharArray, NewCharArray) +NEW_PRIMITIVE_ARRAY(jshortArray, NewShortArray) +NEW_PRIMITIVE_ARRAY(jintArray, NewIntArray) +NEW_PRIMITIVE_ARRAY(jlongArray, NewLongArray) +NEW_PRIMITIVE_ARRAY(jfloatArray, NewFloatArray) +NEW_PRIMITIVE_ARRAY(jdoubleArray, NewDoubleArray) + + +// Class-related functions + +// A bottleneck for creating global references +jobject JNFNewGlobalRef(JNIEnv *env, jobject obj) +{ + if (!obj) return NULL; + + jobject globalRef = (*env)->NewGlobalRef(env, obj); + if (!globalRef) JNF_CHECK_AND_RETHROW_EXCEPTION(env); + + // JNF_WARN("Created global ref %#08lx to object:", globalRef); + // JNFDumpJavaObject(env, globalRef); + return globalRef; +} + +// A bottleneck for deleting global references. +void JNFDeleteGlobalRef(JNIEnv *env, jobject globalRef) +{ + if (!globalRef) return; + // JNF_WARN("Deleting global ref %#08lx to object:", globalRef); + // JNFDumpJavaObject(env, globalRef); + (*env)->DeleteGlobalRef(env, globalRef); +} + +// A bottleneck for creating weak global references +jobject JNFNewWeakGlobalRef(JNIEnv *env, jobject obj) +{ + if (!obj) return NULL; + + jobject globalRef = (*env)->NewWeakGlobalRef(env, obj); + if (!globalRef) JNF_CHECK_AND_RETHROW_EXCEPTION(env); + + // JNF_WARN("Created global ref %#08lx to object:", globalRef); + // JNFDumpJavaObject(env, globalRef); + return globalRef; +} + +// A bottleneck for deleting weak global references. +void JNFDeleteWeakGlobalRef(JNIEnv *env, jobject globalRef) +{ + if (!globalRef) return; + // JNF_WARN("Deleting global ref %#08lx to object:", globalRef); + // JNFDumpJavaObject(env, globalRef); + (*env)->DeleteWeakGlobalRef(env, globalRef); +} diff --git a/JSyphon/native_src/jnf/JNFJObjectWrapper.h b/JSyphon/native_src/jnf/JNFJObjectWrapper.h new file mode 100644 index 0000000..957ac93 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFJObjectWrapper.h @@ -0,0 +1,76 @@ +#ifndef JNFJOBJECTWRAPPER_H +#define JNFJOBJECTWRAPPER_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Simple wrapper classes to hold Java Objects in JNI global references. + * + * This is used to pass Java objects across thread boundries, often through + * -performSelectorOnMainThread invocations. This wrapper properly creates a + * new global ref, and clears it on -dealloc or -finalize, attaching to the + * current VM, attaching the current thread if necessary, releasing the global + * ref, and detaching the thread from the VM if it attached it. + * + * Destruction of this wrapper is expensive if the jobject has not been + * pre-cleared, because it must re-attach to the JVM. + * + * The JNFWeakJObjectWrapper manages a weak global reference which may become + * invalid if the JVM garbage collects the original object. + */ + +#import +#import + +__BEGIN_DECLS + +JNF_EXPORT +@interface JNFJObjectWrapper : NSObject + ++ (JNFJObjectWrapper *) wrapperWithJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env; +- (id) initWithJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env; +- (void) setJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env; // clears any pre-existing global-ref +- (jobject) jObjectWithEnv:(JNIEnv *)env; // returns a new local-ref, must be released with DeleteLocalRef + +@property (readonly, nonatomic, assign) jobject jObject; + +@end + + +JNF_EXPORT +@interface JNFWeakJObjectWrapper : JNFJObjectWrapper { } + ++ (JNFWeakJObjectWrapper *) wrapperWithJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env; + +@end + +__END_DECLS + +#endif /* JNFJOBJECTWRAPPER_H */ diff --git a/JSyphon/native_src/jnf/JNFJObjectWrapper.m b/JSyphon/native_src/jnf/JNFJObjectWrapper.m new file mode 100644 index 0000000..17eac99 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFJObjectWrapper.m @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFJObjectWrapper.h" + +#import "JNFJNI.h" +#import "JNFThread.h" + +@interface JNFJObjectWrapper () +@property (readwrite, nonatomic, assign) jobject jObject; +@end + +@implementation JNFJObjectWrapper + +- (jobject) _getWithEnv:(__unused JNIEnv *)env { + return self.jObject; +} + +- (jobject) _createObj:(jobject)jObjectIn withEnv:(JNIEnv *)env { + return JNFNewGlobalRef(env, jObjectIn); +} + +- (void) _destroyObj:(jobject)jObjectIn withEnv:(JNIEnv *)env { + JNFDeleteGlobalRef(env, jObjectIn); +} + ++ (JNFJObjectWrapper *) wrapperWithJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env { + return [[[JNFJObjectWrapper alloc] initWithJObject:jObjectIn withEnv:env] autorelease]; +} + +- (id) initWithJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env { + self = [super init]; + if (!self) return self; + + if (jObjectIn) { + self.jObject = [self _createObj:jObjectIn withEnv:env]; + } + + return self; +} + +- (jobject) jObjectWithEnv:(JNIEnv *)env { + jobject validObj = [self _getWithEnv:env]; + if (!validObj) return NULL; + + return (*env)->NewLocalRef(env, validObj); +} + +- (void) setJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env { + jobject const jobj = self.jObject; + if (jobj == jObjectIn) return; + + if (jobj) { + [self _destroyObj:jobj withEnv:env]; + } + + if (jObjectIn) { + self.jObject = [self _createObj:jObjectIn withEnv:env]; + } else { + self.jObject = NULL; + } +} + +- (void) clearJObjectReference { + jobject const jobj = self.jObject; + if (!jobj) return; + + JNFThreadContext threadContext = JNFThreadDetachImmediately; + JNIEnv *env = JNFObtainEnv(&threadContext); + if (env == NULL) return; // leak? + + [self _destroyObj:jobj withEnv:env]; + self.jObject = NULL; + + JNFReleaseEnv(env, &threadContext); +} + +- (void) dealloc { + [self clearJObjectReference]; + [super dealloc]; +} + +@end + + +@implementation JNFWeakJObjectWrapper + ++ (JNFWeakJObjectWrapper *) wrapperWithJObject:(jobject)jObjectIn withEnv:(JNIEnv *)env { + return [[[JNFWeakJObjectWrapper alloc] initWithJObject:jObjectIn withEnv:env] autorelease]; +} + +- (jobject) _getWithEnv:(JNIEnv *)env { + jobject const jobj = self.jObject; + + if ((*env)->IsSameObject(env, jobj, NULL) == JNI_TRUE) { + self.jObject = NULL; // object went invalid + return NULL; + } + return jobj; +} + +- (jobject) _createObj:(jobject)jObjectIn withEnv:(JNIEnv *)env { + return JNFNewWeakGlobalRef(env, jObjectIn); +} + +- (void) _destroyObj:(jobject)jObjectIn withEnv:(JNIEnv *)env { + JNFDeleteWeakGlobalRef(env, jObjectIn); +} + +@end diff --git a/JSyphon/native_src/jnf/JNFNumber.h b/JSyphon/native_src/jnf/JNFNumber.h new file mode 100644 index 0000000..78b81ac --- /dev/null +++ b/JSyphon/native_src/jnf/JNFNumber.h @@ -0,0 +1,68 @@ +#ifndef JNFNUMBER_H +#define JNFNUMBER_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Functions that convert between number container classes. + */ + +#import + +#import + +__BEGIN_DECLS + +/* + * Converts java.lang.Number to an NSNumber + * NOTE: Return value is auto-released, so if you need to hang on to it, you should retain it. + */ +JNF_EXPORT extern NSNumber *JNFJavaToNSNumber(JNIEnv *env, jobject n); + +/* + * Converts an NSNumber to a java.lang.Number + * Only returns java.lang.Longs or java.lang.Doubles. + * NOTE: This returns a JNI Local Ref. Any code that calls must call DeleteLocalRef with the return value. + */ +JNF_EXPORT extern jobject JNFNSToJavaNumber(JNIEnv *env, NSNumber *n); + +/* + * Converts a java.lang.Boolean constants to the CFBooleanRef constants + */ +JNF_EXPORT extern CFBooleanRef JNFJavaToCFBoolean(JNIEnv* env, jobject b); + +/* + * Converts a CFBooleanRef constants to the java.lang.Boolean constants + */ +JNF_EXPORT extern jobject JNFCFToJavaBoolean(JNIEnv *env, CFBooleanRef b); + +__END_DECLS + +#endif /* JNFNUMBER_H */ diff --git a/JSyphon/native_src/jnf/JNFNumber.m b/JSyphon/native_src/jnf/JNFNumber.m new file mode 100644 index 0000000..aa83276 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFNumber.m @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFNumber.h" +#import "JNFJNI.h" + +static JNF_CLASS_CACHE(sjc_Long, "java/lang/Long"); +static JNF_CLASS_CACHE(sjc_Double, "java/lang/Double"); +static JNF_CLASS_CACHE(sjc_Boolean, "java/lang/Boolean"); + +NSNumber *JNFJavaToNSNumber(JNIEnv* env, jobject n) +{ + if (n == NULL) return nil; + + static JNF_CLASS_CACHE(sjc_Number, "java/lang/Number"); + static JNF_CLASS_CACHE(sjc_Integer, "java/lang/Integer"); + static JNF_CLASS_CACHE(sjc_Float, "java/lang/Float"); + static JNF_CLASS_CACHE(sjc_Byte, "java/lang/Byte"); + static JNF_CLASS_CACHE(sjc_Short, "java/lang/Short"); + + // AWT_THREADING Safe (known object) + if (JNFIsInstanceOf(env, n, &sjc_Integer)) { + static JNF_MEMBER_CACHE(jm_intValue, sjc_Number, "intValue", "()I"); + return [NSNumber numberWithInt:JNFCallIntMethod(env, n, jm_intValue)]; + } else if (JNFIsInstanceOf(env, n, &sjc_Long)) { + static JNF_MEMBER_CACHE(jm_longValue, sjc_Number, "longValue", "()J"); + return [NSNumber numberWithLongLong:JNFCallLongMethod(env, n, jm_longValue)]; + } else if (JNFIsInstanceOf(env, n, &sjc_Float)) { + static JNF_MEMBER_CACHE(jm_floatValue, sjc_Number, "floatValue", "()F"); + return [NSNumber numberWithFloat:JNFCallFloatMethod(env, n, jm_floatValue)]; + } else if (JNFIsInstanceOf(env, n, &sjc_Double)) { + static JNF_MEMBER_CACHE(jm_doubleValue, sjc_Number, "doubleValue", "()D"); + return [NSNumber numberWithDouble:JNFCallDoubleMethod(env, n, jm_doubleValue)]; + } else if (JNFIsInstanceOf(env, n, &sjc_Byte)) { + static JNF_MEMBER_CACHE(jm_byteValue, sjc_Number, "byteValue", "()B"); + return [NSNumber numberWithChar:JNFCallByteMethod(env, n, jm_byteValue)]; + } else if (JNFIsInstanceOf(env, n, &sjc_Short)) { + static JNF_MEMBER_CACHE(jm_shortValue, sjc_Number, "shortValue", "()S"); + return [NSNumber numberWithShort:JNFCallShortMethod(env, n, jm_shortValue)]; + } + + return [NSNumber numberWithInt:0]; +} + +jobject JNFNSToJavaNumber(JNIEnv *env, NSNumber *n) +{ + if (n == nil) return NULL; + + if (CFNumberIsFloatType((CFNumberRef)n)) { + static JNF_CTOR_CACHE(jm_Double, sjc_Double, "(D)V"); + return JNFNewObject(env, jm_Double, [n doubleValue]); // AWT_THREADING Safe (known object) + } else { + static JNF_CTOR_CACHE(jm_Long, sjc_Long, "(J)V"); + return JNFNewObject(env, jm_Long, [n longLongValue]); // AWT_THREADING Safe (known object) + } +} + +CFBooleanRef JNFJavaToCFBoolean(JNIEnv* env, jobject b) +{ + if (b == NULL) return NULL; + if (!JNFIsInstanceOf(env, b, &sjc_Boolean)) return NULL; + static JNF_MEMBER_CACHE(jm_booleanValue, sjc_Boolean, "booleanValue", "()Z"); + return JNFCallBooleanMethod(env, b, jm_booleanValue) ? kCFBooleanTrue : kCFBooleanTrue; +} + +jobject JNFCFToJavaBoolean(JNIEnv *env, CFBooleanRef b) +{ + if (b == NULL) return NULL; + static JNF_STATIC_MEMBER_CACHE(js_TRUE, sjc_Boolean, "TRUE", "java/lang/Boolean"); + static JNF_STATIC_MEMBER_CACHE(js_FALSE, sjc_Boolean, "FALSE", "java/lang/Boolean"); + return JNFGetStaticObjectField(env, (b == kCFBooleanTrue) ? js_TRUE : js_FALSE); +} diff --git a/JSyphon/native_src/jnf/JNFObject.h b/JSyphon/native_src/jnf/JNFObject.h new file mode 100644 index 0000000..4aa4e5e --- /dev/null +++ b/JSyphon/native_src/jnf/JNFObject.h @@ -0,0 +1,60 @@ +#ifndef JNFOBJECT_H +#define JNFOBJECT_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Functions that access some of the base functionality of java.lang.Object. + */ + +#import + +#import + +__BEGIN_DECLS + +/* + * Returns Object.equals() for the two items + */ +JNF_EXPORT extern BOOL JNFObjectEquals(JNIEnv* env, jobject a, jobject b); + +/* + * Returns Object.toString() as an NSString + */ +JNF_EXPORT extern NSString *JNFObjectToString(JNIEnv *env, jobject obj); + +/* + * Returns Object.getClass().toString() as an NSString. Useful in gdb. + */ +JNF_EXPORT extern NSString *JNFObjectClassName(JNIEnv* env, jobject obj); + +__END_DECLS + +#endif /* JNFOBJECT_H */ diff --git a/JSyphon/native_src/jnf/JNFObject.m b/JSyphon/native_src/jnf/JNFObject.m new file mode 100644 index 0000000..510e58e --- /dev/null +++ b/JSyphon/native_src/jnf/JNFObject.m @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFObject.h" + +#import "JNFJNI.h" +#import "JNFString.h" + +static JNF_CLASS_CACHE(sjc_Object, "java/lang/Object"); + +BOOL JNFObjectEquals(JNIEnv* env, jobject a, jobject b) +{ + if ((a == NULL) && (b == NULL)) return YES; + if ((a == NULL) || (b == NULL)) return NO; + + static JNF_MEMBER_CACHE(jm_equals, sjc_Object, "equals", "(Ljava/lang/Object;)Z"); + return (BOOL)JNFCallBooleanMethod(env, a, jm_equals, b); // AWT_THREADING Safe (!appKit) +} + +NSString *JNFObjectToString(JNIEnv *env, jobject obj) +{ + static JNF_MEMBER_CACHE(jm_toString, sjc_Object, "toString", "()Ljava/lang/String;"); + jobject name = JNFCallObjectMethod(env, obj, jm_toString); // AWT_THREADING Safe (known object) + + id result = JNFJavaToNSString(env, name); + (*env)->DeleteLocalRef(env, name); + return result; +} + +NSString *JNFObjectClassName(JNIEnv* env, jobject obj) +{ + static JNF_MEMBER_CACHE(jm_getClass, sjc_Object, "getClass", "()Ljava/lang/Class;"); + + jobject clz = JNFCallObjectMethod(env, obj, jm_getClass); // AWT_THREADING Safe (known object) + NSString *result = JNFObjectToString(env, clz); + (*env)->DeleteLocalRef(env, clz); + return result; +} diff --git a/JSyphon/native_src/jnf/JNFPath.h b/JSyphon/native_src/jnf/JNFPath.h new file mode 100644 index 0000000..fd00d85 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFPath.h @@ -0,0 +1,59 @@ +#ifndef JNFPATH_H +#define JNFPATH_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Functions that create strings that are in the proper format for holding + * paths in Java and native. + */ + +#import + +#import + +__BEGIN_DECLS + +/* + * Returns a jstring in precomposed UTF16 format that is compatable with Java's + * expectation of the UTF16 format for strings to be displayed. + */ +JNF_EXPORT extern jstring JNFNormalizedJavaStringForPath(JNIEnv *env, NSString *path); + +/* + * Returns an NSString in decomposed UTF16 format that is compatable with HFS's + * expectation of the UTF16 format for file system paths. + * NOTE: this NSString is autoreleased. + */ +JNF_EXPORT extern NSString *JNFNormalizedNSStringForPath(JNIEnv *env, jstring path); + +__END_DECLS + +#endif /* JNFPATH_H */ diff --git a/JSyphon/native_src/jnf/JNFPath.m b/JSyphon/native_src/jnf/JNFPath.m new file mode 100644 index 0000000..608a9e3 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFPath.m @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFPath.h" + +#import + +#import "JNFString.h" + +jstring JNFNormalizedJavaStringForPath(JNIEnv *env, NSString *inString) +{ + if (inString == nil) return NULL; + + CFMutableStringRef mutableDisplayName = CFStringCreateMutableCopy(NULL, 0, (CFStringRef)inString); + CFStringNormalize(mutableDisplayName, kCFStringNormalizationFormC); + jstring returnValue = JNFNSToJavaString(env, (NSString *)mutableDisplayName); + CFRelease(mutableDisplayName); + + return returnValue; +} + +NSString *JNFNormalizedNSStringForPath(JNIEnv *env, jstring javaString) +{ + if (javaString == NULL) return nil; + + // We were given a filename, so convert it to a compatible representation for the file system. + NSFileManager *fm = [NSFileManager defaultManager]; + NSString *fileName = JNFJavaToNSString(env, javaString); + const char *compatibleFilename = [fm fileSystemRepresentationWithPath:fileName]; + return [fm stringWithFileSystemRepresentation:compatibleFilename length:strlen(compatibleFilename)]; +} diff --git a/JSyphon/native_src/jnf/JNFRunLoop.h b/JSyphon/native_src/jnf/JNFRunLoop.h new file mode 100644 index 0000000..d4794f1 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFRunLoop.h @@ -0,0 +1,57 @@ +#ifndef JNFRUNLOOP_H +#define JNFRUNLOOP_H +/* + * Copyright (c) 2009-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Used to perform selectors and blocks in the Java runloop mode. + */ + +#import +#import + +__BEGIN_DECLS + +JNF_EXPORT extern NSString *JNFRunLoopDidStartNotification; + +JNF_EXPORT +@interface JNFRunLoop : NSObject { } + ++ (NSString *)javaRunLoopMode; ++ (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait; +#if __BLOCKS__ ++ (void)performOnMainThreadWaiting:(BOOL)waitUntilDone withBlock:(void (^)(void))block; +#endif + +@end + +__END_DECLS + +#endif /* JNFRUNLOOP_H */ diff --git a/JSyphon/native_src/jnf/JNFRunLoop.m b/JSyphon/native_src/jnf/JNFRunLoop.m new file mode 100644 index 0000000..c3ece5b --- /dev/null +++ b/JSyphon/native_src/jnf/JNFRunLoop.m @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2009-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFRunLoop.h" + +#import + + +NSString *JNFRunLoopDidStartNotification = @"JNFRunLoopDidStartNotification"; + +static NSString *AWTRunLoopMode = @"AWTRunLoopMode"; +static NSArray *sPerformModes = nil; + +@implementation JNFRunLoop + ++ (void)initialize { + if (sPerformModes) return; + sPerformModes = [[NSArray alloc] initWithObjects:NSDefaultRunLoopMode, NSModalPanelRunLoopMode, NSEventTrackingRunLoopMode, AWTRunLoopMode, nil]; +} + ++ (NSString *)javaRunLoopMode { + return AWTRunLoopMode; +} + ++ (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)waitUntilDone { + [target performSelectorOnMainThread:aSelector withObject:arg waitUntilDone:waitUntilDone modes:sPerformModes]; +} + +#if __BLOCKS__ + ++ (void)_performDirectBlock:(void (^)(void))block { + block(); +} + ++ (void)_performCopiedBlock:(void (^)(void))newBlock { + newBlock(); + Block_release(newBlock); +} + ++ (void)performOnMainThreadWaiting:(BOOL)waitUntilDone withBlock:(void (^)(void))block { + if (waitUntilDone) { + [self performOnMainThread:@selector(_performDirectBlock:) on:self withObject:block waitUntilDone:YES]; + } else { + void (^newBlock)(void) = Block_copy(block); + [self performOnMainThread:@selector(_performCopiedBlock:) on:self withObject:newBlock waitUntilDone:NO]; + } +} + +#endif + +@end diff --git a/JSyphon/native_src/jnf/JNFRunnable.h b/JSyphon/native_src/jnf/JNFRunnable.h new file mode 100644 index 0000000..ddf065a --- /dev/null +++ b/JSyphon/native_src/jnf/JNFRunnable.h @@ -0,0 +1,52 @@ +#ifndef JNFRUNNABLE_H +#define JNFRUNNABLE_H +/* + * Copyright (c) 2009-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Creates NSInvocations which wrap java.lang.Runnables. + */ + +#import +#import + +__BEGIN_DECLS + +JNF_EXPORT +@interface JNFRunnable : NSObject { } ++ (NSInvocation *) invocationWithRunnable:(jobject)runnable withEnv:(JNIEnv *)env; +#if __BLOCKS__ ++ (void(^)(void)) blockWithRunnable:(jobject)runnable withEnv:(JNIEnv *)env; +#endif +@end + +__END_DECLS + +#endif /* JNFRUNNABLE_H */ diff --git a/JSyphon/native_src/jnf/JNFRunnable.m b/JSyphon/native_src/jnf/JNFRunnable.m new file mode 100644 index 0000000..7df6249 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFRunnable.m @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2009-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFRunnable.h" +#import "JNFThread.h" +#import "JNFJObjectWrapper.h" + + +static JNF_CLASS_CACHE(jc_Runnable, "java/lang/Runnable"); +static JNF_MEMBER_CACHE(jm_run, jc_Runnable, "run", "()V"); + +@interface JNFRunnableWrapper : JNFJObjectWrapper { } +- (void) invokeRunnable; +@end + +@implementation JNFRunnableWrapper + +- (void) invokeRunnable { + JNFThreadContext ctx = JNFThreadDetachOnThreadDeath | JNFThreadSetSystemClassLoaderOnAttach | JNFThreadAttachAsDaemon; + JNIEnv *env = JNFObtainEnv(&ctx); + JNFCallVoidMethod(env, [self jObjectWithEnv:env], jm_run); + JNFReleaseEnv(env, &ctx); +} + +@end + + +@implementation JNFRunnable + ++ (NSInvocation *) invocationWithRunnable:(jobject)runnable withEnv:(JNIEnv *)env { + SEL sel = @selector(invokeRunnable); + NSMethodSignature *sig = [JNFRunnableWrapper instanceMethodSignatureForSelector:sel]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig]; + [invocation retainArguments]; + [invocation setSelector:sel]; + + JNFRunnableWrapper *runnableWrapper = [[JNFRunnableWrapper alloc] initWithJObject:runnable withEnv:env]; + [invocation setTarget:runnableWrapper]; + [runnableWrapper release]; + + return invocation; +} + +#if __BLOCKS__ ++ (void(^)(void)) blockWithRunnable:(jobject)runnable withEnv:(JNIEnv *)env { + JNFJObjectWrapper *runnableWrapper = [JNFJObjectWrapper wrapperWithJObject:runnable withEnv:env]; + + return [[^() { + JNFThreadContext ctx = JNFThreadDetachOnThreadDeath | JNFThreadSetSystemClassLoaderOnAttach | JNFThreadAttachAsDaemon; + JNIEnv *_block_local_env = JNFObtainEnv(&ctx); + JNFCallVoidMethod(env, [runnableWrapper jObjectWithEnv:_block_local_env], jm_run); + JNFReleaseEnv(_block_local_env, &ctx); + } copy] autorelease]; +} +#endif + +@end diff --git a/JSyphon/native_src/jnf/JNFString.h b/JSyphon/native_src/jnf/JNFString.h new file mode 100644 index 0000000..c84f43c --- /dev/null +++ b/JSyphon/native_src/jnf/JNFString.h @@ -0,0 +1,75 @@ +#ifndef JNFSTRING_H +#define JNFSTRING_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Functions that create NSStrings, UTF16 unichars, or UTF8 chars from java.lang.Strings + */ + +#import + +#import + +__BEGIN_DECLS + +// Returns an NSString given a java.lang.String object +// NOTE: Return value is auto-released, so if you need to hang on to it, you should retain it. +JNF_EXPORT extern NSString *JNFJavaToNSString(JNIEnv *env, jstring javaString); + +// Returns a java.lang.String object as a JNI local ref. +// NOTE: This returns a JNI Local Ref. Any code that calls this should call DeleteLocalRef with the return value. +JNF_EXPORT extern jstring JNFNSToJavaString(JNIEnv *env, NSString *nsString); + +/* + * Gets UTF16 unichars from a Java string, and checks for errors and raises a JNFException if + * the unichars cannot be obtained from Java. + */ +JNF_EXPORT extern const unichar *JNFGetStringUTF16UniChars(JNIEnv *env, jstring javaString); + +/* + * Releases the unichars obtained from JNFGetStringUTF16UniChars() + */ +JNF_EXPORT extern void JNFReleaseStringUTF16UniChars(JNIEnv *env, jstring javaString, const unichar *unichars); + +/* + * Gets UTF8 chars from a Java string, and checks for errors and raises a JNFException if + * the chars cannot be obtained from Java. + */ +JNF_EXPORT extern const char *JNFGetStringUTF8Chars(JNIEnv *env, jstring javaString); + +/* + * Releases the chars obtained from JNFGetStringUTF8Chars() + */ +JNF_EXPORT extern void JNFReleaseStringUTF8Chars(JNIEnv *env, jstring javaString, const char *chars); + +__END_DECLS + +#endif /* JNFSTRING_H */ diff --git a/JSyphon/native_src/jnf/JNFString.m b/JSyphon/native_src/jnf/JNFString.m new file mode 100644 index 0000000..db6d465 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFString.m @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFString.h" + +#import "JNFJNI.h" +#import "JNFAssert.h" +#import "debug.h" + +#define STACK_BUFFER_SIZE 64 + +/* + * Utility function to convert java String to NSString. We don't go through intermediate cString + * representation, since we are trying to preserve unicode characters from Java to NSString. + */ +NSString *JNFJavaToNSString(JNIEnv *env, jstring javaString) +{ + // We try very hard to only allocate and memcopy once. + if (javaString == NULL) return nil; + + jsize length = (*env)->GetStringLength(env, javaString); + unichar *buffer = (unichar *)calloc((size_t)length, sizeof(unichar)); + (*env)->GetStringRegion(env, javaString, 0, length, buffer); + NSString *str = (NSString *)CFStringCreateWithCharactersNoCopy(NULL, buffer, length, kCFAllocatorMalloc); + // NSLog(@"%@", str); + return [(NSString *)CFMakeCollectable(str) autorelease]; +} + +/* + * Utility function to convert NSString to Java string. We don't go through intermediate cString + * representation, since we are trying to preserve unicode characters in translation. + */ +jstring JNFNSToJavaString(JNIEnv *env, NSString *nsString) +{ + jstring res = nil; + if (nsString == nil) return NULL; + + unsigned long length = [nsString length]; + unichar *buffer; + unichar stackBuffer[STACK_BUFFER_SIZE]; + if (length > STACK_BUFFER_SIZE) { + buffer = (unichar *)calloc(length, sizeof(unichar)); + } else { + buffer = stackBuffer; + } + + JNF_ASSERT_COND(buffer != NULL); + [nsString getCharacters:buffer]; + res = (*env)->NewString(env, buffer, (jsize)length); + if (buffer != stackBuffer) free(buffer); + return res; +} + +const unichar *JNFGetStringUTF16UniChars(JNIEnv *env, jstring javaString) +{ + const jchar *unichars = NULL; + JNF_ASSERT_COND(javaString != NULL); + unichars = (*env)->GetStringChars(env, javaString, NULL); + if (unichars == NULL) [JNFException raise:env as:kNullPointerException reason:"unable to obtain characters from GetStringChars"]; + return (const unichar *)unichars; +} + +void JNFReleaseStringUTF16UniChars(JNIEnv *env, jstring javaString, const unichar *unichars) +{ + JNF_ASSERT_COND(unichars != NULL); + (*env)->ReleaseStringChars(env, javaString, (const jchar *)unichars); +} + +const char *JNFGetStringUTF8Chars(JNIEnv *env, jstring javaString) +{ + const char *chars = NULL; + JNF_ASSERT_COND(javaString != NULL); + chars = (*env)->GetStringUTFChars(env, javaString, NULL); + if (chars == NULL) [JNFException raise:env as:kNullPointerException reason:"unable to obtain characters from GetStringUTFChars"]; + return chars; +} + +void JNFReleaseStringUTF8Chars(JNIEnv *env, jstring javaString, const char *chars) +{ + JNF_ASSERT_COND(chars != NULL); + (*env)->ReleaseStringUTFChars(env, javaString, (const char *)chars); +} diff --git a/JSyphon/native_src/jnf/JNFThread.h b/JSyphon/native_src/jnf/JNFThread.h new file mode 100644 index 0000000..6e4151c --- /dev/null +++ b/JSyphon/native_src/jnf/JNFThread.h @@ -0,0 +1,84 @@ +#ifndef JNFTHREAD_H +#define JNFTHREAD_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Functions to help obtain a JNIEnv pointer in places where one cannot be passed + * though (callbacks, catagory functions, etc). Use sparingly. + */ + +#import +#import + +__BEGIN_DECLS + +// Options only apply if thread was not already attached to the JVM. +enum { + JNFThreadDetachImmediately = (1 << 1), + JNFThreadDetachOnThreadDeath = (1 << 2), + JNFThreadSetSystemClassLoaderOnAttach = (1 << 3), + JNFThreadAttachAsDaemon = (1 << 4) +}; + +typedef jlong JNFThreadContext; + + +/* + * Attaches the current thread to the Java VM if needed, and obtains a JNI environment + * to interact with the VM. Use a provided JNIEnv pointer for your current thread + * whenever possible, since this method is particularly expensive to the Java VM if + * used repeatedly. + * + * Provide a pointer to a JNFThreadContext to pass to JNFReleaseEnv(). + */ +JNF_EXPORT extern JNIEnv *JNFObtainEnv(JNFThreadContext *context) API_DEPRECATED("This functionality is no longer supported and may stop working in a future version of macOS.", macos(10.10, 10.16)); + +/* + * Release the JNIEnv for this thread, and detaches the current thread from the VM if + * it was not already attached. + */ +JNF_EXPORT extern void JNFReleaseEnv(JNIEnv *env, JNFThreadContext *context) API_DEPRECATED("This functionality is no longer supported and may stop working in a future version of macOS.", macos(10.10, 10.16)); + + +#if __BLOCKS__ + +/* + * Performs the same attach/detach as JNFObtainEnv() and JNFReleaseEnv(), but executes a + * block that accepts the obtained JNIEnv. + */ +typedef void (^JNIEnvBlock)(JNIEnv *); +JNF_EXPORT extern void JNFPerformEnvBlock(JNFThreadContext context, JNIEnvBlock block) API_DEPRECATED("This functionality is no longer supported and may stop working in a future version of macOS.", macos(10.10, 10.16)); + +#endif + +__END_DECLS + +#endif /* JNFTHREAD_H */ diff --git a/JSyphon/native_src/jnf/JNFThread.m b/JSyphon/native_src/jnf/JNFThread.m new file mode 100644 index 0000000..c5feb27 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFThread.m @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFThread.h" + +#import +#import + +static JavaVM *GetGlobalVM() { // obtains a connection to the current VM + static JavaVM *globalVM; + + if (globalVM != NULL) { + return globalVM; + } + + void *jvmHandle = dlopen("@rpath/libjvm.dylib", RTLD_NOW); + if (!jvmHandle) { + NSLog(@"JavaNativeFoundation: %s: Failed to locate @rpath/libjvm.dylib for JNI_GetCreatedJavaVMs(). A JVM must be loaded before calling this function.", __FUNCTION__); + return NULL; + } + + jint (*_JNI_GetCreatedJavaVMs)(JavaVM **, jsize, jsize *) = dlsym(jvmHandle, "JNI_GetCreatedJavaVMs"); + if (!_JNI_GetCreatedJavaVMs) { + NSLog(@"JavaNativeFoundation: %s: Failed to locate JNI_GetCreatedJavaVMs symbol in @rpath/libjvm.dylib", __FUNCTION__); + return NULL; + } + + JavaVM *vmArray; + jsize numVMs = 0; + if (_JNI_GetCreatedJavaVMs(&vmArray, 1, &numVMs) == 0 && numVMs >= 1) { + globalVM = &vmArray[0]; + } + + if (globalVM == NULL) { + NSLog(@"JavaNativeFoundation: %s: JNI_GetCreatedJavaVMs() failed to get any VM.", __FUNCTION__); + return NULL; + } + + return globalVM; +} + +// private marker to indicate if we need to detach on release +enum { + JNFThreadWillDetachOnRelease = (1 << 12) +}; + +static void setSystemClassLoader(JNIEnv *env) { + // setup the context class loader for this new thread coming into the JVM + JNF_CLASS_CACHE(jc_Thread, "java/lang/Thread"); + JNF_STATIC_MEMBER_CACHE(jm_currentThread, jc_Thread, "currentThread", "()Ljava/lang/Thread;"); + jobject currentThread = JNFCallStaticObjectMethod(env, jm_currentThread); + + JNF_CLASS_CACHE(jc_ClassLoader, "java/lang/ClassLoader"); + JNF_STATIC_MEMBER_CACHE(jm_getSystemClassLoader, jc_ClassLoader, "getSystemClassLoader", "()Ljava/lang/ClassLoader;"); + jobject systemClassLoader = JNFCallStaticObjectMethod(env, jm_getSystemClassLoader); + + JNF_MEMBER_CACHE(jm_setContextClassLoader, jc_Thread, "setContextClassLoader", "(Ljava/lang/ClassLoader;)V"); + JNFCallVoidMethod(env, currentThread, jm_setContextClassLoader, systemClassLoader); +} + +static JNFThreadContext GetEnvUsingJVM(JavaVM *jvm, void **envPtr, BOOL shouldDetachOnRelease, BOOL setClassLoader, BOOL attachAsDaemon) { + jint status = (*jvm)->GetEnv(jvm, envPtr, JNI_VERSION_1_4); + if (status == JNI_OK) { + // common path + return 0; + } + + if (status != JNI_EDETACHED) { + // can't use JNF_ASSERT macros, since we don't really know if we have an env :( + NSLog(@"JavaNativeFoundation: JNFObtainEnv unable to obtain JNIEnv (%d)", (int)status); + return 0; + } + + // we need to attach + if (attachAsDaemon) { + status = (*jvm)->AttachCurrentThreadAsDaemon(jvm, envPtr, NULL); + } else { + status = (*jvm)->AttachCurrentThread(jvm, envPtr, NULL); + } + + if (status != JNI_OK) { + // failed - need to clear our mark to detach, if present + return 0; + } + + if (setClassLoader) { + setSystemClassLoader((JNIEnv *)(*envPtr)); + } + + // by default, we detach at pthread death, but if requested, we will detach on env-release + if (shouldDetachOnRelease) { + return JNFThreadWillDetachOnRelease; + } + + // we don't do anything in this case, because HotSpot on Mac OS X will detach for us. + // Can we install a pthread_atexit handler to detach if we haven't already? + return 0; +} + +// public call to obtain an env, and attach the current thread to the VM in needed +JNIEnv *JNFObtainEnv(JNFThreadContext *context) { + JavaVM *jvm = GetGlobalVM(); + if (!jvm) { + *context = 0; + return NULL; + } + + JNFThreadContext ctx = *context; + BOOL shouldDetachOnRelease = (0 != (ctx & JNFThreadDetachImmediately)); + BOOL setClassLoader = (0 != (ctx & JNFThreadSetSystemClassLoaderOnAttach)); + BOOL attachAsDaemon = (0 != (ctx & JNFThreadAttachAsDaemon)); + + void *env = NULL; + *context = GetEnvUsingJVM(jvm, &env, shouldDetachOnRelease, setClassLoader, attachAsDaemon); + return (JNIEnv *)env; +} + +void JNFReleaseEnv(__unused JNIEnv *env, JNFThreadContext *context) { + if ((*context & JNFThreadWillDetachOnRelease) == 0) { + return; + } + + JavaVM *jvm = GetGlobalVM(); + if (!jvm) return; + + jint status = (*jvm)->DetachCurrentThread(jvm); + if (status != JNI_OK) { + // can't use JNF_ASSERT macros, since we don't really know if we have an env :( + NSLog(@"JavaNativeFoundation: %s: unable to release JNIEnv (%d)", __FUNCTION__, (int)status); + } +} + + +#if __BLOCKS__ + +JNF_EXPORT extern void JNFPerformEnvBlock(JNFThreadContext context, JNIEnvBlock block) { + JNIEnv *env = JNFObtainEnv(&context); + if (env == NULL) [NSException raise:@"Unable to obtain JNIEnv" format:@"Unable to obtain JNIEnv for context: %p", (void *)context]; + + @try { + block(env); + } @finally { + JNFReleaseEnv(env, &context); + } +} + +#endif diff --git a/JSyphon/native_src/jnf/JNFTypeCoercion.h b/JSyphon/native_src/jnf/JNFTypeCoercion.h new file mode 100644 index 0000000..d5735e8 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFTypeCoercion.h @@ -0,0 +1,105 @@ +#ifndef JNFTYPECOERCION_H +#define JNFTYPECOERCION_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Type Coercion system that translates between Java VM objects and Objective-C Foundation objects. + * + * JNFTypeCoercions are registered into JNFTypeCoercers, which can be chained to other + * JNFTypeCoercers using -deriveCoercer or -initWithParent. If the set of Coercions + * in a Coercer aren't capable of converting an object, the Coercer will delegate up to + * it's parent. + * + * Coercions are registered by Objective-C class and Java class name. If an object is an + * instance of the registered class name, the coercion will be invoked. Default + * implementations for several basic types are provided by JNFDefaultCoercions, and can + * be installed in any order. More specific coercions should be placed farther down + * a coercer chain, and more generic coercions should be placed higher. A Coercer can be + * initialized with a basic Coercion that may want to handle "all cases", like calling + * Object.toString() and -describe on all objects passed to it. + * + * Coercions are passed the Coercion-object that was originally invoked on the + * target object. This permits the lowest level Coercion to be used for subsequent + * object translations for composite objects. The provided List, Map, and Set Coercions + * only handle object hierarchies, and will infinitely recurse if confronted with a + * cycle in the object graph. + * + * Null and nil are both perfectly valid return types for Coercions, and do not indicate + * a failure to coerce an object. Coercers are not thread safe. + */ + +#import +#import + +__BEGIN_DECLS + +@class JNFTypeCoercion; + +JNF_EXPORT +@protocol JNFTypeCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer; +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer; + +@end + + +JNF_EXPORT +@interface JNFTypeCoercer : NSObject + +- (id) init; +- (id) initWithParent:(NSObject *)parentIn; +- (JNFTypeCoercer *) deriveCoercer; +- (void) addCoercion:(NSObject *)coercion forNSClass:(Class)nsClass javaClass:(NSString *)javaClassName; + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env; +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env; + +@end + + +JNF_EXPORT +@interface JNFDefaultCoercions : NSObject { } + ++ (void) addStringCoercionTo:(JNFTypeCoercer *)coercer; ++ (void) addNumberCoercionTo:(JNFTypeCoercer *)coercer; ++ (void) addDateCoercionTo:(JNFTypeCoercer *)coercer; ++ (void) addListCoercionTo:(JNFTypeCoercer *)coercer; ++ (void) addMapCoercionTo:(JNFTypeCoercer *)coercer; ++ (void) addSetCoercionTo:(JNFTypeCoercer *)coercer; + ++ (JNFTypeCoercer *) defaultCoercer; // returns autoreleased copy, not shared, not thread safe + +@end + +__END_DECLS + +#endif /* JNFTYPECOERCION_H */ diff --git a/JSyphon/native_src/jnf/JNFTypeCoercion.m b/JSyphon/native_src/jnf/JNFTypeCoercion.m new file mode 100644 index 0000000..8eae113 --- /dev/null +++ b/JSyphon/native_src/jnf/JNFTypeCoercion.m @@ -0,0 +1,480 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "JNFTypeCoercion.h" + +#import "JNFJNI.h" +#import "JNFObject.h" +#import "JNFString.h" +#import "JNFNumber.h" +#import "JNFDate.h" +#import "JNFJObjectWrapper.h" + +// #define DEBUG 1 + +@interface JNFInternalJavaClassToCoersionHolder : JNFJObjectWrapper + +- (id) initWithCoercion:(NSObject *)coercionIn className:(NSString *)className withEnv:(JNIEnv *)env; +- (BOOL) isClassFor:(jobject)obj withEnv:(JNIEnv *)env; +- (NSObject *)coercion; + +@property (nonatomic, readwrite, strong) NSObject *coercion; + +@end + +@interface JNFTypeCoercer () + +@property (nonatomic, readwrite, strong) NSObject *parent; +@property (nonatomic, readwrite, strong) NSMutableDictionary *nsClassToCoercion; +@property (nonatomic, readwrite, strong) NSMutableDictionary *javaClassNameToCoercion; +@property (nonatomic, readwrite, strong) NSArray *javaClassToCoercion; + +@end + +@implementation JNFTypeCoercer + +- (id) init { + return [self initWithParent:nil]; +} + +- (id) initWithParent:(NSObject *)parentIn { + self = [super init]; + if (!self) return self; + + self.parent = parentIn; + self.nsClassToCoercion = [NSMutableDictionary dictionary]; + self.javaClassNameToCoercion = [NSMutableDictionary dictionary]; + self.javaClassToCoercion = nil; + + return self; +} + +- (void) dealloc { + self.parent = nil; + self.nsClassToCoercion = nil; + self.javaClassNameToCoercion = nil; + self.javaClassToCoercion = nil; + + [super dealloc]; +} + +- (JNFTypeCoercer *) deriveCoercer { + return [[[JNFTypeCoercer alloc] initWithParent:self] autorelease]; +} + +- (void) addCoercion:(NSObject *)coercion forNSClass:(Class)nsClass javaClass:(NSString *)javaClassName { + if (nsClass) [self.nsClassToCoercion setObject:coercion forKey:(id)nsClass]; + if (javaClassName) [self.javaClassNameToCoercion setObject:coercion forKey:javaClassName]; + self.javaClassToCoercion = nil; // invalidate Java Class cache +} + +- (NSObject *) findCoercerForNSObject:(id)obj { + NSMutableDictionary * const nsClassToCoercion = self.nsClassToCoercion; + NSObject *coercer = [nsClassToCoercion objectForKey:[obj class]]; + if (coercer) return coercer; + + NSEnumerator *classes = [nsClassToCoercion keyEnumerator]; + Class clazzIter; + while ((clazzIter = [classes nextObject]) != nil) { + if ([obj isKindOfClass:clazzIter]) { + return [nsClassToCoercion objectForKey:clazzIter]; + } + } + + return self.parent; +} + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + return [[self findCoercerForNSObject:obj] coerceNSObject:obj withEnv:env usingCoercer:coercer]; +} + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env { + return [self coerceNSObject:obj withEnv:env usingCoercer:(JNFTypeCoercion *)self]; +} + + +- (NSArray *) javaClassCacheUsingEnv:(JNIEnv *)env { + NSArray * const javaClassToCoercion = self.javaClassToCoercion; + if (javaClassToCoercion) return javaClassToCoercion; + + NSMutableArray *array = [[NSMutableArray alloc] init]; + + NSMutableDictionary * const javaClassNameToCoercion = self.javaClassNameToCoercion; + NSEnumerator *classNames = [javaClassNameToCoercion keyEnumerator]; + NSString *className; + while ((className = [classNames nextObject]) != nil) { + NSObject *coercion = [javaClassNameToCoercion objectForKey:className]; + JNFInternalJavaClassToCoersionHolder *holder = [[JNFInternalJavaClassToCoersionHolder alloc] initWithCoercion:coercion className:className withEnv:env]; + [array addObject:holder]; + [holder release]; + } + + self.javaClassToCoercion = array; + return [array autorelease]; +} + +- (NSObject *) findCoercerForJavaObject:(jobject)obj withEnv:(JNIEnv *)env { + if (obj == NULL) return nil; + + NSMutableDictionary * const javaClassNameToCoercion = self.javaClassNameToCoercion; + NSString *javaClazzName = JNFObjectClassName(env, obj); + NSObject *coercer = [javaClassNameToCoercion objectForKey:javaClazzName]; + if (coercer) return coercer; + +#ifdef DEBUG + NSLog(@"attempting to find coercer for: %@", javaClazzName); +#endif + + NSArray *javaClassCache = [self javaClassCacheUsingEnv:env]; + NSEnumerator *holderIter = [javaClassCache objectEnumerator]; + JNFInternalJavaClassToCoersionHolder *holder; + while ((holder = [holderIter nextObject]) != nil) { + if ([holder isClassFor:obj withEnv:env]) { + NSObject *coercion = [holder coercion]; + [javaClassNameToCoercion setObject:coercion forKey:javaClazzName]; + return coercion; + } + } + + return self.parent; +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + NSObject *coercion = [self findCoercerForJavaObject:obj withEnv:env]; + id nsObj = [coercion coerceJavaObject:obj withEnv:env usingCoercer:coercer]; + if (nsObj == nil) return [NSNull null]; + return nsObj; +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env { + return [self coerceJavaObject:obj withEnv:env usingCoercer:(JNFTypeCoercion *)self]; +} + +@end + + +@implementation JNFInternalJavaClassToCoersionHolder + +- (id) initWithCoercion:(NSObject *)coercionIn className:(NSString *)className withEnv:(JNIEnv *)env { + const char *classNameCStr = [className cStringUsingEncoding:NSUTF8StringEncoding]; + jclass clz = (*env)->FindClass(env, classNameCStr); + if (clz == NULL) [JNFException raise:env as:kClassNotFoundException reason:"Unable to create type converter."]; + + self = [super initWithJObject:clz withEnv:env]; + if (!self) return self; + + self.coercion = coercionIn; + return self; +} + +- (BOOL)isEqual:(id)object { + jclass javaClazz = [self jObject]; + + if ([object isKindOfClass:[self class]]) { + return [((JNFInternalJavaClassToCoersionHolder *)object) jObject] == javaClazz; + } + + return NO; +} + +- (void) dealloc { + self.coercion = nil; + [super dealloc]; +} + +- (NSUInteger)hash { + jclass javaClazz = [self jObject]; + return (NSUInteger)ptr_to_jlong(javaClazz); +} + +- (BOOL) isClassFor:(jobject)obj withEnv:(JNIEnv *)env { + if (obj == NULL) return JNI_FALSE; +#ifdef DEBUG + NSLog(@"is (%@(%@)) a kind of (%@)?", JNFToString(env, obj), JNFClassName(env, obj), JNFToString(env, javaClazz)); +#endif + + jclass javaClazz = [self jObject]; + return (BOOL)(*env)->IsInstanceOf(env, obj, javaClazz); +} + +@end + + +@interface JNFStringCoercion : NSObject { } +@end + +@implementation JNFStringCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(__unused JNFTypeCoercion *)coercer { + return JNFNSToJavaString(env, (NSString *)obj); +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(__unused JNFTypeCoercion *)coercer { + return JNFJavaToNSString(env, (jstring)obj); +} + +@end + + +@interface JNFNumberCoercion : NSObject { } +@end + +@implementation JNFNumberCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(__unused JNFTypeCoercion *)coercer { + return JNFNSToJavaNumber(env, (NSNumber *)obj); +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(__unused JNFTypeCoercion *)coercer { + return JNFJavaToNSNumber(env, obj); +} + +@end + + +@interface JNFDateCoercion : NSObject { } +@end + +@implementation JNFDateCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(__unused JNFTypeCoercion *)coercer { + return JNFNSToJavaCalendar(env, (NSDate *)obj); +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(__unused JNFTypeCoercion *)coercer { + return JNFJavaToNSDate(env, obj); +} + +@end + + +static JNF_CLASS_CACHE(jc_Iterator, "java/util/Iterator"); +static JNF_MEMBER_CACHE(jm_Iterator_hasNext, jc_Iterator, "hasNext", "()Z"); +static JNF_MEMBER_CACHE(jm_Iterator_next, jc_Iterator, "next", "()Ljava/lang/Object;"); + +@interface JNFMapCoercion : NSObject { } +@end + +@implementation JNFMapCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + static JNF_CLASS_CACHE(jc_HashMap, "java/util/HashMap"); + static JNF_CTOR_CACHE(jm_HashMap_ctor, jc_HashMap, "()V"); + static JNF_MEMBER_CACHE(jm_HashMap_put, jc_HashMap, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); + + NSDictionary *nsDict = (NSDictionary *)obj; + NSEnumerator *keyEnum = [nsDict keyEnumerator]; + + jobject jHashMap = JNFNewObject(env, jm_HashMap_ctor); + + id key; + while ((key = [keyEnum nextObject]) != nil) { + jobject jkey = [coercer coerceNSObject:key withEnv:env usingCoercer:coercer]; + + id value = [nsDict objectForKey:key]; + jobject java_value = [coercer coerceNSObject:value withEnv:env usingCoercer:coercer]; + + JNFCallObjectMethod(env, jHashMap, jm_HashMap_put, jkey, java_value); + + if (jkey != NULL) (*env)->DeleteLocalRef(env, jkey); + if (java_value != NULL) (*env)->DeleteLocalRef(env, java_value); + } + + return jHashMap; +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + static JNF_CLASS_CACHE(jc_Map, "java/util/Map"); + static JNF_MEMBER_CACHE(jm_Map_keySet, jc_Map, "keySet", "()Ljava/util/Set;"); + static JNF_MEMBER_CACHE(jm_Map_get, jc_Map, "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); + + static JNF_CLASS_CACHE(jc_Set, "java/util/Set"); + static JNF_MEMBER_CACHE(jm_Set_iterator, jc_Set, "iterator", "()Ljava/util/Iterator;"); + + NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; + jobject jKeySet = JNFCallObjectMethod(env, obj, jm_Map_keySet); + jobject jKeyIter = JNFCallObjectMethod(env, jKeySet, jm_Set_iterator); + if (jKeySet != NULL) (*env)->DeleteLocalRef(env, jKeySet); + + while (JNFCallBooleanMethod(env, jKeyIter, jm_Iterator_hasNext)) { + jobject jkey = JNFCallObjectMethod(env, jKeyIter, jm_Iterator_next); + id nsKey = [coercer coerceJavaObject:jkey withEnv:env usingCoercer:coercer]; + + jobject java_value = JNFCallObjectMethod(env, obj, jm_Map_get, jkey); + if (jkey != NULL) (*env)->DeleteLocalRef(env, jkey); + + id nsValue = [coercer coerceJavaObject:java_value withEnv:env usingCoercer:coercer]; + if (java_value != NULL) (*env)->DeleteLocalRef(env, java_value); + + [dict setObject:nsValue forKey:nsKey]; + } + + return [dict autorelease]; +} + +@end + + +@interface JNFListCoercion : NSObject { } +@end + +@implementation JNFListCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + static JNF_CLASS_CACHE(jc_List, "java/util/ArrayList"); + static JNF_CTOR_CACHE(jm_List_ctor, jc_List, "(I)V"); + static JNF_MEMBER_CACHE(jm_List_add, jc_List, "add", "(Ljava/lang/Object;)Z"); + + NSArray *nsArray = (NSArray *)obj; + unsigned long count = [nsArray count]; + + jobject javaArray = JNFNewObject(env, jm_List_ctor, (jint)count); + + unsigned long i; + for (i = 0; i < count; i++) { + id iThObj = [nsArray objectAtIndex:i]; + jobject iThJObj = [coercer coerceNSObject:iThObj withEnv:env usingCoercer:coercer]; + JNFCallBooleanMethod(env, javaArray, jm_List_add, iThJObj); + if (iThJObj != NULL) (*env)->DeleteLocalRef(env, iThJObj); + } + + return javaArray; +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + static JNF_CLASS_CACHE(jc_List, "java/util/List"); + static JNF_MEMBER_CACHE(jm_List_iterator, jc_List, "iterator", "()Ljava/util/Iterator;"); + + jobject jIterator = JNFCallObjectMethod(env, obj, jm_List_iterator); + + NSMutableArray *nsArray = [[NSMutableArray alloc] init]; + while (JNFCallBooleanMethod(env, jIterator, jm_Iterator_hasNext)) { + jobject jobj = JNFCallObjectMethod(env, jIterator, jm_Iterator_next); + id nsObj = [coercer coerceJavaObject:jobj withEnv:env usingCoercer:coercer]; + if (jobj != NULL) (*env)->DeleteLocalRef(env, jobj); + [nsArray addObject:nsObj]; + } + + return [nsArray autorelease]; +} + +@end + + +@interface JNFSetCoercion : NSObject { } +@end + +@implementation JNFSetCoercion + +- (jobject) coerceNSObject:(id)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + static JNF_CLASS_CACHE(jc_Set, "java/util/HashSet"); + static JNF_CTOR_CACHE(jm_Set_ctor, jc_Set, "()V"); + static JNF_MEMBER_CACHE(jm_Set_add, jc_Set, "add", "(Ljava/lang/Object;)Z"); + + NSSet *nsSet = (NSSet *)obj; + NSEnumerator *enumerator = [nsSet objectEnumerator]; + + jobject javaSet = JNFNewObject(env, jm_Set_ctor); + id next; + while ((next = [enumerator nextObject]) != nil) { + jobject jnext = [coercer coerceNSObject:next withEnv:env usingCoercer:coercer]; + if (jnext != NULL) { + JNFCallBooleanMethod(env, javaSet, jm_Set_add, jnext); + (*env)->DeleteLocalRef(env, jnext); + } + } + + return javaSet; +} + +- (id) coerceJavaObject:(jobject)obj withEnv:(JNIEnv *)env usingCoercer:(JNFTypeCoercion *)coercer { + static JNF_CLASS_CACHE(jc_Set, "java/util/Set"); + static JNF_MEMBER_CACHE(jm_Set_iterator, jc_Set, "iterator", "()Ljava/util/Iterator;"); + + jobject jIterator = JNFCallObjectMethod(env, obj, jm_Set_iterator); + + NSMutableSet *nsSet = [[NSMutableSet alloc] init]; + while (JNFCallBooleanMethod(env, jIterator, jm_Iterator_hasNext)) { + jobject jobj = JNFCallObjectMethod(env, jIterator, jm_Iterator_next); + if (jobj != NULL) { + id nsObj = [coercer coerceJavaObject:jobj withEnv:env usingCoercer:coercer]; + (*env)->DeleteLocalRef(env, jobj); + [nsSet addObject:nsObj]; + } + } + + return [nsSet autorelease]; +} + +@end + + +@implementation JNFDefaultCoercions + ++ (void) addStringCoercionTo:(JNFTypeCoercer *)coercer { + [coercer addCoercion:[[[JNFStringCoercion alloc] init] autorelease] forNSClass:[NSString class] javaClass:@"java/lang/String"]; +} + ++ (void) addNumberCoercionTo:(JNFTypeCoercer *)coercer { + [coercer addCoercion:[[[JNFNumberCoercion alloc] init] autorelease] forNSClass:[NSNumber class] javaClass:@"java/lang/Number"]; +} + ++ (void) addDateCoercionTo:(JNFTypeCoercer *)coercer { + id dateCoercion = [[[JNFDateCoercion alloc] init] autorelease]; + [coercer addCoercion:dateCoercion forNSClass:[NSDate class] javaClass:@"java/util/Calendar"]; + [coercer addCoercion:dateCoercion forNSClass:[NSDate class] javaClass:@"java/util/Date"]; +} + ++ (void) addListCoercionTo:(JNFTypeCoercer *)coercer { + [coercer addCoercion:[[[JNFListCoercion alloc] init] autorelease] forNSClass:[NSArray class] javaClass:@"java/util/List"]; +} + ++ (void) addMapCoercionTo:(JNFTypeCoercer *)coercer { + [coercer addCoercion:[[[JNFMapCoercion alloc] init] autorelease] forNSClass:[NSDictionary class] javaClass:@"java/util/Map"]; +} + ++ (void) addSetCoercionTo:(JNFTypeCoercer *)coercer { + [coercer addCoercion:[[[JNFSetCoercion alloc] init] autorelease] forNSClass:[NSSet class] javaClass:@"java/util/Set"]; +} + ++ (JNFTypeCoercer *) defaultCoercer { + JNFTypeCoercer *coercer = [[[JNFTypeCoercer alloc] initWithParent:nil] autorelease]; + + [JNFDefaultCoercions addStringCoercionTo:coercer]; + [JNFDefaultCoercions addNumberCoercionTo:coercer]; + [JNFDefaultCoercions addDateCoercionTo:coercer]; + [JNFDefaultCoercions addListCoercionTo:coercer]; + [JNFDefaultCoercions addMapCoercionTo:coercer]; + [JNFDefaultCoercions addSetCoercionTo:coercer]; + + return coercer; +} + +@end diff --git a/JSyphon/native_src/jnf/JavaNativeFoundation-Info.plist b/JSyphon/native_src/jnf/JavaNativeFoundation-Info.plist new file mode 100644 index 0000000..3d57226 --- /dev/null +++ b/JSyphon/native_src/jnf/JavaNativeFoundation-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + $(CURRENT_PROJECT_VERSION) + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSHumanReadableCopyright + Copyright © 2008-2020 Apple Inc.\nAll Rights Reserved. + + diff --git a/JSyphon/native_src/jnf/JavaNativeFoundation.h b/JSyphon/native_src/jnf/JavaNativeFoundation.h new file mode 100644 index 0000000..b9ee37f --- /dev/null +++ b/JSyphon/native_src/jnf/JavaNativeFoundation.h @@ -0,0 +1,53 @@ +#ifndef JAVANATIVEFOUNDATION_H +#define JAVANATIVEFOUNDATION_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * This umbrella header should be included by all JNI/Cocoa source files + * for easy building. Use this file instead of importing individual JNF + * headers. + */ + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#endif /* JAVANATIVEFOUNDATION_H */ diff --git a/JSyphon/native_src/jnf/Modules/module.modulemap b/JSyphon/native_src/jnf/Modules/module.modulemap new file mode 100644 index 0000000..bde3b31 --- /dev/null +++ b/JSyphon/native_src/jnf/Modules/module.modulemap @@ -0,0 +1,5 @@ +framework module JavaNativeFoundation [extern_c] { + umbrella header "JavaNativeFoundation.h" + export * + module * { export * } +} diff --git a/JSyphon/native_src/jnf/debug.h b/JSyphon/native_src/jnf/debug.h new file mode 100644 index 0000000..6bb1adc --- /dev/null +++ b/JSyphon/native_src/jnf/debug.h @@ -0,0 +1,57 @@ +#ifndef DEBUG_H +#define DEBUG_H +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * -- + * + * Internal functions to Java Native Foundation. + */ + +#import +#import + +__BEGIN_DECLS + +// +// Debugging support +// + +// prints a stack trace from the Java VM (can be called from gdb) +void JNFJavaStackTrace(JNIEnv *env); + +// dump some info about a generic Java object. +void JNFDumpJavaObject(JNIEnv *env, jobject obj); + +// prints a Java stack trace into a string +NSString *JNFGetStackTraceAsNSString(JNIEnv *env, jthrowable throwable); + +__END_DECLS + +#endif /* DEBUG_H */ diff --git a/JSyphon/native_src/jnf/debug.m b/JSyphon/native_src/jnf/debug.m new file mode 100644 index 0000000..ab359fd --- /dev/null +++ b/JSyphon/native_src/jnf/debug.m @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2008-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "debug.h" + +#import "JNFAssert.h" +#import "JNFObject.h" + +/* + * Utility function to print the Java stack backtrace. + * In gdb, if you have a value for the JNIEnv on the thread + * you want to trace, you can do a gdb "print" of this function + * to get the stack trace for the thread. + */ +void JNFJavaStackTrace(JNIEnv *env) { + jthrowable obj_javaException; + if ((obj_javaException = (*env)->ExceptionOccurred(env)) != NULL) (*env)->ExceptionClear(env); + + jclass cls_Thread = (*env)->FindClass(env, "java/lang/Thread"); + jmethodID mid_currentThread = (*env)->GetStaticMethodID(env, cls_Thread, "currentThread", "()Ljava/lang/Thread;"); + jobject obj_currentThread = (*env)->CallStaticObjectMethod(env, cls_Thread, mid_currentThread); + jclass cls_currentThread = (*env)->GetObjectClass(env, obj_currentThread); + jmethodID mid_getName = (*env)->GetMethodID(env, cls_currentThread, "getName", "()Ljava/lang/String;"); + jobject obj_threadName = (*env)->CallObjectMethod(env, obj_currentThread, mid_getName); + (*env)->DeleteLocalRef(env, obj_currentThread); + + const char *threadName = (*env)->GetStringUTFChars(env, obj_threadName, NULL); + JNF_WARN("Stack trace from Java thread \"%s\":", threadName); + (*env)->ReleaseStringUTFChars(env, obj_threadName, threadName); + (*env)->DeleteLocalRef(env, obj_threadName); + + jmethodID mid_dumpStack = (*env)->GetStaticMethodID(env, cls_Thread, "dumpStack", "()V"); + (*env)->CallStaticVoidMethod(env, cls_Thread, mid_dumpStack); + (*env)->DeleteLocalRef(env, cls_Thread); + + if (obj_javaException) (*env)->Throw(env, obj_javaException); +} + +/* + * Utility function to dump some info about a generic Java object. + * To be called from gdb. Like JNFJavaStackTrace, you need to have + * a valid value for the JNIEnv to call this function. + */ +void JNFDumpJavaObject(JNIEnv *env, jobject obj) { + jthrowable obj_javaException; + if ((obj_javaException = (*env)->ExceptionOccurred(env)) != NULL) (*env)->ExceptionClear(env); + + jclass cls_CToolkit = (*env)->FindClass(env, "apple/awt/CToolkit"); + jmethodID mid_dumpObject = (*env)->GetStaticMethodID(env, cls_CToolkit, "dumpObject", "(Ljava/lang/Object;)V"); + (*env)->CallStaticVoidMethod(env, cls_CToolkit, mid_dumpObject, obj); + (*env)->DeleteLocalRef(env, cls_CToolkit); + + if (obj_javaException) (*env)->Throw(env, obj_javaException); +} + +/* + * Utility function to print a Java stack trace into a string + */ +NSString *JNFGetStackTraceAsNSString(JNIEnv *env, jthrowable throwable) { + // Writer writer = new StringWriter(); + JNF_CLASS_CACHE(jc_StringWriter, "java/io/StringWriter"); + JNF_CTOR_CACHE(jct_StringWriter, jc_StringWriter, "()V"); + jobject writer = JNFNewObject(env, jct_StringWriter); + + // PrintWriter printWriter = new PrintWriter(writer); + JNF_CLASS_CACHE(jc_PrintWriter, "java/io/PrintWriter"); + JNF_CTOR_CACHE(jct_PrintWriter, jc_PrintWriter, "(Ljava/io/Writer;)V"); + jobject printWriter = JNFNewObject(env, jct_PrintWriter, writer); + + // throwable.printStackTrace(printWriter); + JNF_CLASS_CACHE(jc_Throwable, "java/lang/Throwable"); + JNF_MEMBER_CACHE(jm_printStackTrace, jc_Throwable, "printStackTrace", "(Ljava/io/PrintWriter;)V"); + JNFCallVoidMethod(env, throwable, jm_printStackTrace, printWriter); + (*env)->DeleteLocalRef(env, printWriter); + + // return writer.toString(); + NSString *stackTraceAsString = JNFObjectToString(env, writer); + (*env)->DeleteLocalRef(env, writer); + return stackTraceAsString; +} diff --git a/JSyphon/native_src/jsyphon_JSyphonClient.m b/JSyphon/native_src/jsyphon_JSyphonClient.m index d83cfff..24a2ced 100644 --- a/JSyphon/native_src/jsyphon_JSyphonClient.m +++ b/JSyphon/native_src/jsyphon_JSyphonClient.m @@ -1,6 +1,5 @@ -#import -#import // JNI Cocoa helper -#import +#import +#import // JNI Cocoa helper #import #import diff --git a/JSyphon/native_src/jsyphon_JSyphonImage.m b/JSyphon/native_src/jsyphon_JSyphonImage.m index a525365..fe7f0b8 100644 --- a/JSyphon/native_src/jsyphon_JSyphonImage.m +++ b/JSyphon/native_src/jsyphon_JSyphonImage.m @@ -1,6 +1,5 @@ -#import -#import // JNI Cocoa helper -#import +#import +#import // JNI Cocoa helper #import #import diff --git a/JSyphon/native_src/jsyphon_JSyphonServer.m b/JSyphon/native_src/jsyphon_JSyphonServer.m index bc4a820..f7ef21e 100644 --- a/JSyphon/native_src/jsyphon_JSyphonServer.m +++ b/JSyphon/native_src/jsyphon_JSyphonServer.m @@ -1,6 +1,5 @@ -#import -#import // JNI Cocoa helper -#import +#import +#import // JNI Cocoa helper #import #import diff --git a/JSyphon/native_src/jsyphon_JSyphonServerList.m b/JSyphon/native_src/jsyphon_JSyphonServerList.m index 3c61c8d..ad5f6e1 100644 --- a/JSyphon/native_src/jsyphon_JSyphonServerList.m +++ b/JSyphon/native_src/jsyphon_JSyphonServerList.m @@ -1,6 +1,5 @@ -#import -#import // JNI Cocoa helper -#import +#import +#import // JNI Cocoa helper #import #import diff --git a/JSyphon/native_src/tests/vao_test.m b/JSyphon/native_src/tests/vao_test.m new file mode 100644 index 0000000..8a9e9bb --- /dev/null +++ b/JSyphon/native_src/tests/vao_test.m @@ -0,0 +1,41 @@ +#import +#import +#import +#import + +int main(void) { + @autoreleasepool { + CGLContextObj ctx = NULL; + CGLPixelFormatAttribute attrs[] = { + kCGLPFAOpenGLProfile, (CGLPixelFormatAttribute)kCGLOGLPVersion_3_2_Core, + kCGLPFAColorSize, 24, kCGLPFAAlphaSize, 8, + kCGLPFADoubleBuffer, (CGLPixelFormatAttribute)0 }; + CGLPixelFormatObj pf; GLint npix; + if (CGLChoosePixelFormat(attrs, &pf, &npix)) { fprintf(stderr, "pf failed\n"); return 2; } + CGLCreateContext(pf, NULL, &ctx); + CGLSetCurrentContext(ctx); + printf("GL version: %s\n", glGetString(GL_VERSION)); + + GLuint vao = 0; glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + GLint bound = -1; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &bound); + printf("caller VAO bound before publish: %d (expect %u)\n", bound, vao); + + GLuint tex = 0; glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_2D, tex); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 640, 480, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + + SyphonServer *s = [[SyphonServer alloc] initWithName:@"VaoTest" context:ctx options:nil]; + printf("server=%p\n", s); + + [s publishFrameTexture:tex textureTarget:GL_TEXTURE_2D + imageRegion:NSMakeRect(0, 0, 640, 480) + textureDimensions:NSMakeSize(640, 480) flipped:NO]; + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.3]]; + + glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &bound); + GLenum e = glGetError(); + printf("caller VAO bound after publish: %d (expect %u) glError=0x%x\n", bound, vao, e); + return (bound == (GLint)vao && e == GL_NO_ERROR) ? 0 : 1; + } +} diff --git a/README.md b/README.md index fcefbe3..f1af486 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,16 @@ xcodebuild -scheme libJSyphon archive -project native_src/JSyphon.xcodeproj The build step (either from the IDE or the command line) will generate two files: the Syphon framework binary, named simply "Syphon", and the JSyphon JNI library, named "libJSyphon.jnilib". They will be placed inside the "native_libs" folder, where you can then load it in Java using System.load or System.loadLibrary depending on your path setups. We suggest System.loadLibrary. +* Universal (Apple Silicon) build without Xcode: the Xcode project above links + against Apple's JavaNativeFoundation and JavaVM frameworks, which are no + longer available in current macOS SDKs. Run the script + `JSyphon/native_src/build_universal.sh` instead (requires only the Command + Line Tools and a JDK for the JNI headers, set `JAVA_HOME` if needed). It + compiles the Syphon framework and the JNI library from the submodules for + both x86_64 and arm64, statically links the JavaNativeFoundation sources + vendored under `JSyphon/native_src/jnf` (from apple/openjdk, APSL 2.0), + ad-hoc code signs the results and installs them in `native_libs`. + * To experiment with the JSyphon examples, we provide an Eclipse project which you can import into your workspace, and experiment with "ServerTest.java" and "ClientTest.java". Acknowledgments diff --git a/Syphon-Framework b/Syphon-Framework index fc4f4a2..f476167 160000 --- a/Syphon-Framework +++ b/Syphon-Framework @@ -1 +1 @@ -Subproject commit fc4f4a2a71c0a8c7539a91093ad26c0c237602d6 +Subproject commit f4761677a45b8034a3c2069ec0f3d2553da81fba From a5ad31480fa435ea1cc1042eec8b341b89194dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Leischner?= <50262885+trackme518@users.noreply.github.com> Date: Mon, 21 Sep 2026 18:32:17 +0200 Subject: [PATCH 2/2] Restore caller GL state around publishFrameTexture On Apple Silicon (and recent Intel macOS) the OpenGL implementation backs GL with Metal and shares some per-context state (texture unit bindings, blend, VAO/FBO bindings) between contexts in a share group. Publishing a frame draws a quad on the server's context, which silently clobbers state the calling context relies on: after one publish, Processing draws subsequent image() calls with corrupted vertex attributes (flat color or wrong size). - JNI: capture and re-apply the full state set Syphon may touch (active texture unit, 2D/rectangle texture bindings on units 0-3, VAO, read/draw FBO, renderbuffer, array/element buffers, viewport, scissor, blend, current program) around publishFrameTexture. No copies, no sync stalls. - Syphon-Framework: extend SYPHON_CORE_RESTORE in SyphonServerRendererCoreGL drawFrameTexture to also save/restore active texture unit, unit-0 texture bindings, viewport and blend (previously only the target texture binding was restored, and that from the wrong unit when the caller had a unit other than 0 active). --- JSyphon/native_libs/Syphon | Bin 393664 -> 393776 bytes JSyphon/native_libs/libJSyphon.jnilib | Bin 270544 -> 287040 bytes JSyphon/native_src/jsyphon_JSyphonServer.m | 101 ++++++++++++++++++++- 3 files changed, 100 insertions(+), 1 deletion(-) diff --git a/JSyphon/native_libs/Syphon b/JSyphon/native_libs/Syphon index ad5fd542cf0d3edbc95220d6cfc9c962d240ba22..382fe464c1b17504f0027263852c23ad279f390c 100755 GIT binary patch literal 393776 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

_6J|ufonf~ep9$V3H(6ic~w=vegc?>vW{nI)k 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�Fr=Cpb|v?TWn`H7!eJl%r_!RT`^e4C1HVHthC38Y#kHAeUYpXbxJNc1X8 zvT2vAi@jyMamD+HwqYkL=>uT&-LPnrzny1#gfHlq+?e!*%-)!E80j9Ndy$!f_eu8a z2R>f*I>yJKy0U#Or^ckaT*xU!yN9yO@Xc8M7_zoDeGJq*mwApk&nNhmHx_+55Lv&i zL!StB1F)&)?R~rQX8Q@|^y(;Q_R%?Ww}*xXiC|7lp1hkz9~Y*PBS))~JsOdoL}Tdo z<@vKG^mH9v%TUvlfca`5lt@)2X!#uuB~!U&!W5?crUWfQ=<>!URYwe8LH!^0 z-aNj_;`$$d?!5`z0J7y~VKD@7Au1pcHkX|$#IT7y&zWy?ilzVG+UJoi5Lxz9~P+t2Uy`{VL@g_&pO z%$YN1&YU@OX1PTMDw$@S$h75-1y-Ifw1uQ9?tnEW5*EjhRVy-p5E~LVeT1icJq#v7Iaw-p2n5Lnm4q=B^clkG-%XSqd)~ zN_$7;!7Z^eFgx#qzS?%!6;dj+&JcI+e}tmb3=5%x3zo4R3bN!_NWoC@J7O75v@OMk zA}SjbaB4?trGyQ||DP5FQ&2SW-UCj#cCh!bwBrFMCT>#Lp}-3>I=p57LAg%!c4T`a zTvMsZd1hdT6wT>aq^+gGTJ~R}=tLu-kOQgYU>2s#OCQ{x5D5 zcU*>0Vh0)%u5@}|d(m|l-CQ;oCzsUfKj;JxZK^!7T!IbVr6oBt0!~*%AStw#cEfo|eY#&;#bf#}h#SLwhn90BThUD?n^$EavJA8-cvHn}_X^#ig*s+V;hbC5(S1d^XHX>pEL z+^GsYuMx2kipJ3s@>h%+M;eD*f|nCQj`93p$OI5=Ht0<2#o&@uEk$u(CL*x1&zG5D zq{+@JL4jhyq`=O9NA#zI6=OyV`e)|J4g4V!97D`(DUoN~hKw3_-stoWdtqq@y)b5U ze#w7PDNa9>EG=AsYo&{d3Qfd>rjM8)eDh&~ItGIJUsP@q`Sf%pcO5jB@@|Mqx(%zZ z>>O7i+oRI+i)BwuXtz+XLfaDJC55x{vu9-H<>lkugsHP87E z&dNWlBj~g8r_IcplQ}bca%b_IN?e_pJ1sM7#^erZk`3q#J?&F3h1+PUiINDsi3lH& z^3W2I=?;anr&?T5>6q9Mu<#l~vLncXfZ@3iqqcSkGJ{3tU>HUdXc+TsfM@5vm zTHYK(0K;G+wA4&qJFS2z6M8evXt{|_i%%LREsjEiN6D2D~;Jk~=p2HQ+{|3_%TJVWYaOeD%Aq4Ly?Emh({ztbt* zjwo0cnH@+%JK*+$5MIDu4y z0%3w=cC&X_$i4;k#UixA9=H=N$(eDQt*|Z7ehbV+>}AX#KM2`DJA;6oXro+y2a9wd zZ3Z#z6l=e|)`A_h#R}eu7K#1U)9koNW!i5`NU07QqF{xSej3mQ6k(Vve?&gF64jH< z_Mmb_HzHr`Cw2;QuG-nP1rB&;N94<$S{o|OFt`>cE`jg`_4YxF!yUEl7g%P!L)lRc z@|>>mOnE4~?0vo?@+(&H%x7fGVV2B@{AF^(?msJaS~V>IcjZ&`kvL^T-c9n=q|>TM zvikHnA$lkiH+)yXCwCe&24&&2im49H=9@*QRj@4Z%o?5+I}JJoFVz*@(=RAC`cJD^ zq#wksgw9t7H#-KGGehUmEBJORFg&_}@oqjH4lcuqIU=98*gFN-jt*5-2a$$8IMfb$V~*;83InWT8VtxX`M{5T)d5H12s|9i zw|Y7Rt1QJU>T~hl+WZbdg=Xj+6y824i_qf%Ct`;r$|Y4m7}Y_shy)nmOU2PLyw+f& z4a^R`$if>61;x!#*)h6^{0YS;z#=jz6jt11!i3j80m7*VKH&gvWGW5ztSDPrxg3sM zJP^qDp~Hupq`&~bxeyQEDGKB}9=6j-XrYd~z(B7Ii+1`p6!T&nhM$cN#tEp7Y43=8 zk_h^_U=&3h17@g5quC6ze7U{on_&VE9oRC{3>h>V)HAPk%{CV(q-j!CxoQsHm$vO+ zGq7TRM>sp+y2J<}2|blC0#}ZWq{ubc6zjlriCA4nrc19-S8S>U*Wb7u`c_j;ZqAk)~5r!L&+82taJZ-0zF!03~)9nn0 zps6RXe?=xa2)V*^tE)5cRI|7?L$8l<8LYixhIa^-rMegv8QSn1NcRwp+L9FzlSqnP za>rT-V;id5a%rXWbyh4ZES!>MYq{Fj#{$_r*ezds>wHb7>ua4a6mo6mG>XZ!>1j2L z+%H?Sd|57RpZ}=fETm6Q zr=YkM)ww$41*wi<4QE<=i>AC~jl2j)=?xU@dLT!R?f{fP`WQ zciBY56cMyNj8b+wi8BP)g4J-&L`G$S2rX}RqC`Yt17wTE@P~AS$O31JD@5+X57|Jg zE+HbuyNZ+W3k7*)^YA(W64XsULNO}t`Qi88PyM~eE=`N|BI?2)|DAFF2VRFpn?Ov&5{ zC1Xp*j2b(-aNM|(@uS8S-ZY_b^!VaY6SPNHrPj=RzNF{!l|PA{Ub{7SX1RCg+x?#z z-txitpC@Je?+hT05Lr`x^XNf`kBk{{&e2a_ey8n{ozFQFS4?d`1Iw+zH8e&a!%zt$Nu>C1z%ip+oqOYD}VS=+>KXEaa{N0z(M!7Uh;hG+PUdn zev$T@ZC9`^yuWDFwM9LDdDWbM_5AnCwF&3xc`J7PlJ zYcHI*>b`lYeXbhd((n2vA>DD}iC)c3Qx?wuOUhT54e#G`;0<5s>yA#`^y-#(pYz@S zz`7l;PCaM!?yo+7C!wZ$!{rBeI%7V$<>&=@4?WcNR~O%y__r%tu35e0#>uYk_uM-0 ziaXyr@AvDg?--Cj=wIi1C#Bx^k7X}hdiAzXUcUd+efq_1Bj*k8a`?g9H-C58i+|hS zEU%PrC0dExW4tow8qEeet0ur#}BqdgW)` zM!t7y_-%d9I-HO-GO2gwKM%##zVuP?Bdvd!G_1I!Pv4Y(96oye(nGJjT~o8Ayl&yF zP3KM+_`9t+ePjD1x76+Z&G>g8yY<7jXXXuGeA_dxeUyK=f58tb(gtohG^={uxm|Cc z`+nx|_>X_LdEKdJ7N7j;^}h8-FZ*i4eU~3O@2RH~Hr|uEcR-i){gWO)IeKLCCRcO* z<9|I_d)=PtpA7jbeSBN|$!)!!_-k&#U5|L`GQK*$=k(@>YF6c5^37cd#TR~BoL4gC z7k})r?z5*H<)=#0^Lxbk_UE5HH};axvP#|@SyA?J%7ZTsz45h;6Yt+UyZ?rQp<}LU zx@O>?{?>NO!_BjXytT&oYgX==8^ZO7r(WxJf`nGGp@M6+xyYINk=@%8`^$3 zc#wa}!G~V#G2!;a(TAS;-S5ZU(J$`T$2LBC`1_{Ci>CMP`SHhfulV2i>zCy(|L*5c ze7imUoQi!bvpIpf0HU)ef);Pu&8y3M7d^K5<411j@q>cv-eSd}x!G=|TF4FTb>8!QzsoNVno!|01C^?Lvi*-)4MT z7=4S1%8P?UTJbf$BJrh?!T85-@+P)k3#zNH8;zB|B2`YKl~4yW&r_+}^!{I>Ri8F_yG@`X2-Eu5QQ zw(zD!$gtw`43hL6Rzkw>_V7_mlL4EbKPhugW`6dpnR!wh7~?-f)o%GFdj7@Xj~WH- zTomM5WPD!0ihsbTNEDwOersip_&-0tVi6lzR+)d(@`c4=^m!FMQk!WSzs>kam-!#Y zg{5CZ+gqdXU8s=o+lA{VU~Og0`$IJ(pNh~rt#a1 zF9<1P3g5Dl1xrhA!nA9}xAo@|U#glf_-)1q@iw|#AT;QsekVpNzJ@Il-vq@*ew*a7HV z-xm5rIpe?l`~WIjd=0-=_*4OYw~w!AS)N zZRX{ZCry*Hg{JLNkV>A7?+deJI{!E0Is@Mq;*Vy786soBqQbc)OY;{OR+f&;TeY}! z(Lz9I8pPR4c;elP4%zyKLz|#%HYPXkacFKJJ^ZmlYd}8xjJT)%1=!J`M^l_y^W&P< z9ci=i$A8rI{2Pq;l?Y!DsrLU(?eEk)<_0LR0SH-7uWduWzW+y~a(}*XNqNhrTa!m4 zEfs&V2x^V(FXFPVj>epayx#aT{?WX<7JtM=+6~Tt2g@o;Dn`yID_UB(bk)cyOJOwK zylCnCWh1i}6)!3rag&iS^6HYM%gUe^MrO(^frWSr6gG*M6gjkZ@J^eRw|wbMg~cWI zxC7b1Bkk-^x;w-_YjMfKoEi4WWuC%YfH1(1n7=zUXS;M~FIrl1b=lmKMfRuz*}!T; zw{tlNZx{a+C6$E>>~V{%0Nw(`47y`tH^pn(1&((3J!R4Ig&6ecIy>aqBZK*h?g=LR zn)W%qK=<-xOGhp!E8-t5i4mD2=B`2g zk=6xubggTB)8RYriq%iJV)SD!mwwdc)K8*qjR^f{QzP1T5+Ul?>b@h#e{!g+j&Vob zB!Ao3sOd!5=i43|ZX zE^SL&yyidNRr3qDOEdf$;GiFCvbisSYD7pF!tO$N0wL-9wMdKC zcc{FVMVN^G$pOEnfNzuQTJk5=fsejjuKaygxg!6LgKtM&4*dMrQ*Dc`{Rk z3Hl6#qCI!#_+K7+v24$lN&ebw$KIfnZ-e z3U5;D1ND2#Z*JLDKE8$Hd^pl~;hTNv8KJHJ1aZpOc}TA^xLMEV z2ubUHRac7$6Lmkrlc1lnmn38_K|dn$Jo>*x7_Wb=U=N8f31ejj`s{M_-E{Qfw7OIC zrq;D(yM*jO^?Rs$S?Ak;XPv)Qc#eVRZR;G+PfnC|0Y?n_Jr+99;iInAYBk@RfMt1( zgFnSJf536;?VBNV$bPizK%VBi7h{a${diaEoCJN3z@MnI>?;l}-P=FI-;|V5ues(u z<$xagyqG#HL3aV?8qhGPhc+s+wQUada>n^`d~H)S{t991>dByO5@^gu`?BglvuInW z&UQeTqMf}n{F_n6yGipE;;(hJ)Wvt46RzXgzO{fYKzj_hhXJPn2gm7;&elBbjAbeNbQp-VZAv?EjeLp5(Mb<-1=Q#k*v0v_rnLnn#x zhH+5<9V~T|M|VKiBVEwN^eL1%@Y&EOoa>+)Jw{o0!tZsUjuND`t<&}z^PkASFUQ|# z=%yQ`Zps#I$prr+=_RM=1L}wzz^=vk%F=rI*suSFPQu(h&VzQrkdid`a{R}PItpbS z)E8+e%f4i}(TG#m7;P|kC~&7|_$fo=(>>>Lu667^ag77A0-IyC3-hc7IgSzYtJLdG zeXzne2%%`_h8+KKgN71GLmcu5zpJaZZD%*Fo^aanDgHx{Rnj*PZQ0y2!(ZDIdI9=~ z@T74!`f76`(i3I6OQd5yMOX_Nd#SJH{~kC5KK~T|*_cb%w@&1%xwav;Y_fkH_*U%g zCC13lz^|jwL!6WTg|fA%_i3kggfT?C{{%eodLhd! zUx)fISEMukDe@A*H#ho%Z7FSQ6EORbPMP^cl$CSzUXd2BzpwKCAVSX3+2C~+#wBFJ zWj7|FLsB*0p8;QhI;y}o_G`fq%}4yQU*-60XPj--z^lJNw%MjvP>wi)Jc`$!7dpeE zKPPa;>uquzY;~h=t>f`Qz*uGJ=mj>q0dzkPSkj$}aaoFfg-coSJzoD2>SW#;$iUr% zLz@g8QVYG&1R6C@h95G&&FQ8-8MKdWhTjcaakHyG=Gqv27H~t38{ClBolf_mT8FTS1<#KSbx0ea4C5)Ax;_cE zQzGoucww)OLRt9mJpyk6>`!5<#_OvfAME2FAfMwe7V;`>js*QeqItzaZdOxJ^hkiSN zIfmacPH*lZj4>~C0hEp2JRrj#4_wI@JB*VjgB6f7MFxsXy$- zBt2Wz=?3m^frEC-FVW8hF3gRfaX;WT;rlz}HM$1q$ARNhr#7B_iS5I~t6kIu19XS5 zJ^Sm=fu2)<^+GG0HQBM#*$J8RwT+mJPo5$3k&OKbqJ;wPi zR*ntMHL$Z5B9AoJ_A%COh8|DWx1c>754Qk@;~|Z@9=4RXznov@Bc1(JhVWsev#%K6 z#kFbU`M%YNkCQegi&S*(urpd^Uu(>i}91$Rn0BQdbKKl zl`1dB&pK^O<2uKd{TS;UHykr595dauZL|wpFg^!h9&3)z@DGHX2%LpoeThcAs;e&< z@pz6Yz{oK*FfgVDqORs%SgWpDCT#wBiiUKgQ(pJGlJ&npW;iAqUH$a4k$!_~zf7XETT zYbjs~ZjpWq7<=nkWX3ijIr8~W*V!R7^^JP(Re*N1nUGF+ln@;Cz*2R(ceWK2F+|Q{5e~(K;BlX z+NGn<7^h#s3qJzmJJJ4Mo63EFIB{)9NZxV0sQJ6bq1MNnkY{IiSZ!+Q6VUV`O&edZ z$>H09a+O0Qt+j|3AiidZ=6@VKdNr4}jXI^ddxk#&#B`SZtl*Pgb_^*~qI#p7%UC&XW}^?fYJwQ<3)t!bj1*0pf1`T z0`80)|Hpt^3!UR~W%%L$^Jio$e}bdGukn20PiRQ1qCWvX#POQ{3-mXAf34_~YREC> ze8_`a{}On9O1XAvM^3_i6!ju4!J&;OKSA4XY!FH?Im2l^W0 zReLgH&>m;qu|X^sufGa-jCFrgu?AUA)K3it?}ldhe}!~WXP+GZy@;>HJV!pofWF_N z{lY$ko*D1Z#%{--2km10I{`~yC1oiavOT`7EuB0jZmbz|zrolZ3*SWb5Qi@f-)_gj z9h)_6tN}9=XmlizXoQcl3OIK5)Rr_t_hN0i z1Uhrh&Mw-LjrgV==SH1eAFoH8bzTBKV=O|hJ$fc|C~Y~y^+cPPZ>(jwwx2gd^U(iM zijY2xVuWsYR-FdDa($TnTRFQ9JoOzP9PGFEus6{b z>YJ%?L)XM%-aQE20zXJYmew15aqHL7E`q-c@Iv2m&NloYLQjMD?h8>4_E;Hsp9+6y z9Ol_H-`T=%c@J<+cf|S*KJTb&RDMh1O#-c)bB#5AqIy-MYit@(1^}`P4ty_WDJa0XPvZp(5y_9M*Z()9>Y++2)--Y}F%+bc! z2w&sNbu{gShf)7SeYN^(j5&9#=BpOIB9Gn|az&Xma6AARFpopFf#vT+dCD{O7ws>W zxgBZCgpUVf1++-H3eKNqJS;;zl>$$^{weUJVvR5x^OU9=$?v(KLGk8 z>@=<|ntN&Ww8Kd!b=c6Ge7XCSjllF~k?zr5NN+$o^$+yel9=R-TdFW`w4wY7r#ALx z;oD2n%K?w|QvDw2T$cYF-}KvaKD-j~TKF`%M{=QvXCR)W4_EOgRk(kQ=F0?+9>Okm-w|Pg{ze> z9B>HTW|e8jg_^H+i7$69U<Xx$j_k;}ft{B#R&QT`e+9%1kLQqjL-kXATa#?Ml9S=(d9PaLFU*iSNc zl!8CRb7~N2i`R#}7fd^VG=ml^->yMjVfA26u=>c4V!l2GK2Ro`(C^;9zTCbjyRj$w z2Jt%7QTXE@Kg2lKsOtv$a$hDbkTIrhMBHvo)|O5Cz=639cHS)b<5y#U$>qR$Cl>X^ zpgtG;jB@YWs2BF&`X*KHy@*rx_8`1{MM_=?XyA7fWcdy6T8{19R>CVf)*#-xdJ^i& zMx9xhPcau}+xw**8IYHkYjXdDGG=+XWstC)>Q^FcZ_IOjxfye)`&r6>qmFUM$Jk@d z)_i{86f%JQ`1CIHy?gY3q{x0sD)eH{W_-&&eA7NbHHQkIZwb?=V3JF`^@Yyld)epY zEqSx+shZp^h!>Wx+)<186^K($aUZ$>`=2gtWy)FjYjbJ!8Q2;mBOmMEbnMSyKZSO4yuJ@G#}G2!AnN0ou-}V|TwykZu@PosT^jFYNc}YQDCDILg zxy}@HT6oPm24g*C&}?n*cbwkGhj0na@w3z}#{IYCzq>THG& z+K+Y9N$l(N|GsUz8~%ztpzR>i+;ND5pX1^*p1blS0vGFk2zW?~b^bav@3)(mq-Y*% zpBi%~`-podUX*_beVYd#bOC59$M-JKR|;Ebvs0@_=�}3hP>lJi@F&{`H7U`r`%t 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 Vh$Rq9AeKNZfmi~u1U5+m{|5?B;tBu& literal 393664 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�U!Y(t?r{FuMJPto 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 Tz}0}O0apXA23!sNw;K3AFe-6j literal 270544 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\$L++@k_SiHuaGsBtLP!Gw_>@ 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

#>dgGgg>_h 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 #import +#import +#import #import #import +#ifndef GL_TEXTURE_BINDING_RECTANGLE +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#endif +#ifndef GL_TEXTURE_RECTANGLE +#define GL_TEXTURE_RECTANGLE 0x84F5 +#endif +#ifndef GL_VERTEX_ARRAY_BINDING +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#endif +#ifndef GL_VERSION_3_0 +extern void glBindVertexArray(GLuint array); +#endif + +// The Syphon server draws through its own (share-group) context. On Apple's +// GL-over-Metal implementation some per-context state is shared between +// contexts in a share group, so the publish can clobber state the calling +// (Processing) context relies on. Capture the state Syphon may touch and put +// it back after each call that draws. +#define JSYPHON_TEXTURE_UNITS 4 + +typedef struct { + GLint activeTexture; + GLint texture2D[JSYPHON_TEXTURE_UNITS]; + GLint textureRectangle[JSYPHON_TEXTURE_UNITS]; + GLint vertexArray; + GLint renderBuffer; + GLint readFramebuffer; + GLint drawFramebuffer; + GLint arrayBuffer; + GLint elementArrayBuffer; + GLint viewport[4]; + GLint scissorBox[4]; + GLboolean scissorTest; + GLboolean blend; + GLint program; +} JNSyphonGLState; + +static void jsyphon_gl_state_save(JNSyphonGLState *state) +{ + CGLContextObj cgl_ctx = CGLGetCurrentContext(); + glGetIntegerv(GL_ACTIVE_TEXTURE, &state->activeTexture); + for (GLint unit = 0; unit < JSYPHON_TEXTURE_UNITS; unit++) { + glActiveTexture(GL_TEXTURE0 + unit); + glGetIntegerv(GL_TEXTURE_BINDING_2D, &state->texture2D[unit]); + glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE, &state->textureRectangle[unit]); + } + glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &state->vertexArray); + glGetIntegerv(GL_RENDERBUFFER_BINDING, &state->renderBuffer); + glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, &state->readFramebuffer); + glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &state->drawFramebuffer); + glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &state->arrayBuffer); + glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &state->elementArrayBuffer); + glGetIntegerv(GL_VIEWPORT, state->viewport); + glGetIntegerv(GL_SCISSOR_BOX, state->scissorBox); + glGetBooleanv(GL_SCISSOR_TEST, &state->scissorTest); + glGetBooleanv(GL_BLEND, &state->blend); + glGetIntegerv(GL_CURRENT_PROGRAM, &state->program); +} + +static void jsyphon_gl_state_restore(JNSyphonGLState *state) +{ + CGLContextObj cgl_ctx = CGLGetCurrentContext(); + glUseProgram(state->program); + glViewport(state->viewport[0], state->viewport[1], state->viewport[2], state->viewport[3]); + glScissor(state->scissorBox[0], state->scissorBox[1], state->scissorBox[2], state->scissorBox[3]); + if (state->scissorTest) { + glEnable(GL_SCISSOR_TEST); + } else { + glDisable(GL_SCISSOR_TEST); + } + if (state->blend) { + glEnable(GL_BLEND); + } else { + glDisable(GL_BLEND); + } + glBindRenderbuffer(GL_RENDERBUFFER, state->renderBuffer); + glBindFramebuffer(GL_READ_FRAMEBUFFER, state->readFramebuffer); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, state->drawFramebuffer); + // Rebind the VAO before the buffer bindings: element array binding lives in the VAO + glBindVertexArray(state->vertexArray); + glBindBuffer(GL_ARRAY_BUFFER, state->arrayBuffer); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, state->elementArrayBuffer); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, state->texture2D[0]); + glBindTexture(GL_TEXTURE_RECTANGLE, state->textureRectangle[0]); + for (GLint unit = 1; unit < JSYPHON_TEXTURE_UNITS; unit++) { + glActiveTexture(GL_TEXTURE0 + unit); + glBindTexture(GL_TEXTURE_2D, state->texture2D[unit]); + glBindTexture(GL_TEXTURE_RECTANGLE, state->textureRectangle[unit]); + } + glActiveTexture(state->activeTexture); +} + JNIEXPORT jlong JNICALL Java_jsyphon_JSyphonServer_initWithName (JNIEnv * env, jobject jobj, jstring name, jobject options) { jlong ptr = 0; @@ -74,8 +169,12 @@ JNIEXPORT void JNICALL Java_jsyphon_JSyphonServer_publishFrameTexture(JNIEnv * e GLuint textureID = texID ; GLuint textureTarget = texTarget; SyphonServer* server = jlong_to_ptr(ptr); + + JNSyphonGLState state; + jsyphon_gl_state_save(&state); [server publishFrameTexture:textureID textureTarget:textureTarget imageRegion:rect textureDimensions:size flipped:(isFlipped == JNI_TRUE)]; - + jsyphon_gl_state_restore(&state); + JNF_COCOA_EXIT(env); }