[Libreoffice-commits] .: 5 commits - scp2/source scripting/examples scripting/Jar_HelloWorld.mk scripting/Jar_Highlight.mk scripting/Jar_MemoryUsage.mk scripting/java

Stephan Bergmann sbergmann at kemper.freedesktop.org
Fri Mar 23 08:22:06 PDT 2012


 scp2/source/ooo/common_brand.scp                                                                  |   11 -
 scripting/Jar_HelloWorld.mk                                                                       |    2 
 scripting/Jar_Highlight.mk                                                                        |    2 
 scripting/Jar_MemoryUsage.mk                                                                      |    2 
 scripting/examples/java/HelloWorld/HelloWorld.java                                                |    2 
 scripting/examples/java/HelloWorld/parcel-descriptor.xml                                          |    2 
 scripting/examples/java/Highlight/HighlightText.java                                              |    2 
 scripting/examples/java/Highlight/parcel-descriptor.xml                                           |    2 
 scripting/examples/java/MemoryUsage/MemoryUsage.java                                              |    2 
 scripting/examples/java/MemoryUsage/parcel-descriptor.xml                                         |    2 
 scripting/examples/java/Newsgroup/MimeConfiguration.java                                          |    2 
 scripting/examples/java/Newsgroup/NewsGroup.java                                                  |    2 
 scripting/examples/java/Newsgroup/OfficeAttachment.java                                           |    2 
 scripting/examples/java/Newsgroup/PostNewsgroup.java                                              |    2 
 scripting/examples/java/Newsgroup/Sender.java                                                     |    2 
 scripting/examples/java/Newsgroup/StatusWindow.java                                               |    2 
 scripting/examples/java/Newsgroup/SubscribedNewsgroups.java                                       |    2 
 scripting/examples/java/debugger/DebugRunner.java                                                 |    2 
 scripting/examples/java/debugger/OOBeanShellDebugger.java                                         |    2 
 scripting/examples/java/debugger/OORhinoDebugger.java                                             |    2 
 scripting/examples/java/debugger/OOScriptDebugger.java                                            |    2 
 scripting/examples/java/debugger/parcel-descriptor.xml                                            |    2 
 scripting/examples/java/selector/ScriptSelector.java                                              |    2 
 scripting/examples/java/selector/parcel-descriptor.xml                                            |    2 
 scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java                        |   46 ++++
 scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java                     |   20 --
 scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java     |    3 
 scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java   |    3 
 scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java             |   97 ++++++----
 scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java |    3 
 30 files changed, 157 insertions(+), 72 deletions(-)

New commits:
commit b0c1c3060a5cbdacfa2d2a1b55db534304679379
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Mar 23 16:19:56 2012 +0100

    Removed unused directories

diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp
index 4c594df..38cde79 100644
--- a/scp2/source/ooo/common_brand.scp
+++ b/scp2/source/ooo/common_brand.scp
@@ -42,7 +42,6 @@ Module gid_Module_Root_Brand
             gid_Brand_Dir_Share_C05_Rgt,
             gid_Brand_Dir_Share_C05_Faq,
             gid_Brand_Dir_Share_Config,
-            gid_Brand_Dir_Share_Extension,
             gid_Brand_Dir_Share_Extensions,            
             gid_Brand_Dir_Share_Prereg,    
             gid_Brand_Dir_Share_Uno_Packages,
@@ -172,11 +171,6 @@ Directory gid_Brand_Dir_Share_Config
     DosName = "config";
 End
 
-Directory gid_Brand_Dir_Share_Extension
-    ParentID = gid_Brand_Dir_Share;
-    DosName = "extension";
-End
-
 Directory gid_Brand_Dir_Share_Extensions
     ParentID = gid_Brand_Dir_Share;
     DosName = "extensions";
@@ -188,11 +182,6 @@ Directory gid_Brand_Dir_Share_Prereg
     Styles = (CREATE);
 End
 
