diff --git a/commons/src/main/java/org/archive/spring/KeyedProperties.java b/commons/src/main/java/org/archive/spring/KeyedProperties.java index a6e5adbf..0a5b562b 100644 --- a/commons/src/main/java/org/archive/spring/KeyedProperties.java +++ b/commons/src/main/java/org/archive/spring/KeyedProperties.java @@ -24,6 +24,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Logger; /** * Map for storing overridable properties. @@ -36,6 +37,9 @@ import java.util.concurrent.ConcurrentHashMap; */ public class KeyedProperties extends ConcurrentHashMap { private static final long serialVersionUID = 3403222335436162778L; + + private static final Logger logger = Logger.getLogger(KeyedProperties.class.getName()); + /** the alternate global property-paths leading to this map * TODO: consider if deterministic ordered list is important */ HashSet externalPaths = new HashSet(); @@ -61,11 +65,15 @@ public class KeyedProperties extends ConcurrentHashMap { for(int j = ocontext.getOverlayNames().size()-1; j>=0; j--) { String name = ocontext.getOverlayNames().get(j); Map m = ocontext.getOverlayMap(name); - for(String ok : getOverrideKeys(key)) { - Object val = m.get(ok); - if(val!=null) { - return val; + if (m != null) { + for(String ok : getOverrideKeys(key)) { + Object val = m.get(ok); + if(val!=null) { + return val; + } } + } else { + logger.warning("sheet '" + name + "' should apply but there is no such sheet!"); } } } diff --git a/engine/src/main/java/org/archive/crawler/spring/SheetOverlaysManager.java b/engine/src/main/java/org/archive/crawler/spring/SheetOverlaysManager.java index 276f17a6..fee9e81c 100644 --- a/engine/src/main/java/org/archive/crawler/spring/SheetOverlaysManager.java +++ b/engine/src/main/java/org/archive/crawler/spring/SheetOverlaysManager.java @@ -169,7 +169,12 @@ BeanFactoryAware, OverlayMapsSource, ApplicationListener { * @see org.archive.spring.OverlayMapsSource#getOverlayMap(java.lang.String) */ public Map getOverlayMap(String name) { - return sheetsByName.get(name).getMap(); + Sheet sheet = sheetsByName.get(name); + if (sheet != null) { + return sheet.getMap(); + } else { + return null; + } } /**