mirror of
https://github.com/internetarchive/heritrix3.git
synced 2026-09-24 14:45:56 +00:00
Fix for HER-1962 NPE from missing sheet
* SheetOverlaysManager.java
getOverlayMap(String) - return null if sheet missing instead of triggering npe
* KeyedProperties.java
get(String) - check for null return value from getOverlayMap() and log warning
This commit is contained in:
@@ -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<String,Object> {
|
||||
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<String> externalPaths = new HashSet<String>();
|
||||
@@ -61,11 +65,15 @@ public class KeyedProperties extends ConcurrentHashMap<String,Object> {
|
||||
for(int j = ocontext.getOverlayNames().size()-1; j>=0; j--) {
|
||||
String name = ocontext.getOverlayNames().get(j);
|
||||
Map<String,Object> 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!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,12 @@ BeanFactoryAware, OverlayMapsSource, ApplicationListener {
|
||||
* @see org.archive.spring.OverlayMapsSource#getOverlayMap(java.lang.String)
|
||||
*/
|
||||
public Map<String, Object> getOverlayMap(String name) {
|
||||
return sheetsByName.get(name).getMap();
|
||||
Sheet sheet = sheetsByName.get(name);
|
||||
if (sheet != null) {
|
||||
return sheet.getMap();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user