-Directory gid_Brand_Dir_Share_Extensions_Install
-    ParentID = gid_Brand_Dir_Share_Extension;
-    DosName = "install";
-End
-
 Directory gid_Brand_Dir_Share_Extensions_Dict_Af
     ParentID = gid_Brand_Dir_Share_Extensions;
     DosName = "dict-af";
commit 8087d5389f8d1133f119a9e6db88f91229831b61
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Mar 23 16:19:34 2012 +0100

    Java new cannot return 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..d2c660e 100644
--- a/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
+++ b/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
@@ -57,20 +57,8 @@ public class ClassLoaderFactory
         return getURLClassLoader( parent, classPath );
     }
     public static ClassLoader getURLClassLoader( ClassLoader parent, URL[] classpath)
-        throws NoSuitableClassLoaderException
     {
-        ClassLoader loader =
-            new URLClassLoader( classpath, parent);
-
-        if (loader != null)
-        {
-            return loader;
-        }
-        else
-        {
-            throw new NoSuitableClassLoaderException(
-                "Unable to create URLClassLoader");
-        }
+        return new URLClassLoader( classpath, parent);
     }
 
 }
commit 4b6988b43231ced65765051d10c021a9e07d23f6
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Mar 23 16:19:03 2012 +0100

    Improve error reporting

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..8ee3722 100644
--- a/scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java
+++ b/scripting/java/com/sun/star/script/framework/provider/java/ScriptProviderForJava.java
@@ -88,8 +88,13 @@ public class ScriptProviderForJava
             }
             catch ( com.sun.star.uno.RuntimeException re )
             {
-                throw new ScriptFrameworkErrorException( "Failed to create script object: " + re.getMessage(),
-                    null, scriptData.getLanguageName(), language, ScriptFrameworkErrorType.UNKNOWN );
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        "Failed to create script object: " + re,
+                        null, scriptData.getLanguageName(), language,
+                        ScriptFrameworkErrorType.UNKNOWN );
+                e2.initCause( re );
+                throw e2;
             }
 
         }
@@ -158,9 +163,11 @@ class ScriptImpl implements XScript
         catch ( Exception e )
         {
             LogUtils.DEBUG( LogUtils.getTrace( e ) );
-            throw new com.sun.star.uno.RuntimeException(
-                "Error constructing  ScriptProvider: "
-                + e.getMessage() );
+            com.sun.star.uno.RuntimeException e2 =
+                new com.sun.star.uno.RuntimeException(
+                    "Error constructing ScriptProvider: " + e );
+            e2.initCause( e );
+            throw e2;
         }
 
         LogUtils.DEBUG("ScriptImpl [java] script data = " + metaData );
@@ -211,26 +218,35 @@ class ScriptImpl implements XScript
             catch (MalformedURLException mfe )
             {
                 // Framework error
-                throw new ScriptFrameworkErrorException(
-                    mfe.getMessage(), null,
-                    metaData.getLanguageName(), metaData.getLanguage(),
-                    ScriptFrameworkErrorType.MALFORMED_URL );
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        mfe.toString(), null,
+                        metaData.getLanguageName(), metaData.getLanguage(),
+                        ScriptFrameworkErrorType.MALFORMED_URL );
+                e2.initCause( mfe );
+                throw e2;
             }
             catch (NoSuitableClassLoaderException ncl )
             {
                 // Framework error
-                throw new ScriptFrameworkErrorException(
-                    ncl.getMessage(), null,
-                    metaData.getLanguageName(), metaData.getLanguage(),
-                    ScriptFrameworkErrorType.UNKNOWN );
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        ncl.toString(), null,
+                        metaData.getLanguageName(), metaData.getLanguage(),
+                        ScriptFrameworkErrorType.UNKNOWN );
+                e2.initCause( ncl );
+                throw e2;
             }
             catch (ArrayStoreException e )
             {
                 // Framework error
-                throw new ScriptFrameworkErrorException(
-                    e.getMessage(), null,
-                    metaData.getLanguageName(), metaData.getLanguage(),
-                    ScriptFrameworkErrorType.UNKNOWN );
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        e.toString(), null,
+                        metaData.getLanguageName(), metaData.getLanguage(),
+                        ScriptFrameworkErrorType.UNKNOWN );
+                e2.initCause( e );
+                throw e2;
             }
 
             ArrayList invocationArgList = new ArrayList();
