Add pipe response rewriting (#794)
limited to korap host by default. Configurable via kustvakt.conf.
Change-Id: Ifb0b6470a4b1fc6db79b3bb05443f6482f4b7ea8
diff --git a/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java b/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java
index 80b00a5..f48b8b3 100644
--- a/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/LiteJerseyTest.java
@@ -22,6 +22,9 @@
public static final String API_VERSION = "v1.0";
+ protected final static String freeCorpusAccess = "Free corpus access policy "
+ + "has been added.";
+
@Autowired
protected GenericApplicationContext applicationContext;
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java
index 8f58c16..6b3dc7f 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/SearchPipeTest.java
@@ -124,14 +124,14 @@
"operation:injection");
assertEquals(freeCorpusAccess,
node.at("/collection/rewrites/0/_comment").asText());
- node = node.at("/query/wrap/rewrites");
- assertEquals(2, node.size());
- assertEquals(node.at("/0/src").asText(), "Glemm");
- assertEquals(node.at("/0/operation").asText(), "operation:override");
- assertEquals(node.at("/0/scope").asText(), "key");
- assertEquals(node.at("/1/src").asText(), "Kustvakt");
- assertEquals(node.at("/1/operation").asText(), "operation:injection");
- assertEquals(node.at("/1/scope").asText(), "foundry");
+ node = node.at("/query/wrap/rewrites");
+ assertEquals(2, node.size());
+ assertEquals("Glemm", node.at("/0/src").asText());
+ assertEquals("operation:override", node.at("/0/operation").asText());
+ assertEquals("key", node.at("/0/scope").asText());
+ assertEquals("Kustvakt", node.at("/1/src").asText());
+ assertEquals("operation:injection", node.at("/1/operation").asText());
+ assertEquals("foundry", node.at("/1/scope").asText());
}
@Test
@@ -213,7 +213,7 @@
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
- assertEquals(node.at("/warnings/0/3").asText(), "404 Not Found");
+ assertEquals("404 Not Found", node.at("/warnings/0/3").asText());
}
@Test
@@ -225,7 +225,7 @@
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
- assertEquals(node.at("/warnings/0/3").asText(), "glemm");
+ assertEquals("Unrecognized pipe URL", node.at("/warnings/0/3").asText());
}
@Test
@@ -238,11 +238,11 @@
.queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
.queryParam("pipes", pipeUri).request().get();
String entity = response.readEntity(String.class);
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- JsonNode node = JsonUtils.readTree(entity);
- assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
- assertEquals(node.at("/warnings/0/3").asText(),
- "415 Unsupported Media Type");
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
+ assertEquals("415 Unsupported Media Type",
+ node.at("/warnings/0/3").asText() );
}
@Test
@@ -259,10 +259,11 @@
assertEquals(2, node.at("/warnings").size());
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
assertEquals(url, node.at("/warnings/0/2").asText());
- assertEquals(node.at("/warnings/0/3").asText(), "404 Not Found");
- assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/1/0").asInt());
- assertEquals(node.at("/warnings/1/2").asText(), "http://glemm");
- assertEquals(node.at("/warnings/1/3").asText(), "glemm");
+ assertEquals("404 Not Found", node.at("/warnings/0/3").asText());
+ assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/1/0").asInt());
+ assertEquals("http://glemm", node.at("/warnings/1/2").asText());
+ assertEquals("Unrecognized pipe URL",
+ node.at("/warnings/1/3").asText());
}
@Test
diff --git a/src/test/java/de/ids_mannheim/korap/web/lite/LiteSearchPipeTest.java b/src/test/java/de/ids_mannheim/korap/web/lite/LiteSearchPipeTest.java
index 704ae5f..da7b7e9 100644
--- a/src/test/java/de/ids_mannheim/korap/web/lite/LiteSearchPipeTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/lite/LiteSearchPipeTest.java
@@ -115,14 +115,14 @@
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertEquals(2, node.at("/query/wrap/key").size());
- node = node.at("/query/wrap/rewrites");
- assertEquals(2, node.size());
- assertEquals(node.at("/0/src").asText(), "Glemm");
- assertEquals(node.at("/0/operation").asText(), "operation:override");
- assertEquals(node.at("/0/scope").asText(), "key");
- assertEquals(node.at("/1/src").asText(), "Kustvakt");
- assertEquals(node.at("/1/operation").asText(), "operation:injection");
- assertEquals(node.at("/1/scope").asText(), "foundry");
+ node = node.at("/query/wrap/rewrites");
+ assertEquals(2, node.size());
+ assertEquals("Glemm", node.at("/0/src").asText());
+ assertEquals("operation:override", node.at("/0/operation").asText());
+ assertEquals("key", node.at("/0/scope").asText());
+ assertEquals("Kustvakt", node.at("/1/src").asText());
+ assertEquals("operation:injection", node.at("/1/operation").asText());
+ assertEquals("foundry", node.at("/1/scope").asText());
}
@Test
@@ -182,7 +182,7 @@
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
- assertEquals(node.at("/warnings/0/3").asText(), "404 Not Found");
+ assertEquals("404 Not Found", node.at("/warnings/0/3").asText());
}
@Test
@@ -194,7 +194,7 @@
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
- assertEquals(node.at("/warnings/0/3").asText(), "glemm");
+ assertEquals("Unrecognized pipe URL", node.at("/warnings/0/3").asText());
}
@Test
@@ -207,11 +207,11 @@
.queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
.queryParam("pipes", pipeUri).request().get();
String entity = response.readEntity(String.class);
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- JsonNode node = JsonUtils.readTree(entity);
- assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
- assertEquals(node.at("/warnings/0/3").asText(),
- "415 Unsupported Media Type");
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
+ assertEquals("415 Unsupported Media Type",
+ node.at("/warnings/0/3").asText() );
}
@Test
@@ -228,10 +228,11 @@
assertEquals(2, node.at("/warnings").size());
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
assertEquals(url, node.at("/warnings/0/2").asText());
- assertEquals(node.at("/warnings/0/3").asText(), "404 Not Found");
- assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/1/0").asInt());
- assertEquals(node.at("/warnings/1/2").asText(), "http://glemm");
- assertEquals(node.at("/warnings/1/3").asText(), "glemm");
+ assertEquals("404 Not Found", node.at("/warnings/0/3").asText());
+ assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/1/0").asInt());
+ assertEquals("http://glemm", node.at("/warnings/1/2").asText());
+ assertEquals("Unrecognized pipe URL",
+ node.at("/warnings/1/3").asText());
}
@Test
@@ -307,4 +308,5 @@
node = JsonUtils.readTree(entity);
assertEquals(StatusCodes.PIPE_FAILED, node.at("/warnings/0/0").asInt());
}
+
}
diff --git a/src/test/resources/kustvakt-lite-test.conf b/src/test/resources/kustvakt-lite-test.conf
new file mode 100644
index 0000000..0143cec
--- /dev/null
+++ b/src/test/resources/kustvakt-lite-test.conf
@@ -0,0 +1,40 @@
+# Krill settings
+
+# index dir
+krill.indexDir= sample-index
+
+krill.index.commit.count = 134217000
+krill.index.commit.log = log/krill.commit.log
+krill.index.commit.auto = 500
+krill.index.relations.max = 100
+
+# krill.namedVC=data/vc
+
+
+# Kustvakt settings
+
+api.welcome.message = Welcome to KorAP API!
+current.api.version = v1.0
+# multiple versions separated by space
+supported.api.version = v1.0
+
+# default
+kustvakt.base.url=/api/*
+
+# server
+server.port=8089
+server.host=localhost
+
+# Pipe (optional)
+# pipe.host=https://korap.ids-mannheim.de (default)
+# LOCALHOST ONLY FOR TESTING
+pipe.host=http://localhost
+
+# default foundries for layers
+default.foundry.partOfSpeech = tt
+default.foundry.lemma = tt
+default.foundry.orthography = opennlp
+default.foundry.dependency = malt
+default.foundry.constituent = corenlp
+default.foundry.morphology = marmot
+default.foundry.surface = base
\ No newline at end of file
diff --git a/src/test/resources/kustvakt-test.conf b/src/test/resources/kustvakt-test.conf
index d40c39f..a048478 100644
--- a/src/test/resources/kustvakt-test.conf
+++ b/src/test/resources/kustvakt-test.conf
@@ -31,6 +31,9 @@
## Cache
cache.total.results.enabled = true
+# Pipe
+pipe.host=http://localhost
+
# Default foundries for specific layers (optional)
#
default.foundry.partOfSpeech = tt