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());
 	}
 }