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 <sberg...@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 <sberg...@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 <sberg...@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 <sberg...@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 <sberg...@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 ) _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits