[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[SCM] LibreOffice packaging repository branch, ubuntu-precise-3.5, updated. libreoffice_3.5.2_rc2-1-164-g10e447e



The following commit has been merged in the ubuntu-precise-3.5 branch:
commit 059dbdf8273919e0ad6dad378e5896807717e386
Author: Bjoern Michaelsen <bjoern.michaelsen@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.michaelsen@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 <sbergman@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 <caolanm@redhat.com>
+Tested-by: Caolán McNamara <caolanm@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


Reply to: