X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fstate%2FStateManager.java;h=5f5aaf4e2994209aadbdd031d57ed880f470d1b8;hb=b33554a0bda4b59cdc0b4a5e69623d6150228d39;hp=ef6d2f7adcf3e03cd3ffadbc94fdb975f7655187;hpb=4a630f0f9c303711ee63c4a52f4fcb1b382bba8d;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/state/StateManager.java b/src/main/java/com/indexdata/mkjsf/pazpar2/state/StateManager.java index ef6d2f7..5f5aaf4 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/state/StateManager.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/state/StateManager.java @@ -97,20 +97,29 @@ public class StateManager implements Serializable { } else { logger.debug("State key change. Was: [" + currentKey + "]. Will be ["+key+"]"); if (states.get(key)==null) { - logger.error("The back-end received an unknow state key: ["+ key +"]."); - } else { - if (states.get(key).getCommand("search").equals(states.get(currentKey).getCommand("search"))) { - logger.debug("No search change detected"); - } else { - hasPendingStateChange("search",true); - } - if (states.get(key).getCommand("record").equals(states.get(currentKey).getCommand("record"))) { - logger.debug("No record change detected"); + logger.error("The back-end received an unknow state key, probably UI generated: ["+ key +"]."); + if (key == null || key.length()==0) { + logger.info("Empty key received, treating it as identical to current key going forward."); + key = currentKey; } else { - hasPendingStateChange("record",true); + if (states.get(currentKey) != null) { + logger.info("Current search state cached under both of [" + key + "] and [" + currentKey + "]"); + states.put(key,states.get(currentKey)); + } } - currentKey = key; - } + } + + if (states.get(key).getCommand("search").equals(states.get(currentKey).getCommand("search"))) { + logger.debug("No search change detected"); + } else { + hasPendingStateChange("search",true); + } + if (states.get(key).getCommand("record").equals(states.get(currentKey).getCommand("record"))) { + logger.debug("No record change detected"); + } else { + hasPendingStateChange("record",true); + } + currentKey = key; } }