From 02002f83f156117cf178532d48abaa9319ee8cb4 Mon Sep 17 00:00:00 2001 From: Katarina Behrens Date: Tue, 15 Dec 2015 14:44:44 +0100 Subject: tdf#86784: Pass custom options to Java bootstrap Change-Id: I9e9c78387627e173dea8062e4a3f16bc396e8115 Reviewed-on: https://gerrit.libreoffice.org/20720 Reviewed-by: Noel Grandin Tested-by: Noel Grandin --- .../com/sun/star/comp/helper/Bootstrap.java | 58 +++++++++++++++++++--- 1 file changed, 51 insertions(+), 7 deletions(-) (limited to 'javaunohelper') diff --git a/javaunohelper/com/sun/star/comp/helper/Bootstrap.java b/javaunohelper/com/sun/star/comp/helper/Bootstrap.java index a36f16c9b25d..0b99ccecbcaa 100644 --- a/javaunohelper/com/sun/star/comp/helper/Bootstrap.java +++ b/javaunohelper/com/sun/star/comp/helper/Bootstrap.java @@ -91,6 +91,34 @@ public class Bootstrap { "com.sun.star.comp.connections.Acceptor", null, null, null ) ); } + /** + * Returns an array of default commandline options to start bootstrapped + * instance of soffice with. You may use it in connection with bootstrap + * method for example like this: + *
+     *     List list = Arrays.asList( Bootstrap.getDefaultOptions() );
+     *     list.remove("--nologo");
+     *     list.remove("--nodefault");
+     *     list.add("--invisible");
+     *
+     *     Bootstrap.bootstrap( list.toArray( new String[list.size()] );
+     * 
+ * + * @return an array of default commandline options + * @see #bootstrap( String[] ) + * @since UDK 5.2.0 + */ + public static final String[] getDefaultOptions() + { + return new String[] + { + "--nologo", + "--nodefault", + "--norestore", + "--nolockcheck" + }; + } + /** * backwards compatibility stub. */ @@ -248,6 +276,24 @@ public class Bootstrap { public static final XComponentContext bootstrap() throws BootstrapException { + String[] defaultArgArray = getDefaultOptions(); + return bootstrap( defaultArgArray ); + } + + /** + * Bootstraps the component context from a UNO installation. + * + * @param argArray + * an array of strings - commandline options to start instance of + * soffice with + * @see #getDefaultOptions() + * @return a bootstrapped component context. + * + * @since UDK 5.2.0 + */ + public static final XComponentContext bootstrap( String[] argArray ) + throws BootstrapException { + XComponentContext xContext = null; try { @@ -271,13 +317,11 @@ public class Bootstrap { Long.toString( (new Random()).nextLong() & 0x7fffffffffffffffL ); // create call with arguments - String[] cmdArray = new String[] { - fOffice.getPath(), - "--nologo", - "--nodefault", - "--norestore", - "--nolockcheck", - "--accept=pipe,name=" + sPipeName + ";urp;" }; + String[] cmdArray = new String[ argArray.length + 2 ]; + cmdArray[0] = fOffice.getPath(); + cmdArray[1] = ( "--accept=pipe,name=" + sPipeName + ";urp;" ); + + System.arraycopy( argArray, 0, cmdArray, 2, argArray.length ); // start office process Process p = Runtime.getRuntime().exec( cmdArray ); -- cgit