@@ -281,19 +297,25 @@ class ScriptImpl implements XScript
                 catch( NoSuchMethodException e )
                 {
                     // Framework error
-                    throw new ScriptFrameworkErrorException(
-                        e.getMessage(), null,
-                        metaData.getLanguageName(), metaData.getLanguage(),
-                        ScriptFrameworkErrorType.NO_SUCH_SCRIPT );
+                    ScriptFrameworkErrorException e2 =
+                        new ScriptFrameworkErrorException(
+                            e.toString(), null,
+                            metaData.getLanguageName(), metaData.getLanguage(),
+                            ScriptFrameworkErrorType.NO_SUCH_SCRIPT );
+                    e2.initCause( e );
+                    throw e2;
                 }
             }
             catch ( ClassNotFoundException e )
             {
                 // Framework error
-                throw new ScriptFrameworkErrorException(
-                    e.getMessage(), null,
-                    metaData.getLanguageName(), metaData.getLanguage(),
-                    ScriptFrameworkErrorType.NO_SUCH_SCRIPT );
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        e.toString(), null,
+                        metaData.getLanguageName(), metaData.getLanguage(),
+                        ScriptFrameworkErrorType.NO_SUCH_SCRIPT );
+                e2.initCause( e );
+                throw e2;
             }
 
             LogUtils.DEBUG( "Starting Invoke on Proxy ..." );
@@ -310,18 +332,23 @@ class ScriptImpl implements XScript
             }
             catch ( java.lang.IllegalArgumentException iae )
             {
-                throw new ScriptFrameworkErrorException(
-                    iae.getMessage(), null,
-                    metaData.getLanguageName(), metaData.getLanguage(),
-                    ScriptFrameworkErrorType.UNKNOWN );
-
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        iae.getMessage(), null,
+                        metaData.getLanguageName(), metaData.getLanguage(),
+                        ScriptFrameworkErrorType.UNKNOWN );
+                e2.initCause( iae );
+                throw e2;
             }
             catch ( java.lang.IllegalAccessException ia )
             {
-                throw new ScriptFrameworkErrorException(
-                    ia.getMessage(), null,
-                    metaData.getLanguageName(), metaData.getLanguage(),
-                    ScriptFrameworkErrorType.UNKNOWN );
+                ScriptFrameworkErrorException e2 =
+                    new ScriptFrameworkErrorException(
+                        ia.toString(), null,
+                        metaData.getLanguageName(), metaData.getLanguage(),
+                        ScriptFrameworkErrorType.UNKNOWN );
+                e2.initCause( ia );
+                throw e2;
             }
             catch ( java.lang.reflect.InvocationTargetException ite )
             {
commit 0b9fda25f321ce2697179064e330843237177668
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Mar 23 16:11:42 2012 +0100

    fdo#46102: Fix Java script examples after gbuild'ification
    
    ...they contained no class files anymore, due to missing gb_Jar_set_packageroot
    calls.  However, those calls only work for subdirectories, i.e., the example
    .java files need to be put into a package (I chose
    org.libreoffice.example.java_scripts) for all of them).  This in turn required
    adaption of the parcel-descriptor.xml files; not sure what the logicalname
    entries there are good for if anything -- the macro names at "Tools - Macros -
    Run Macro..." now unfortunately(?) contain the fully qualified paths for the
    HelloWorld, HighlightText, and MemoryUpdate examples.  There are additional
    examples at scripting/examples/java/ that apparently do not get packaged (but I
    adapted them anyway).

