Ammends some fringe scenarios with state keys and states
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / state / StateManager.java
index 3c09920..23d59d1 100644 (file)
@@ -70,7 +70,7 @@ public class StateManager implements Serializable {
       states.put(state.getKey(), state);\r
       currentKey = state.getKey();\r
       hasPendingStateChange(command.getName(),new Boolean(true));      \r
-      logger.debug("Updating listeners with state change from " + command);\r
+      logger.debug("Updating " + listeners.size() + " listener(s) with state change from " + command);\r
       updateListeners(command.getName());      \r
     } else {\r
       logger.debug("Command " + command.getName() + " not found to change the state [" + command.getEncodedQueryString() + "]");\r
@@ -109,17 +109,21 @@ public class StateManager implements Serializable {
       logger.debug("setCurrentStateKey: no key change detected");\r
     } else {\r
       logger.debug("State key change. Was: [" + currentKey + "]. Will be ["+key+"]");\r
-      if (states.get(key).getCommand("search").equals(states.get(currentKey).getCommand("search"))) {\r
-        logger.debug("No search change detected");\r
+      if (states.get(key)==null) {\r
+        logger.error("The back-end received an unknow state key.");        \r
       } else {\r
-        hasPendingStateChange("search",true);\r
-      }\r
-      if (states.get(key).getCommand("record").equals(states.get(currentKey).getCommand("record"))) {\r
-        logger.debug("No record change detected");\r
-      } else {\r
-        hasPendingStateChange("record",true);\r
-      }\r
-      currentKey = key;\r
+        if (states.get(key).getCommand("search").equals(states.get(currentKey).getCommand("search"))) {\r
+          logger.debug("No search change detected");\r
+        } else {\r
+          hasPendingStateChange("search",true);\r
+        }\r
+        if (states.get(key).getCommand("record").equals(states.get(currentKey).getCommand("record"))) {\r
+          logger.debug("No record change detected");\r
+        } else {\r
+          hasPendingStateChange("record",true);\r
+        }\r
+        currentKey = key;\r
+      }      \r
     }\r
   }\r
 \r