summaryrefslogtreecommitdiff
path: root/scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/java/com/sun/star/script/framework/container/ScriptMetaData.java')
-rwxr-xr-xscripting/java/com/sun/star/script/framework/container/ScriptMetaData.java46
1 files changed, 43 insertions, 3 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 1cf99d78292e..178f4806f344 100755
--- 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;