Add apiVersion for checking VC in caching process.
Since it involves actual caching process, it cannot be easily tested.
Change-Id: Iaaa4c449fab2917b8bf6c9c4b39fe7dac26eadf9
diff --git a/Changes b/Changes
index d24d91e..032d1ed 100644
--- a/Changes
+++ b/Changes
@@ -17,6 +17,7 @@
- Add apiVersion to rewrite (#806)
- Fix collection/corpus paths in the test suite (#806)
- Fix authorization with POST tests.
+- Add apiVersion for checking VC in caching process (#806)
# version 0.79.1
diff --git a/src/main/java/de/ids_mannheim/korap/core/service/BasicService.java b/src/main/java/de/ids_mannheim/korap/core/service/BasicService.java
index cfd6e1c..6ea75dc 100644
--- a/src/main/java/de/ids_mannheim/korap/core/service/BasicService.java
+++ b/src/main/java/de/ids_mannheim/korap/core/service/BasicService.java
@@ -63,14 +63,15 @@
}
if (json != null) {
- checkVC(json);
+ checkVC(json, apiVersion);
}
return json;
}
- protected void checkVC (String json) throws KustvaktException {
+ protected void checkVC (String json, double apiVersion) throws KustvaktException {
JsonNode node = JsonUtils.readTree(json);
- node = node.at("/collection");
+ String nodeName = (apiVersion >= 1.1) ? "corpus" : "collection";
+ node = node.at("/"+nodeName);
if (node.has("ref")) {
String vcName = node.path("ref").asText();
if (vcName.contains("/")) {
diff --git a/src/main/java/de/ids_mannheim/korap/core/service/StatisticService.java b/src/main/java/de/ids_mannheim/korap/core/service/StatisticService.java
index 173981b..61b8cef 100644
--- a/src/main/java/de/ids_mannheim/korap/core/service/StatisticService.java
+++ b/src/main/java/de/ids_mannheim/korap/core/service/StatisticService.java
@@ -36,11 +36,12 @@
return stats;
}
- public String retrieveStatisticsForKoralQuery (String koralQuery)
+ public String retrieveStatisticsForKoralQuery (String koralQuery,
+ double apiVersion)
throws KustvaktException {
String stats = null;
if (koralQuery != null && !koralQuery.isEmpty()) {
- checkVC(koralQuery);
+ checkVC(koralQuery, apiVersion);
stats = searchKrill.getStatistics(koralQuery);
}
else {
diff --git a/src/main/java/de/ids_mannheim/korap/core/web/controller/StatisticController.java b/src/main/java/de/ids_mannheim/korap/core/web/controller/StatisticController.java
index 466fa24..0fb7099 100644
--- a/src/main/java/de/ids_mannheim/korap/core/web/controller/StatisticController.java
+++ b/src/main/java/de/ids_mannheim/korap/core/web/controller/StatisticController.java
@@ -105,9 +105,16 @@
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Response getStatisticsFromKoralQuery (
@Context SecurityContext context, @Context Locale locale,
+ @Context ContainerRequestContext requestContext,
String koralQuery) {
+ List<PathSegment> pathSegments = requestContext.getUriInfo()
+ .getPathSegments();
+ String version = pathSegments.get(0).getPath();
+ double apiVersion = Double.parseDouble(version.substring(1));
+
try {
- String stats = service.retrieveStatisticsForKoralQuery(koralQuery);
+ String stats = service.retrieveStatisticsForKoralQuery(koralQuery,
+ apiVersion);
return Response.ok(stats)
.header("X-Index-Revision", service.getIndexFingerprint())
.build();
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
index 98c8c3d..d2316e0 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
@@ -108,6 +108,8 @@
node.at("/meta/fields").toString());
}
+ // Kustvakt sends query with only corpus, but Krill returns both corpus and
+ // collection
@Test
public void testSearchQueryPublicCorpora () throws KustvaktException {
Response response = target().path(API_VERSION).path("search")
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
index 97b50c6..0c76c4b 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
@@ -148,9 +148,9 @@
}
@Test
- public void testGetStatisticsWithKoralQuery ()
+ public void testGetStatisticsWithKoralQueryV1_0 ()
throws IOException, KustvaktException {
- Response response = target().path(API_VERSION).path("statistics")
+ Response response = target().path(API_VERSION_V1_0).path("statistics")
.request()
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.post(Entity.json("{ \"collection\" : {\"@type\": "
@@ -167,6 +167,25 @@
assertEquals(2985, node.at("/sentences").asInt());
assertEquals(128, node.at("/paragraphs").asInt());
}
+
+ @Test
+ public void testGetStatisticsWithKoralQuery ()
+ throws IOException, KustvaktException {
+ Response response = target().path(API_VERSION).path("statistics")
+ .request()
+ .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+ .post(Entity.json("{ \"corpus\" : {\"@type\": "
+ + "\"koral:docGroupRef\", \"ref\": \"system-vc\"} }"));
+ assertEquals("Wes8Bd4h1OypPqbWF5njeQ==",
+ response.getHeaders().getFirst("X-Index-Revision"));
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ String ent = response.readEntity(String.class);
+ JsonNode node = JsonUtils.readTree(ent);
+ assertEquals(2, node.at("/documents").asInt());
+ assertEquals(72770, node.at("/tokens").asInt());
+ assertEquals(2985, node.at("/sentences").asInt());
+ assertEquals(128, node.at("/paragraphs").asInt());
+ }
@Test
public void testGetStatisticsWithEmptyCollection ()