bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_info_holder.java | 19 ++++++++ bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_proxy.java | 23 +++++++++- bridges/source/jni_uno/jni_bridge.cxx | 4 + cppu/inc/uno/mapping.h | 10 ++++ cppu/source/uno/lbmap.cxx | 15 ++++-- javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java | 19 +++++++- javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java | 19 +++++++- 7 files changed, 100 insertions(+), 9 deletions(-)
New commits: commit 79f94fee9ea3c223ddd4035916a0fb4f1a123fb3 Author: Tor Lillqvist <[email protected]> Date: Fri Sep 21 14:33:25 2012 +0300 There is no java_uno library to load in the disable-dynloading case on Android Change-Id: I350aeeb7fb1e00b201077883dd5fd601b42a626b diff --git a/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_info_holder.java b/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_info_holder.java index bdde4f8..4285ecc 100644 --- a/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_info_holder.java +++ b/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_info_holder.java @@ -1,3 +1,4 @@ +// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- /* * This file is part of the LibreOffice project. * @@ -24,6 +25,22 @@ import com.sun.star.lib.util.NativeLibraryLoader; public final class JNI_info_holder { static { + if (System.getProperty("java.vendor") == "The Android Project") { + // See corresponding code in + // javaunohelper/com/sun/star/comp/helper/Bootstrap.java for more + // comments. + + boolean disable_dynloading = false; + try { + System.loadLibrary("lo-bootstrap"); + } catch (UnsatisfiedLinkError e) { + disable_dynloading = true; + } + + if (!disable_dynloading) + NativeLibraryLoader.loadLibrary(JNI_info_holder.class.getClassLoader(), + "java_uno"); + } else NativeLibraryLoader.loadLibrary(JNI_info_holder.class.getClassLoader(), "java_uno"); } @@ -41,3 +58,5 @@ public final class JNI_info_holder finalize( s_jni_info_handle ); } } + +// vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_proxy.java b/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_proxy.java index 0b19ba6..31861d6 100644 --- a/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_proxy.java +++ b/bridges/source/jni_uno/java/com/sun/star/bridges/jni_uno/JNI_proxy.java @@ -1,3 +1,4 @@ +// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- /* * This file is part of the LibreOffice project. * @@ -30,8 +31,24 @@ import com.sun.star.uno.IQueryInterface; public final class JNI_proxy implements java.lang.reflect.InvocationHandler { static { - NativeLibraryLoader.loadLibrary(JNI_proxy.class.getClassLoader(), - "java_uno"); + if (System.getProperty("java.vendor") == "The Android Project") { + // See corresponding code in + // javaunohelper/com/sun/star/comp/helper/Bootstrap.java for more + // comments. + + boolean disable_dynloading = false; + try { + System.loadLibrary("lo-bootstrap"); + } catch (UnsatisfiedLinkError e) { + disable_dynloading = true; + } + + if (!disable_dynloading) + NativeLibraryLoader.loadLibrary(JNI_info_holder.class.getClassLoader(), + "java_uno"); + } else + NativeLibraryLoader.loadLibrary(JNI_proxy.class.getClassLoader(), + "java_uno"); } protected static ClassLoader s_classloader = JNI_proxy.class.getClassLoader(); @@ -204,3 +221,5 @@ public final class JNI_proxy implements java.lang.reflect.InvocationHandler && m_oid.equals(UnoRuntime.generateOid(obj))); } } + +// vim:set shiftwidth=4 softtabstop=4 expandtab: commit f09f52e4add4999264bbf960a3a7af6a6b7a8285 Author: Tor Lillqvist <[email protected]> Date: Fri Sep 21 14:29:16 2012 +0300 Need also uno_ext_getMapping for Java when DISABLE_DYNLOADING Change-Id: I65f09e54c80df4e96e24548692eeb3a57e1de517 diff --git a/bridges/source/jni_uno/jni_bridge.cxx b/bridges/source/jni_uno/jni_bridge.cxx index f8fdbce..f9cfffc 100644 --- a/bridges/source/jni_uno/jni_bridge.cxx +++ b/bridges/source/jni_uno/jni_bridge.cxx @@ -474,6 +474,10 @@ void SAL_CALL uno_initEnvironment( uno_Environment * java_env ) machine->acquire(); } +#ifdef DISABLE_DYNLOADING +#define uno_ext_getMapping java_uno_ext_getMapping +#endif + //------------------------------------------------------------------------------ void SAL_CALL uno_ext_getMapping( uno_Mapping ** ppMapping, uno_Environment * pFrom, uno_Environment * pTo ) diff --git a/cppu/inc/uno/mapping.h b/cppu/inc/uno/mapping.h index 7d02179..1f3828a 100644 --- a/cppu/inc/uno/mapping.h +++ b/cppu/inc/uno/mapping.h @@ -193,6 +193,16 @@ void SAL_CALL CPPU_ENV_uno_ext_getMapping( struct _uno_Environment * pFrom, struct _uno_Environment * pTo ) SAL_THROW_EXTERN_C(); + +#ifdef SOLAR_JAVA +/* This is the uno_ext_getMapping function in the Java/UNO bridge */ +void SAL_CALL java_uno_ext_getMapping( + struct _uno_Mapping ** ppMapping, + struct _uno_Environment * pFrom, + struct _uno_Environment * pTo ) + SAL_THROW_EXTERN_C(); +#endif + #endif #ifdef __cplusplus diff --git a/cppu/source/uno/lbmap.cxx b/cppu/source/uno/lbmap.cxx index 2720811..e6892d4 100644 --- a/cppu/source/uno/lbmap.cxx +++ b/cppu/source/uno/lbmap.cxx @@ -329,6 +329,11 @@ static uno_ext_getMappingFunc selectMapFunc( const OUString & rBridgeName ) { if (rBridgeName.equalsAscii( CPPU_CURRENT_LANGUAGE_BINDING_NAME "_uno" )) return CPPU_ENV_uno_ext_getMapping; +#ifdef SOLAR_JAVA + if (rBridgeName.equalsAscii( "java" "_uno" )) + return java_uno_ext_getMapping; +#endif + #if 0 // I don't think the affine or log bridges will be needed on any // DISABLE_DYNLOADING platform (iOS at least, possibly Android), but if commit e5045bea0ab261e47c2829d33cd8e383dfb8e684 Author: Tor Lillqvist <[email protected]> Date: Fri Sep 14 15:01:30 2012 +0300 Adapt for DISABLE_DYNLOADING possibility also for Android Change-Id: Ie1ff96b6f58bf694b8d08a3316144becaaefe6d9 diff --git a/cppu/source/uno/lbmap.cxx b/cppu/source/uno/lbmap.cxx index 25d38b6..2720811 100644 --- a/cppu/source/uno/lbmap.cxx +++ b/cppu/source/uno/lbmap.cxx @@ -329,11 +329,11 @@ static uno_ext_getMappingFunc selectMapFunc( const OUString & rBridgeName ) { if (rBridgeName.equalsAscii( CPPU_CURRENT_LANGUAGE_BINDING_NAME "_uno" )) return CPPU_ENV_uno_ext_getMapping; -#ifndef IOS - // I don't think the affine or log bridges will be needed on iOS, - // and DISABLE_DYNLOADING will hardly be used elsewhere, but if - // somebody wants to experiment, need to find out then whether - // these are needed. +#if 0 + // I don't think the affine or log bridges will be needed on any + // DISABLE_DYNLOADING platform (iOS at least, possibly Android), but if + // somebody wants to experiment, need to find out then whether these are + // needed. if (rBridgeName.equalsAscii( "affine_uno_uno" )) return affine_uno_uno_ext_getMapping; if (rBridgeName.equalsAscii( "log_uno_uno" )) commit 41e8c36d09c865f21feb465337e56e3e524c9e29 Author: Tor Lillqvist <[email protected]> Date: Fri Sep 21 14:23:24 2012 +0300 No juh library to load in the disable-dynloading case (on Android) Change-Id: I6a5eefe86e23499b555b34c6ba2ebe131e109304 diff --git a/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java b/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java index 44fcb4a..8f0bc29 100644 --- a/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java +++ b/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java @@ -1,3 +1,4 @@ +// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- /* * This file is part of the LibreOffice project. * @@ -31,7 +32,22 @@ import com.sun.star.uno.RuntimeException; */ public class RegistryServiceFactory { static { - System.loadLibrary("juh"); + if (System.getProperty("java.vendor") == "The Android Project") { + // See corresponding code in + // javaunohelper/com/sun/star/comp/helper/Bootstrap.java for more + // comments. + + boolean disable_dynloading = false; + try { + System.loadLibrary("lo-bootstrap"); + } catch (UnsatisfiedLinkError e) { + disable_dynloading = true; + } + + if (!disable_dynloading) + System.loadLibrary("juh"); + } else + System.loadLibrary("juh"); } private static native Object createRegistryServiceFactory( @@ -157,3 +173,4 @@ public class RegistryServiceFactory { } } +// vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java b/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java index c5918e6..a9cfe46 100644 --- a/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java +++ b/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java @@ -1,3 +1,4 @@ +// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- /* * This file is part of the LibreOffice project. * @@ -45,7 +46,22 @@ public class SharedLibraryLoader { public static final String DEFAULT_IMPLEMENTATION = "com.sun.star.comp.stoc.DLLComponentLoader"; static { - System.loadLibrary("juh"); + if (System.getProperty("java.vendor") == "The Android Project") { + // See corresponding code in + // javaunohelper/com/sun/star/comp/helper/Bootstrap.java for more + // comments. + + boolean disable_dynloading = false; + try { + System.loadLibrary("lo-bootstrap"); + } catch (UnsatisfiedLinkError e) { + disable_dynloading = true; + } + + if (!disable_dynloading) + System.loadLibrary("juh"); + } else + System.loadLibrary("juh"); } private static native boolean component_writeInfo( @@ -148,3 +164,4 @@ public class SharedLibraryLoader { } } +// vim:set shiftwidth=4 softtabstop=4 expandtab: _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
