Updated Branches: refs/heads/master e59726ad9 -> 6a9c588d3
Fix loading of external script so they will be loaded from the webapp classloader. This change will allow the Script class to look for resources in the classpath of the webapp. This makes it possible to distribute the management server as a single prepackaged war. An added benefit is easier integration with IDE's that have the option to start webapps internally. Also fixes a bug/feature in the URL handling were some components of the script path were translated to urlencoding. This change means that files are more often found in the first two steps of the findScript method which saves some filesystem calls. Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/6a9c588d Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/6a9c588d Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/6a9c588d Branch: refs/heads/master Commit: 6a9c588d33e481e3ed6b3b5045e97b1431c02117 Parents: e59726a Author: Hugo Trippaers <[email protected]> Authored: Fri Oct 5 16:35:40 2012 +0200 Committer: Hugo Trippaers <[email protected]> Committed: Fri Oct 26 15:32:00 2012 +0200 ---------------------------------------------------------------------- utils/src/com/cloud/utils/script/Script.java | 27 ++++++++++++++------ 1 files changed, 19 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a9c588d/utils/src/com/cloud/utils/script/Script.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/script/Script.java b/utils/src/com/cloud/utils/script/Script.java index feed764..a0f9e8e 100755 --- a/utils/src/com/cloud/utils/script/Script.java +++ b/utils/src/com/cloud/utils/script/Script.java @@ -23,6 +23,8 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringWriter; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -344,14 +346,23 @@ public class Script implements Callable<String> { return file.getAbsolutePath(); } -/* url = Script.class.getClassLoader().getResource(path); - * s_logger.debug("Classpath resource: " + url); - * if (url != null) { - * file = new File(url.getFile()); - * s_logger.debug("Absolute path = " + file.getAbsolutePath()); - * return file.getAbsolutePath(); - * } - */ + /** + * Look in WEB-INF/classes of the webapp + * URI workaround the URL encoding of url.getFile + */ + url = Script.class.getClassLoader().getResource(path + script); + s_logger.debug("Classpath resource: " + url); + if (url != null) { + try { + file = new File(new URI(url.toString()).getPath()); + s_logger.debug("Absolute path = " + file.getAbsolutePath()); + return file.getAbsolutePath(); + } + catch (URISyntaxException e) { + s_logger.warn("Unable to convert " + url.toString() + " to a URI"); + } + } + if (path.endsWith(File.separator)) { path = path.substring(0, path.lastIndexOf(File.separator)); }
