diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2013-01-24 15:54:34 +0100 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2013-01-24 15:54:34 +0100 |
| commit | de24f2b9f25bc28f079242619ce5f41f6ca38707 (patch) | |
| tree | 0f676b255ba0dfcd8013408699a9963c6c6a8cfa | |
| parent | 6ead1ef3926e365e17184521d80cba581f02c685 (diff) | |
Fix crash when module ResourceURL is invalid
| -rw-r--r-- | src/main/java/com/c2kernel/process/Gateway.java | 3 | ||||
| -rw-r--r-- | src/main/java/com/c2kernel/utils/Resource.java | 15 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/main/java/com/c2kernel/process/Gateway.java b/src/main/java/com/c2kernel/process/Gateway.java index f1dae9e..a75c2c9 100644 --- a/src/main/java/com/c2kernel/process/Gateway.java +++ b/src/main/java/com/c2kernel/process/Gateway.java @@ -73,8 +73,9 @@ public class Gateway */
static public void init(Properties props, boolean isServer) throws InvalidDataException {
- // Init properties
+ // Init properties & resources
mC2KProps = new Properties();
+ Resource.initKernelBaseURL();
// report version info
Logger.msg("Kernel version: "+Resource.getKernelVersion());
diff --git a/src/main/java/com/c2kernel/utils/Resource.java b/src/main/java/com/c2kernel/utils/Resource.java index 3065f6a..541c2dc 100644 --- a/src/main/java/com/c2kernel/utils/Resource.java +++ b/src/main/java/com/c2kernel/utils/Resource.java @@ -6,6 +6,7 @@ import java.net.URL; import java.util.HashMap;
import java.util.Hashtable;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
/**************************************************************************
@@ -15,9 +16,13 @@ import com.c2kernel.common.ObjectNotFoundException; **************************************************************************/
public class Resource {
static private Hashtable<String, String> txtCache = new Hashtable<String, String>();
- static private URL baseURL = getURLorResURL("com/c2kernel/utils/resources/");
+ static private URL baseURL;
static private HashMap<String, URL> moduleBaseURLs = new HashMap<String, URL>();
+ public static void initKernelBaseURL() throws InvalidDataException {
+ baseURL = getURLorResURL("com/c2kernel/utils/resources/");
+ }
+
public static URL getKernelBaseURL() {
return baseURL;
}
@@ -31,7 +36,7 @@ public class Resource { Logger.msg("Adding resource URL for "+ns+": "+newBaseURL.toString());
}
- public static void addModuleBaseURL(String ns, String newBaseURL) {
+ public static void addModuleBaseURL(String ns, String newBaseURL) throws InvalidDataException {
addModuleBaseURL(ns, getURLorResURL(newBaseURL));
}
@@ -47,7 +52,7 @@ public class Resource { return new URL(moduleBaseURLs.get(ns), resName);
}
- private static URL getURLorResURL(String newURL) {
+ private static URL getURLorResURL(String newURL) throws InvalidDataException {
URL result;
try {
result = new URL(newURL);
@@ -56,6 +61,10 @@ public class Resource { //of files resolvable from the CLASSPATH
result = Resource.class.getClassLoader().getResource(newURL);
}
+ if (result == null) {
+ Logger.error("URL "+newURL+" could not be found");
+ throw new InvalidDataException();
+ }
return result;
}
/**************************************************************************
|