diff --git a/scripting/Jar_HelloWorld.mk b/scripting/Jar_HelloWorld.mk
index fa0ec4d..87902d3 100644
--- a/scripting/Jar_HelloWorld.mk
+++ b/scripting/Jar_HelloWorld.mk
@@ -39,4 +39,6 @@ $(eval $(call gb_Jar_add_sourcefiles,HelloWorld,\
 	scripting/examples/java/HelloWorld/HelloWorld \
 ))
 
+$(eval $(call gb_Jar_set_packageroot,HelloWorld,org))
+
 # vim: set noet sw=4 ts=4:
diff --git a/scripting/Jar_Highlight.mk b/scripting/Jar_Highlight.mk
index ea46602..0f9a81f 100644
--- a/scripting/Jar_Highlight.mk
+++ b/scripting/Jar_Highlight.mk
@@ -39,4 +39,6 @@ $(eval $(call gb_Jar_add_sourcefiles,Highlight,\
 	scripting/examples/java/Highlight/HighlightText \
 ))
 
+$(eval $(call gb_Jar_set_packageroot,Highlight,org))
+
 # vim: set noet sw=4 ts=4:
diff --git a/scripting/Jar_MemoryUsage.mk b/scripting/Jar_MemoryUsage.mk
index bb9300b..952dec0 100644
--- a/scripting/Jar_MemoryUsage.mk
+++ b/scripting/Jar_MemoryUsage.mk
@@ -39,4 +39,6 @@ $(eval $(call gb_Jar_add_sourcefiles,MemoryUsage,\
 	scripting/examples/java/MemoryUsage/MemoryUsage \
 ))
 
+$(eval $(call gb_Jar_set_packageroot,MemoryUsage,org))
+
 # vim: set noet sw=4 ts=4:
diff --git a/scripting/examples/java/HelloWorld/HelloWorld.java b/scripting/examples/java/HelloWorld/HelloWorld.java
index eaed56f..48f72e0 100644
--- a/scripting/examples/java/HelloWorld/HelloWorld.java
+++ b/scripting/examples/java/HelloWorld/HelloWorld.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import com.sun.star.script.provider.XScriptContext;
 import com.sun.star.uno.UnoRuntime;
 import com.sun.star.text.XTextDocument;
diff --git a/scripting/examples/java/HelloWorld/parcel-descriptor.xml b/scripting/examples/java/HelloWorld/parcel-descriptor.xml
index 692933a..61375a4 100755
--- a/scripting/examples/java/HelloWorld/parcel-descriptor.xml
+++ b/scripting/examples/java/HelloWorld/parcel-descriptor.xml
@@ -7,7 +7,7 @@
                 Prints "Helo World".
             </description>
         </locale>
-        <functionname value="HelloWorld.printHW"/>
+        <functionname value="org.libreoffice.example.java_scripts.HelloWorld.printHW"/>
         <logicalname value="HelloWorld.printHW"/>
         <languagedepprops>
             <prop name="classpath" value="HelloWorld.jar"/>
diff --git a/scripting/examples/java/Highlight/HighlightText.java b/scripting/examples/java/Highlight/HighlightText.java
index 14a02e3..1b45e22 100644
--- a/scripting/examples/java/Highlight/HighlightText.java
+++ b/scripting/examples/java/Highlight/HighlightText.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import com.sun.star.uno.UnoRuntime;
 import com.sun.star.script.provider.XScriptContext;
 import com.sun.star.lang.XMultiComponentFactory;
diff --git a/scripting/examples/java/Highlight/parcel-descriptor.xml b/scripting/examples/java/Highlight/parcel-descriptor.xml
index 2612eae..54e2a88 100755
--- a/scripting/examples/java/Highlight/parcel-descriptor.xml
+++ b/scripting/examples/java/Highlight/parcel-descriptor.xml
@@ -8,7 +8,7 @@
                 Text highlighting
             </description>
         </locale>
