import org.apache.log4j.Logger;\r
\r
import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;\r
+import com.indexdata.mkjsf.pazpar2.commands.sp.AuthCommand;\r
import com.indexdata.mkjsf.utils.Utils;\r
\r
@SessionScoped\r
\r
Map<String, Pazpar2State> states = new HashMap<String, Pazpar2State>();\r
String currentKey = "";\r
- private static List<String> allCommands = new ArrayList<String>(Arrays.asList("init","ping","settings","search","stat","show","record","termlist","bytarget"));\r
+ private static List<String> allCommands = new ArrayList<String>(Arrays.asList("init","ping","settings","search","stat","show","record","termlist","bytarget",\r
+ /* SP extras */ "auth","categories"));\r
Map<String,Boolean> pendingStateChanges = new HashMap<String,Boolean>();\r
private static Logger logger = Logger.getLogger(StateManager.class);\r
private List<StateListener> listeners = new ArrayList<StateListener>();\r
} else {\r
logger.debug("State key change. Was: [" + currentKey + "]. Will be ["+key+"]");\r
if (states.get(key)==null) {\r
- logger.error("The back-end received an unknow state key: ["+ key +"]."); \r
- } else {\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
+ logger.error("The back-end received an unknow state key, probably UI generated: ["+ key +"].");\r
+ if (key == null || key.length()==0) {\r
+ logger.info("Empty key received, treating it as identical to current key going forward.");\r
+ key = currentKey;\r
} else {\r
- hasPendingStateChange("record",true);\r
+ if (states.get(currentKey) != null) {\r
+ logger.info("Current search state cached under both of [" + key + "] and [" + currentKey + "]");\r
+ states.put(key,states.get(currentKey));\r
+ }\r
}\r
- currentKey = key;\r
- } \r
+ }\r
+ \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