Clean up collection node from Krill response (#806).
This commit requires Krill response update.
Change-Id: I3fc17a6edc12dc2cab04d7c976f918c337b96b04
diff --git a/Changes b/Changes
index f9faab0..d2eeb46 100644
--- a/Changes
+++ b/Changes
@@ -11,6 +11,7 @@
- Add API version to ResourceParser & ServiceInfo (#806)
- Update Query QuerySerializer with API version in the test suite (#806)
- Add API version to KoralCollectionQueryBuilder (#806)
+- Clean up collection node from Krill response (#806)
# version 0.79.1
diff --git a/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java b/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
index 13db3ac..97bcc70 100644
--- a/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
+++ b/src/main/java/de/ids_mannheim/korap/core/service/SearchService.java
@@ -126,7 +126,7 @@
}
@SuppressWarnings("unchecked")
- public String search (double requestedVersion, String engine,
+ public String search (double apiVersion, String engine,
String username, HttpHeaders headers,
String q, String ql, String v, List<String> cqList, String fields,
String pipes, String responsePipes, Integer pageIndex,
@@ -149,7 +149,7 @@
user.setCorpusAccess(CorpusAccess.ALL);
}
- QuerySerializer serializer = new QuerySerializer(requestedVersion);
+ QuerySerializer serializer = new QuerySerializer(apiVersion);
serializer.setQuery(q, ql, v);
String cq = combineMultipleCorpusQuery(cqList);
if (cq != null)
@@ -170,7 +170,6 @@
}
String query = serializer.toJSON();
-
if (accessRewriteDisabled && showTokens) {
query = addWarning(query, StatusCodes.NOT_ALLOWED,
"Tokens cannot be shown without access.");
@@ -189,7 +188,7 @@
if (config.isTotalResultCacheEnabled() && !hasCutOff) {
query = precheckTotalResultCache(hashedKoralQuery, query);
}
-
+
KustvaktConfiguration.BACKENDS searchEngine = this.config
.chooseBackend(engine);
String result;
@@ -212,12 +211,27 @@
result = removeCutOff(result);
}
+ checkApiVersion(result, apiVersion);
+
// Response pipe rewrite
result = runPipes(result, responsePipes);
return result;
}
+ private String checkApiVersion (String result, double apiVersion)
+ throws KustvaktException {
+ ObjectNode resultNode = (ObjectNode) JsonUtils.readTree(result);
+ if (apiVersion >=1.1) {
+ resultNode.remove("collection");
+ }
+ else {
+ resultNode.remove("corpus");
+ // add API deprecation warning ?
+ }
+ return resultNode.toString();
+ }
+
private String removeCutOff (String result) throws KustvaktException {
ObjectNode resultNode = (ObjectNode) JsonUtils.readTree(result);
ObjectNode meta = (ObjectNode) resultNode.at("/meta");