summaryrefslogtreecommitdiff
path: root/scripting/examples/java/debugger/DebugRunner.java
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/examples/java/debugger/DebugRunner.java')
-rwxr-xr-xscripting/examples/java/debugger/DebugRunner.java71
1 files changed, 71 insertions, 0 deletions
diff --git a/scripting/examples/java/debugger/DebugRunner.java b/scripting/examples/java/debugger/DebugRunner.java
new file mode 100755
index 000000000000..4430b970b6bf
--- /dev/null
+++ b/scripting/examples/java/debugger/DebugRunner.java
@@ -0,0 +1,71 @@
+import java.io.File;
+import java.io.InputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLDecoder;
+
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.script.framework.provider.PathUtils;
+import com.sun.star.script.framework.runtime.XScriptContext;
+
+public class DebugRunner {
+
+ private static final String FILE_URL_PREFIX =
+ System.getProperty("os.name").startsWith("Windows") == true ?
+ "file:///" : "file://";
+
+ public void go(final XScriptContext xsctxt, String language, String uri,
+ String filename) {
+
+ OOScriptDebugger debugger;
+ String path = "";
+
+ if (language.equals("JavaScript")) {
+ debugger = new OORhinoDebugger();
+ }
+ else if (language.equals("BeanShell")) {
+ debugger = new OOBeanShellDebugger();
+ }
+ else {
+ return;
+ }
+
+ if (uri.startsWith(FILE_URL_PREFIX)) {
+ uri = URLDecoder.decode(uri);
+ String s = uri.substring(FILE_URL_PREFIX.length());
+ File f = new File(s);
+
+ if (f.exists()) {
+ if (f.isDirectory()) {
+ if (!filename.equals("")) {
+ path = new File(f, filename).getAbsolutePath();
+ }
+ }
+ else {
+ path = f.getAbsolutePath();
+ }
+ }
+ debugger.go(xsctxt, path);
+ }
+ else {
+ if (!uri.endsWith("/")) {
+ uri += "/";
+ }
+
+ String script = uri + filename;
+ InputStream is;
+
+ try {
+ is = PathUtils.getScriptFileStream(
+ script, xsctxt.getComponentContext());
+
+ if (is != null) {
+ debugger.go(xsctxt, is);
+ }
+ }
+ catch (IOException ioe) {
+ System.out.println("Error loading script: " + script);
+ }
+ }
+ }
+}