[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