-        <functionname value="HighlightText.showForm"/>
+        <functionname value="org.libreoffice.example.java_scripts.HighlightText.showForm"/>
         <logicalname value="HighlightText.showForm"/>
         <languagedepprops>
             <prop name="classpath" value="Highlight.jar"/>
diff --git a/scripting/examples/java/MemoryUsage/MemoryUsage.java b/scripting/examples/java/MemoryUsage/MemoryUsage.java
index 727f94a..6fc1ba7 100644
--- a/scripting/examples/java/MemoryUsage/MemoryUsage.java
+++ b/scripting/examples/java/MemoryUsage/MemoryUsage.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import java.util.Random;
 import java.util.Date;
 import com.sun.star.uno.UnoRuntime;
diff --git a/scripting/examples/java/MemoryUsage/parcel-descriptor.xml b/scripting/examples/java/MemoryUsage/parcel-descriptor.xml
index e09bf4a..ec7daba 100755
--- a/scripting/examples/java/MemoryUsage/parcel-descriptor.xml
+++ b/scripting/examples/java/MemoryUsage/parcel-descriptor.xml
@@ -7,7 +7,7 @@
                 Text highlighting
             </description>
         </locale>
-        <functionname value="MemoryUsage.updateMemoryUsage"/>
+        <functionname value="org.libreoffice.example.java_scripts.MemoryUsage.updateMemoryUsage"/>
         <logicalname value="MemoryUtils.MemUsage"/>
         <languagedepprops>
             <prop name="classpath" value="MemoryUsage.jar"/>
diff --git a/scripting/examples/java/Newsgroup/MimeConfiguration.java b/scripting/examples/java/Newsgroup/MimeConfiguration.java
index 8604c0a..f0a2bd1 100644
--- a/scripting/examples/java/Newsgroup/MimeConfiguration.java
+++ b/scripting/examples/java/Newsgroup/MimeConfiguration.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import com.sun.star.uno.UnoRuntime;
 import com.sun.star.lang.XMultiComponentFactory;
 import com.sun.star.uno.XComponentContext;
