adding fetch support
diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/.classpath b/bundles/org.eclipse.e4.languages.javascript.framework/.classpath index ad32c83..bc74aab 100644 --- a/bundles/org.eclipse.e4.languages.javascript.framework/.classpath +++ b/bundles/org.eclipse.e4.languages.javascript.framework/.classpath
@@ -2,6 +2,5 @@ <classpath> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> - <classpathentry kind="src" path="src"/> <classpathentry kind="output" path="bin"/> </classpath>
diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js index a677312..4b1a058 100644 --- a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js +++ b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Bundle.js
@@ -14,6 +14,7 @@ this._scope = {}; this._bundleContext = null; this._activator = null; + this._script = null; var headers = bundleData.getHeaders(); this._parseName(headers[orion.Constants.BUNDLE_NAME]); @@ -22,6 +23,7 @@ this._parseExports(headers[orion.Constants.BUNDLE_EXPORTS]); this._parseRequires(headers[orion.Constants.BUNDLE_REQUIRES]); this._parseResources(headers[orion.Constants.BUNDLE_RESOURCES]); + this._parsePath(headers[orion.Constants.BUNDLE_PATH]); }; orion.Bundle.UNINSTALLED = 1; @@ -268,7 +270,6 @@ } var parameterStatement = parameterNames.join(","); - var script = this._bundleData.getHeaders()[orion.Constants.BUNDLE_SCRIPT] || ""; var returnStatement = "\n\nreturn {" + exportNames.join(",") + "};"; var that = this; @@ -278,7 +279,7 @@ } }; - var finalScript = script + returnStatement; + var finalScript = this._script + returnStatement; var load = new Function(parameterStatement, finalScript); this._scope = load.apply(loader, parameterValues); }, @@ -328,7 +329,7 @@ } }, _parseRequires : function(header) { - if (!header) + if (!header) return; var tokens = header.split(orion.Constants.CLAUSE_DELIMITER); @@ -361,5 +362,26 @@ if (jsImport !== null) this._imports.push(jsImport); } + }, + _parsePath : function(header) { + if (!header) { + this._script = this._bundleData.getHeaders()[orion.Constants.BUNDLE_SCRIPT] || ""; + return; + } + var tokens = header.split(orion.Constants.CLAUSE_DELIMITER); + var scripts = []; + for ( var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var path = token.replace(/^\s+|\s+$/g, ''); + if (path === ".") { + scripts[i] = this._bundleData.getHeaders()[orion.Constants.BUNDLE_SCRIPT]; + } else { + java.lang.System.out.println(path); + var scriptURL = this.getResource(path); + java.lang.System.out.println(scriptURL); + scripts[i] = orion.Framework._fetch(scriptURL); + } + } + this._script = scripts.join("\n\n"); } };
diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/BundleData.js b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/BundleData.js index 1694efe..6b6f46e 100644 --- a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/BundleData.js +++ b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/BundleData.js
@@ -2,7 +2,7 @@ orion.BundleData = function(bundleId, location, headers) { this._bundleId = bundleId; this._location = location; - this._headers = headers; + this._headers = headers || eval("(" + orion.Framework._fetch(location + "/META-INF/manifest.json") + ")"); //naughty }; orion.BundleData.prototype = {
diff --git a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js index 1f9229d..192c96b 100644 --- a/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js +++ b/bundles/org.eclipse.e4.languages.javascript.framework/scripts/Framework.js
@@ -279,3 +279,30 @@ return result; }; + +orion.Framework._fetch = function(location){ + if (this["XMLHttpRequest"]) { + var request = new XMLHttpRequest(); + request.open("GET", location, false); + request.send(); + return request.responseText; + } + + java.lang.System.out.println(location); + var url = new java.net.URL(location); + var buffer = new java.io.BufferedReader(new java.io.InputStreamReader(url.openStream())); + var line, responseText = ""; + try { + while ((line = buffer.readLine()) != null) + responseText += line; + } finally { + buffer.close(); + } + return responseText; +}; + + + + + +
diff --git a/bundles/org.eclipse.e4.languages.javascript/src/org/eclipse/e4/internal/languages/javascript/Activator.java b/bundles/org.eclipse.e4.languages.javascript/src/org/eclipse/e4/internal/languages/javascript/Activator.java index 983b402..f424a6f 100644 --- a/bundles/org.eclipse.e4.languages.javascript/src/org/eclipse/e4/internal/languages/javascript/Activator.java +++ b/bundles/org.eclipse.e4.languages.javascript/src/org/eclipse/e4/internal/languages/javascript/Activator.java
@@ -100,7 +100,7 @@ if (thisBundle == null) throw new IllegalStateException("Not started"); //$NON-NLS-1$ - ExportedPackage[] exportedPackages = packageAdmin.getExportedPackages("org.apache.jasper.servlet"); //$NON-NLS-1$ + ExportedPackage[] exportedPackages = packageAdmin.getExportedPackages("org.mozilla.javascript"); //$NON-NLS-1$ for (int i = 0; i < exportedPackages.length; i++) { Bundle[] importingBundles = exportedPackages[i].getImportingBundles(); for (int j = 0; j < importingBundles.length; j++) {
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.languages.javascript.framework.test/META-INF/MANIFEST.MF index 82d215b..c0ae345 100644 --- a/tests/org.eclipse.e4.languages.javascript.framework.test/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/META-INF/MANIFEST.MF
@@ -6,7 +6,8 @@ Require-Bundle: org.junit, org.eclipse.e4.languages.javascript.junit;bundle-version="1.0.0", org.eclipse.e4.languages.javascript.framework;bundle-version="1.0.0", - org.eclipse.equinox.common;bundle-version="3.6.0" + org.eclipse.equinox.common;bundle-version="3.6.0", + org.mozilla.javascript;bundle-version="1.7.2" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Import-Package: org.osgi.framework;version="1.5.0", org.osgi.service.packageadmin,
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/build.properties b/tests/org.eclipse.e4.languages.javascript.framework.test/build.properties index 34d2e4d..f38581b 100644 --- a/tests/org.eclipse.e4.languages.javascript.framework.test/build.properties +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/build.properties
@@ -1,4 +1,5 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ - . + .,\ + scripts/
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/FrameworkTest.js b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/FrameworkTest.js index 058ee30..3059324 100644 --- a/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/FrameworkTest.js +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/FrameworkTest.js
@@ -31,6 +31,27 @@ assertEquals(orion.Bundle.INSTALLED, b.getState()); }; +FrameworkTest.prototype.testLocationInstallBundle = function() { + var framework = new orion.Framework(); + var clazz = Packages.org.eclipse.e4.languages.javascript.framework.test.AllTests; + var b = framework.installBundle(clazz.getResource("/scripts/bundle1")); + assertEquals(1, framework.getBundles().length); + assertEquals(orion.Bundle.INSTALLED, b.getState()); +}; + +FrameworkTest.prototype.testLocationResolveBundle = function() { + var framework = new orion.Framework(); + var clazz = Packages.org.eclipse.e4.languages.javascript.framework.test.AllTests; + var b = framework.installBundle(clazz.getResource("/scripts/bundle2")); + assertEquals(1, framework.getBundles().length); + assertEquals(orion.Bundle.INSTALLED, b.getState()); + framework.resolve(); + assertEquals(orion.Bundle.RESOLVED, b.getState()); + assertEquals(7, b.load("test").x); + assertEquals(8, b.load("test").y); + assertEquals(9, b.load("test").z); +}; + FrameworkTest.prototype.testEmptyRefresh = function() { var framework = new orion.Framework();
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle1/META-INF/manifest.json b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle1/META-INF/manifest.json new file mode 100644 index 0000000..c55b821 --- /dev/null +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle1/META-INF/manifest.json
@@ -0,0 +1 @@ +{name:"xyz"}
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/META-INF/manifest.json b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/META-INF/manifest.json new file mode 100644 index 0000000..ed5c6ac --- /dev/null +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/META-INF/manifest.json
@@ -0,0 +1,7 @@ +{ +name:"xyz", +script: "test.z=9;", +path: "/script1.js, ., /script2.js", +exports: "test", +resources: "/script1.js, /script2.js" +}
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/script1.js b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/script1.js new file mode 100644 index 0000000..a95e042 --- /dev/null +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/script1.js
@@ -0,0 +1,2 @@ +var test = {}; +test.x=7; \ No newline at end of file
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/script2.js b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/script2.js new file mode 100644 index 0000000..4b64120 --- /dev/null +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/scripts/bundle2/script2.js
@@ -0,0 +1 @@ +test.y=8; \ No newline at end of file
diff --git a/tests/org.eclipse.e4.languages.javascript.framework.test/src/org/eclipse/e4/languages/javascript/framework/test/AllTests.java b/tests/org.eclipse.e4.languages.javascript.framework.test/src/org/eclipse/e4/languages/javascript/framework/test/AllTests.java index ec6ca5d..29b1916 100644 --- a/tests/org.eclipse.e4.languages.javascript.framework.test/src/org/eclipse/e4/languages/javascript/framework/test/AllTests.java +++ b/tests/org.eclipse.e4.languages.javascript.framework.test/src/org/eclipse/e4/languages/javascript/framework/test/AllTests.java
@@ -24,6 +24,10 @@ public static Test suite() throws IOException { return new AllTests(); } + + public static URL getResource(String path) { + return AllTests.class.getResource(path); + } public AllTests() throws IOException { super(AllTests.class.getName()); @@ -43,6 +47,6 @@ for (ListIterator iterator = scripts.listIterator(); iterator.hasNext();) { iterator.set(FileLocator.toFileURL((URL) iterator.next())); } - return new JavaScriptTestSuite(testCaseName, scripts); + return new JavaScriptTestSuite(testCaseName, scripts, this.getClass().getClassLoader()); } }