From 658745a46b290653cb7a0574e59758bd1e895642 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Sat, 22 Feb 2014 11:11:41 -0800 Subject: [PATCH] Fix github#27: NPE in TypeRegistry.loadPropertiesConfiguration --- .../org/springsource/loaded/TypeRegistry.java | 60 +++++++++++-------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java b/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java index c417b9b..1c8e03b 100644 --- a/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java +++ b/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java @@ -494,33 +494,41 @@ public class TypeRegistry { configuration = new Properties(GlobalConfiguration.globalConfigurationProperties); try { Set configurationFiles = new HashSet(); - Enumeration resources = classLoader.get().getResources("springloaded.properties"); - while (resources.hasMoreElements()) { - URL url = resources.nextElement(); - String configFile = url.toString(); - if (GlobalConfiguration.logging && log.isLoggable(Level.INFO)) { - log.log(Level.INFO, this.toString() + ": processing config file: " + url.toString()); + ClassLoader classloader = classLoader.get(); + Enumeration resources = classloader==null?null:classloader.getResources("springloaded.properties"); + if (resources == null) { + if (GlobalConfiguration.verboseMode && log.isLoggable(Level.INFO)) { + log.info("Unable to load springloaded.properties, cannot find it through classloader "+classloader); } - if (configurationFiles.contains(configFile)) { - continue; - } - configurationFiles.add(configFile); - InputStream is = url.openStream(); - - Properties p = new Properties(); - p.load(is); - is.close(); - Set keys = p.stringPropertyNames(); - for (String key : keys) { - if (!configuration.containsKey(key)) { - configuration.put(key, p.getProperty(key)); - } else { - // Extend our configuration - String valueSoFar = configuration.getProperty(key); - StringBuilder sb = new StringBuilder(valueSoFar); - sb.append(","); - sb.append(p.getProperty(key)); - configuration.put(key, sb.toString()); + } + else { + while (resources.hasMoreElements()) { + URL url = resources.nextElement(); + String configFile = url.toString(); + if (GlobalConfiguration.logging && log.isLoggable(Level.INFO)) { + log.log(Level.INFO, this.toString() + ": processing config file: " + url.toString()); + } + if (configurationFiles.contains(configFile)) { + continue; + } + configurationFiles.add(configFile); + InputStream is = url.openStream(); + + Properties p = new Properties(); + p.load(is); + is.close(); + Set keys = p.stringPropertyNames(); + for (String key : keys) { + if (!configuration.containsKey(key)) { + configuration.put(key, p.getProperty(key)); + } else { + // Extend our configuration + String valueSoFar = configuration.getProperty(key); + StringBuilder sb = new StringBuilder(valueSoFar); + sb.append(","); + sb.append(p.getProperty(key)); + configuration.put(key, sb.toString()); + } } } }