diff --git a/scripting/examples/java/Newsgroup/NewsGroup.java b/scripting/examples/java/Newsgroup/NewsGroup.java
index 714b81e..be1c404 100644
--- a/scripting/examples/java/Newsgroup/NewsGroup.java
+++ b/scripting/examples/java/Newsgroup/NewsGroup.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 public class NewsGroup
 {
 
diff --git a/scripting/examples/java/Newsgroup/OfficeAttachment.java b/scripting/examples/java/Newsgroup/OfficeAttachment.java
index c2816e0..2455f6e 100644
--- a/scripting/examples/java/Newsgroup/OfficeAttachment.java
+++ b/scripting/examples/java/Newsgroup/OfficeAttachment.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 //import com.sun.star.frame.XComponentLoader;
 import java.io.*;
 import com.sun.star.lang.XComponent;
diff --git a/scripting/examples/java/Newsgroup/PostNewsgroup.java b/scripting/examples/java/Newsgroup/PostNewsgroup.java
index a88b1d3..b25049d 100644
--- a/scripting/examples/java/Newsgroup/PostNewsgroup.java
+++ b/scripting/examples/java/Newsgroup/PostNewsgroup.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
diff --git a/scripting/examples/java/Newsgroup/Sender.java b/scripting/examples/java/Newsgroup/Sender.java
index eb1da28..653e5e1 100644
--- a/scripting/examples/java/Newsgroup/Sender.java
+++ b/scripting/examples/java/Newsgroup/Sender.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import javax.mail.*;
 import javax.mail.internet.*;
 import com.msoft.mail.provider.nntp.NNTPTransport;
diff --git a/scripting/examples/java/Newsgroup/StatusWindow.java b/scripting/examples/java/Newsgroup/StatusWindow.java
index 2fcffae..389181f 100644
--- a/scripting/examples/java/Newsgroup/StatusWindow.java
+++ b/scripting/examples/java/Newsgroup/StatusWindow.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
diff --git a/scripting/examples/java/Newsgroup/SubscribedNewsgroups.java b/scripting/examples/java/Newsgroup/SubscribedNewsgroups.java
index b227791..c1d935f 100644
--- a/scripting/examples/java/Newsgroup/SubscribedNewsgroups.java
+++ b/scripting/examples/java/Newsgroup/SubscribedNewsgroups.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import java.io.*;
 import java.util.Vector;
 
diff --git a/scripting/examples/java/debugger/DebugRunner.java b/scripting/examples/java/debugger/DebugRunner.java
index 4430b97..c1d5f46 100644
--- a/scripting/examples/java/debugger/DebugRunner.java
+++ b/scripting/examples/java/debugger/DebugRunner.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import java.io.File;
 import java.io.InputStream;
 import java.io.IOException;
diff --git a/scripting/examples/java/debugger/OOBeanShellDebugger.java b/scripting/examples/java/debugger/OOBeanShellDebugger.java
index be91aa4..eadb3a5 100644
--- a/scripting/examples/java/debugger/OOBeanShellDebugger.java
+++ b/scripting/examples/java/debugger/OOBeanShellDebugger.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import javax.swing.JFrame;
 import javax.swing.JTextArea;
 import javax.swing.JPanel;
diff --git a/scripting/examples/java/debugger/OORhinoDebugger.java b/scripting/examples/java/debugger/OORhinoDebugger.java
index 0aea985..209f4f7 100644
--- a/scripting/examples/java/debugger/OORhinoDebugger.java
+++ b/scripting/examples/java/debugger/OORhinoDebugger.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import javax.swing.SwingUtilities;
 import java.io.InputStream;
 
diff --git a/scripting/examples/java/debugger/OOScriptDebugger.java b/scripting/examples/java/debugger/OOScriptDebugger.java
index 67532e1..c46bbc5 100644
--- a/scripting/examples/java/debugger/OOScriptDebugger.java
+++ b/scripting/examples/java/debugger/OOScriptDebugger.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import java.io.InputStream;
 import drafts.com.sun.star.script.framework.runtime.XScriptContext;
 
diff --git a/scripting/examples/java/debugger/parcel-descriptor.xml b/scripting/examples/java/debugger/parcel-descriptor.xml
index 285db1b..f432bfe 100755
--- a/scripting/examples/java/debugger/parcel-descriptor.xml
+++ b/scripting/examples/java/debugger/parcel-descriptor.xml
@@ -8,7 +8,7 @@
       <description>Script that starts debuggers for JavaScript and BeanShell
       </description>
     </locale>
-    <logicalname value="_$DebugRunner.Debug" />
+    <logicalname value="org.libreoffice.example.java_scripts._$DebugRunner.Debug" />
     <functionname value="DebugRunner.go" />
     <languagedepprops>
       <prop name="classpath" value="debugger.jar"/>
diff --git a/scripting/examples/java/selector/ScriptSelector.java b/scripting/examples/java/selector/ScriptSelector.java
index 698faa5..93475fe 100644
--- a/scripting/examples/java/selector/ScriptSelector.java
+++ b/scripting/examples/java/selector/ScriptSelector.java
@@ -1,3 +1,5 @@
+package org.libreoffice.example.java_scripts;
+
 import javax.swing.*;
 import javax.swing.tree.*;
 import javax.swing.table.*;
diff --git a/scripting/examples/java/selector/parcel-descriptor.xml b/scripting/examples/java/selector/parcel-descriptor.xml
index 8e3e70e..951fdde 100755
--- a/scripting/examples/java/selector/parcel-descriptor.xml
+++ b/scripting/examples/java/selector/parcel-descriptor.xml
@@ -8,7 +8,7 @@
                 Prototype Script Selector GUI for StarOffice
             </description>
         </locale>
-        <functionname value="ScriptSelector.showOrganizer"/>
+        <functionname value="org.libreoffice.example.java_scripts.ScriptSelector.showOrganizer"/>
         <logicalname value="ScriptSelector.showOrganizer"/>
         <languagedepprops>
           <prop name="classpath" value="selector.jar"/>
commit dd6c4f4db1d62268d73e09ae52d23f760a967dcc
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Mar 23 16:05:24 2012 +0100

    fdo#46102: Load Java scripts with class loaders that actually find them
    
    ScriptMetaData.createURL produces weird URLs (ending in "/ucb/", and potentially
    still containing vnd.sun.star.expand: prefix) that are apparently good for
    loading documents for editing via UCBStreamHandler, but cannot meaningfully be
    passed to a URLClassLoader.
    
    It is unclear to me how the Java script provider shall ever have found the
    script jars in the past.

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 1cf99d7..178f480 100644
--- a/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java
+++ b/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java
@@ -50,7 +50,14 @@ 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;
@@ -246,7 +253,8 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable {
         return "\nParcelLocation = " + getParcelLocation() + "\nLocationPlaceHolder = " + locationPlaceHolder + super.toString();
     }
 
-    public URL[] getClassPath() throws java.net.MalformedURLException
+    public URL[] getClassPath(XComponentContext context)
+        throws java.net.MalformedURLException
     {
     try
     {
@@ -274,7 +282,7 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable {
         {
             String relativeClasspath =  (String)stk.nextElement();
             String pathToProcess  = PathUtils.make_url( parcelPath, relativeClasspath);
-            URL url = createURL( pathToProcess );
+            URL url = expandURL( context, pathToProcess );
             if ( url != null )
             {
                 classPathVec.add (  url  );
@@ -283,7 +291,7 @@ public class ScriptMetaData extends ScriptEntry implements Cloneable {
         }
         if ( classPathVec.size() == 0)
         {
-            URL url = createURL( parcelPath );
+            URL url = expandURL( context, parcelPath );
             if ( url != null )
             {
                 classPathVec.add(url);
@@ -300,6 +308,38 @@ 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 641ca58..081204f 100644
--- a/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
+++ b/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
@@ -31,6 +31,7 @@ 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
@@ -42,11 +43,12 @@ public class ClassLoaderFactory
 {
     private ClassLoaderFactory() {}
 
-    public static ClassLoader getURLClassLoader( ScriptMetaData scriptData )
+    public static ClassLoader getURLClassLoader(
+        XComponentContext context, ScriptMetaData scriptData )
         throws NoSuitableClassLoaderException, MalformedURLException
     {
         ClassLoader parent = scriptData.getClass().getClassLoader();
-        URL[] classPath = scriptData.getClassPath();
+        URL[] classPath = scriptData.getClassPath(context);
         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 cbbcfc3..9f6739d 100644
--- 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,7 +202,8 @@ public class ScriptEditorForBeanShell
             try {
                 ClassLoader cl = null;
                 try {
-                    cl = ClassLoaderFactory.getURLClassLoader( entry );
+                    cl = ClassLoaderFactory.getURLClassLoader(
+                        context.getComponentContext(), 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 95c7278..22a9ea8 100644
--- 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,7 +196,8 @@ class ScriptImpl implements XScript
             ClassLoader cl = null;
             URL sourceUrl = null;
             try {
-                cl = ClassLoaderFactory.getURLClassLoader( metaData );
+                cl = ClassLoaderFactory.getURLClassLoader(
+                    m_xContext, 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 707ea05..3f392f7 100644
--- 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(
-                        metaData );
+                    m_xContext, 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 9f04d91..39205d4 100644
--- 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,7 +195,8 @@ class ScriptImpl implements XScript
             ClassLoader cl = null;
             URL sourceUrl = null;
             try {
-                cl = ClassLoaderFactory.getURLClassLoader( metaData );
+                cl = ClassLoaderFactory.getURLClassLoader(
+                    m_xContext, metaData );
                 sourceUrl = metaData.getSourceURL();
             }
             catch ( java.net.MalformedURLException mfu )


More information about the Libreoffice-commits mailing list