summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-01-24 15:54:34 +0100
committerAndrew Branson <andrew.branson@cern.ch>2013-01-24 15:54:34 +0100
commitde24f2b9f25bc28f079242619ce5f41f6ca38707 (patch)
tree0f676b255ba0dfcd8013408699a9963c6c6a8cfa
parent6ead1ef3926e365e17184521d80cba581f02c685 (diff)
Fix crash when module ResourceURL is invalid
-rw-r--r--src/main/java/com/c2kernel/process/Gateway.java3
-rw-r--r--src/main/java/com/c2kernel/utils/Resource.java15
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;
}
/**************************************************************************