X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fdata%2FResponses.java;h=7790c6f1f48b8baee9f8a76fce1f883a3edd5efb;hb=4a955f3133271ae793c1422d4a61327f7c149be9;hp=920ef6be9966a785054d427fd86038fe655f6914;hpb=3d72901f9f5e443837bf67603024de8c7d06a68e;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java index 920ef6b..7790c6f 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java @@ -16,16 +16,24 @@ import org.apache.log4j.Logger; import com.indexdata.mkjsf.errors.ErrorHelper; import com.indexdata.mkjsf.errors.ErrorInterface; -import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse; +import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject; +import com.indexdata.mkjsf.pazpar2.data.sp.SpResponses; import com.indexdata.mkjsf.utils.Utils; -@Named("pzresp") @SessionScoped +/** + * Provides references to all current data objects and has general methods for clearing certain response data. + * + * @author Niels Erik + * + */ +@SessionScoped @Named public class Responses implements Serializable { private static final long serialVersionUID = -7543231258346154642L; protected Map dataObjects = new ConcurrentHashMap(); private static Logger logger = Logger.getLogger(Responses.class); private ErrorHelper errorHelper = null; + private SpResponses sp = null; public Responses() { } @@ -43,10 +51,15 @@ public class Responses implements Serializable { logger.info("Error detected in search"); return true; } - for (String name : dataObjects.keySet()) { + for (String name : dataObjects.keySet()) { if (dataObjects.get(name).hasApplicationError()) { - logger.info("Error detected in " + name); - return true; + if (dataObjects.get(name) instanceof SpResponseDataObject && + ((SpResponseDataObject)dataObjects.get(name)).unsupportedCommand()) { + logger.debug("Command [" + name + "] not supported by this service"); + } else { + logger.info("Error detected in " + name); + return true; + } } } return false; @@ -74,25 +87,31 @@ public class Responses implements Serializable { return error; } - public void resetSearchResponses() { + /** + * Empties all data objects populated after a search (including the search response itself) + * + */ + public void resetSearchAndBeyond() { logger.debug("Resetting show,stat,termlist,bytarget,record,search response objects."); dataObjects.put("show", new ShowResponse()); dataObjects.put("stat", new StatResponse()); dataObjects.put("termlist", new TermListsResponse()); - dataObjects.put("bytarget", new ByTarget()); + dataObjects.put("bytarget", new ByTargetResponse()); dataObjects.put("record", new RecordResponse()); - dataObjects.put("search", new SearchResponse()); + dataObjects.put("search", new SearchResponse()); + getSp().resetSearchAndBeyond(false); } - public void resetAllSessionData () { - logger.debug("Resetting all response objects"); - dataObjects = new ConcurrentHashMap(); - resetSearchResponses(); - dataObjects.put("init", new InitResponse()); - dataObjects.put("auth", new AuthResponse()); - dataObjects.put("categories", new CategoriesResponse()); + /** + * Empties all data objects populated after a service was initialized, including the init response itself + * but excluding a possible auth response + */ + public void resetInitAndBeyond () { + dataObjects.put("init", new InitResponse()); + resetSearchAndBeyond(); + getSp().resetInitAndBeyond(false); } - + public InitResponse getInit () { return ((InitResponse) dataObjects.get("init")); } @@ -125,20 +144,13 @@ public class Responses implements Serializable { return (getTermLists().getTermList(facet).getTerms()); } - public ByTarget getByTarget() { - return ((ByTarget) dataObjects.get("bytarget")); - } - - // Service Proxy extras - public AuthResponse getAuth () { - return ((AuthResponse) dataObjects.get("auth")); + public ByTargetResponse getByTarget() { + return ((ByTargetResponse) dataObjects.get("bytarget")); } - - public CategoriesResponse getCategories() { - return ((CategoriesResponse) dataObjects.get("categories")); - } - // Service Proxy extras + public InfoResponse getInfo() { + return ((InfoResponse) dataObjects.get("info")); + } public ResponseDataObject getResponseObject (String name) { return dataObjects.get(name); @@ -181,4 +193,8 @@ public class Responses implements Serializable { facesContext.responseComplete(); } + public SpResponses getSp() { + return (sp == null ? new SpResponses(this) : sp); + } + } \ No newline at end of file