The following commit has been merged in the ubuntu-precise-3.5 branch: commit 059dbdf8273919e0ad6dad378e5896807717e386 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Wed Jan 9 14:45:10 2013 +0100
lp#1097744: Load Java scripts with class loaders diff --git a/changelog b/changelog index 3cfe33e..55f18ce 100644 --- a/changelog +++ b/changelog @@ -13,6 +13,7 @@ libreoffice (1:3.5.7-0ubuntu3) UNRELEASED; urgency=low * backport a11y: call doShow after we have a valid view (LP: #1097722) * backport Clipboard must be disposed before Selection (LP: #1097727) * backport fix default hori/vert frame anchor during RTF import (LP: #1097735) + * backport Load Java scripts with class loaders (LP: #1097744) -- Bjoern Michaelsen <bjoern.michael...@canonical.com> Tue, 08 Jan 2013 17:09:36 +0100 diff --git a/patches/lp-1097744-fdo-49517-Revert-fdo-46102-Load-Java-scripts-with-cl.diff b/patches/lp-1097744-fdo-49517-Revert-fdo-46102-Load-Java-scripts-with-cl.diff new file mode 100644 index 0000000..40595fa --- /dev/null +++ b/patches/lp-1097744-fdo-49517-Revert-fdo-46102-Load-Java-scripts-with-cl.diff @@ -0,0 +1,223 @@ +From fce3a57779fa4e776f36b7c1a0fc67ab392c8f3c Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann <sberg...@redhat.com> +Date: Fri, 26 Oct 2012 16:22:16 +0200 +Subject: [PATCH 07/14] fdo#49517: Revert "fdo#46102: Load Java scripts with + class loaders [...]" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit dd6c4f4db1d62268d73e09ae52d23f760a967dcc "fdo#46102: Load +Java scripts with class loaders that actually find them." That commit broke +support for macros embedded in documents (as +new java.net.URL("vnd.sun.star.tdoc:...") throws a MalformedURLExcetpion), and +it looks like that commit was not necessary after all -- or rather that what it +tried to work around must have been some other problem that has been fixed +meanwhile. "It is unclear to me how the Java script provider shall ever have +found the script jars in the past" indicates that something must have been +fishy, and what I failed to notice back then is that createURL creates +java.net.URL instances with a UCBStreamHandler that does allow to obtain content +from weird-looking URLs. + +Anyway, with that reverted, all three following scenarios work on both current +master (towards LO 3.7) and libreoffice-3-6 (towards LO 3.6.4); I haven't yet +come around to test on libreoffice-3-5: + +1 Stock macros, "Tools - Macros - Run Macro... - LibreOffice Macros - +HelloWorld", running all of the four "helloworld.bsh", "helloworld.js", +"HelloWorldPyhton", and +"org.libreoffice.example.java_scripts.HelloWorld.printHW". + +2 Per-document macros, loading test.odt attached to fdo#49517, then "Tools - +Macros - Run Macro... - test.odt - HelloWorld", running +"org.libreoffice.example.java_scripts.HelloWorld.printHW". + +3 Extension macros, installing ScriptDispatch.oxt attached to fdo#46012 as +shared extension, then loading StartScriptDispatch.odt attached to fdo#46012 and +pressing the "Start Java via ScriptProvider" button. + +Change-Id: I31cd16b3720ffeb1058722d4d1fdffb773f8a067 +(cherry picked from commit 7ea7fb009ddcfb0723e88ba0c5778b5fdbe2b553) +Reviewed-on: https://gerrit.libreoffice.org/922 +Reviewed-by: Caolán McNamara <caol...@redhat.com> +Tested-by: Caolán McNamara <caol...@redhat.com> +--- + .../script/framework/container/ScriptMetaData.java | 46 ++------------------ + .../framework/provider/ClassLoaderFactory.java | 6 +-- + .../beanshell/ScriptEditorForBeanShell.java | 3 +- + .../beanshell/ScriptProviderForBeanShell.java | 3 +- + .../provider/java/ScriptProviderForJava.java | 2 +- + .../javascript/ScriptProviderForJavaScript.java | 3 +- + 6 files changed, 9 insertions(+), 54 deletions(-) + +diff --git a/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java b/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java +index 178f480..1cf99d7 100755 +--- a/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java ++++ b/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java +@@ -50,14 +50,7 @@ import com.sun.star.script.framework.io.UCBStreamHandler; + + import com.sun.star.ucb.XSimpleFileAccess2; + +-import com.sun.star.uno.AnyConverter; + import com.sun.star.uno.UnoRuntime; +-import com.sun.star.uno.XComponentContext; +- +-import com.sun.star.uri.UriReferenceFactory; +-import com.sun.star.uri.XVndSunStarExpandUrl; +- +-import com.sun.star.util.XMacroExpander; + + public class ScriptMetaData extends ScriptEntry implements Cloneable { + private boolean hasSource = false; +@@ -253,8 +246,7 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable { + return "\nParcelLocation = " + getParcelLocation() + "\nLocationPlaceHolder = " + locationPlaceHolder + super.toString(); + } + +- public URL[] getClassPath(XComponentContext context) +- throws java.net.MalformedURLException ++ public URL[] getClassPath() throws java.net.MalformedURLException + { + try + { +@@ -282,7 +274,7 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable { + { + String relativeClasspath = (String)stk.nextElement(); + String pathToProcess = PathUtils.make_url( parcelPath, relativeClasspath); +- URL url = expandURL( context, pathToProcess ); ++ URL url = createURL( pathToProcess ); + if ( url != null ) + { + classPathVec.add ( url ); +@@ -291,7 +283,7 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable { + } + if ( classPathVec.size() == 0) + { +- URL url = expandURL( context, parcelPath ); ++ URL url = createURL( parcelPath ); + if ( url != null ) + { + classPathVec.add(url); +@@ -308,38 +300,6 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable { + } + + } +- +- private URL expandURL(XComponentContext context, String url) +- throws java.net.MalformedURLException +- { +- XVndSunStarExpandUrl exp = UnoRuntime.queryInterface( +- XVndSunStarExpandUrl.class, +- UriReferenceFactory.create(context).parse(url)); +- String expurl; +- if (exp == null) { +- expurl = url; +- } else { +- XMacroExpander expander; +- try { +- expander = (XMacroExpander) AnyConverter.toObject( +- XMacroExpander.class, +- context.getValueByName( +- "/singletons/com.sun.star.util.theMacroExpander")); +- } catch (com.sun.star.lang.IllegalArgumentException e) { +- throw new RuntimeException(e); +- } +- try { +- expurl = exp.expand(expander); +- } catch (com.sun.star.lang.IllegalArgumentException e) { +- java.net.MalformedURLException e2 = +- new java.net.MalformedURLException(e.toString()); +- e2.initCause(e); +- throw e2; +- } +- } +- return new URL(expurl); +- } +- + private URL createURL( String path ) throws java.net.MalformedURLException + { + URL url = null; +diff --git a/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java b/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java +index 081204f..641ca58 100755 +--- a/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java ++++ b/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java +@@ -31,7 +31,6 @@ import java.net.*; + + import com.sun.star.script.framework.log.LogUtils; + import com.sun.star.script.framework.container.ScriptMetaData; +-import com.sun.star.uno.XComponentContext; + + /** + * Class Loader Factory +@@ -43,12 +42,11 @@ public class ClassLoaderFactory + { + private ClassLoaderFactory() {} + +- public static ClassLoader getURLClassLoader( +- XComponentContext context, ScriptMetaData scriptData ) ++ public static ClassLoader getURLClassLoader( ScriptMetaData scriptData ) + throws NoSuitableClassLoaderException, MalformedURLException + { + ClassLoader parent = scriptData.getClass().getClassLoader(); +- URL[] classPath = scriptData.getClassPath(context); ++ URL[] classPath = scriptData.getClassPath(); + LogUtils.DEBUG("Classpath has length " + classPath.length ); + for ( int i=0; i < classPath.length; i++ ) + { +diff --git a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java +index 9f6739d..cbbcfc3 100755 +--- a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java ++++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java +@@ -202,8 +202,7 @@ public class ScriptEditorForBeanShell + try { + ClassLoader cl = null; + try { +- cl = ClassLoaderFactory.getURLClassLoader( +- context.getComponentContext(), entry ); ++ cl = ClassLoaderFactory.getURLClassLoader( entry ); + } + catch (Exception ignore) // TODO re-examine error handling + { +diff --git a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java +index 22a9ea8..95c7278 100755 +--- a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java ++++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java +@@ -196,8 +196,7 @@ class ScriptImpl implements XScript + ClassLoader cl = null; + URL sourceUrl = null; + try { +- cl = ClassLoaderFactory.getURLClassLoader( +- m_xContext, metaData ); ++ cl = ClassLoaderFactory.getURLClassLoader( metaData ); + sourceUrl = metaData.getSourceURL(); + } + catch ( java.net.MalformedURLException mfu ) +diff --git a/scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java b/scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java +index 3f392f7..707ea05 100755 +--- a/scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java ++++ b/scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java +@@ -205,7 +205,7 @@ class ScriptImpl implements XScript + try { + LogUtils.DEBUG( "Classloader starting..." ); + scriptLoader = ClassLoaderFactory.getURLClassLoader( +- m_xContext, metaData ); ++ metaData ); + LogUtils.DEBUG( "Classloader finished..." ); + } + catch (MalformedURLException mfe ) +diff --git a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java +index 39205d4..9f04d91 100755 +--- a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java ++++ b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java +@@ -195,8 +195,7 @@ class ScriptImpl implements XScript + ClassLoader cl = null; + URL sourceUrl = null; + try { +- cl = ClassLoaderFactory.getURLClassLoader( +- m_xContext, metaData ); ++ cl = ClassLoaderFactory.getURLClassLoader( metaData ); + sourceUrl = metaData.getSourceURL(); + } + catch ( java.net.MalformedURLException mfu ) +-- +1.7.10.4 + diff --git a/patches/series b/patches/series index 843671c..421ac3a 100644 --- a/patches/series +++ b/patches/series @@ -48,3 +48,4 @@ lp-1097718-fdo-48096-possibly-also-lp-26303-lp-399765-.diff lp-1097722-Resolves-rhbz-805743-a11y-call-doShow-after-we-have-.diff lp-1097727-rhbz-846775-Clipboard-must-be-disposed-befo.diff lp-1097735-fdo-48442-fix-default-hori-vert-frame-anchor-during-.diff +lp-1097744-fdo-49517-Revert-fdo-46102-Load-Java-scripts-with-cl.diff -- LibreOffice packaging repository -- To UNSUBSCRIBE, email to debian-openoffice-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1ttcml-0003af...@vasks.debian.org