Added URL-encoding for corpus query at in the resource service.
Change-Id: I1c3c3f8297a71a07ec672f33675095330611fbd9
diff --git a/Changes b/Changes
index b0fbbe4..e9e4518 100644
--- a/Changes
+++ b/Changes
@@ -4,8 +4,10 @@
- Add required access to resources.
- Determine corpus access dynamically using koralQuery for resources without
predefined required_access.
-- Added useful VC (https://korap.ids-mannheim.de/doc/corpus) to resources.json.
+- Added useful VC (https://korap.ids-mannheim.de/doc/corpus) to resources.json.
+ (#800)
- Omit empty resource description.
+- Added URL-encoding for corpus query at in the resource service.
# version 0.77
diff --git a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
index b91faa8..f128cd3 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
@@ -1,5 +1,7 @@
package de.ids_mannheim.korap.dto.converter;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -58,8 +60,11 @@
layers.put(annotationPair.getId(), code);
}
dto.setLayers(layers);
+
+ String encodedCQ = URLEncoder.encode(r.getCorpusQuery(),
+ Charset.forName("utf-8"));
dto.setLandingPage("https://korap.ids-mannheim.de?cq=" +
- r.getCorpusQuery());
+ encodedCQ);
dto.setInstitution(r.getInstitution());
dto.setRequiredAccess(r.getRequiredAccess());
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
index 269adb6..5cbd362 100644
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
@@ -170,7 +170,7 @@
server.setConnectors(new Connector[] { connector });
try {
- log.info("Starting server on port" + kargs.port);
+ log.info("Starting server on port: " + kargs.port);
server.start();
server.join();
}
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java
index 71df3f1..0dc1209 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java
@@ -1,15 +1,17 @@
package de.ids_mannheim.korap.web.controller;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import org.springframework.test.context.ContextConfiguration;
+
import com.fasterxml.jackson.databind.JsonNode;
-import jakarta.ws.rs.core.Response;
import de.ids_mannheim.korap.config.SpringJerseyTest;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.utils.JsonUtils;
+import jakarta.ws.rs.core.Response;
@ContextConfiguration("classpath:test-resource-config.xml")
public class ResourceControllerTest extends SpringJerseyTest {
@@ -32,9 +34,11 @@
assertEquals(1, n0.at("/languages").size());
assertEquals(6, n0.at("/layers").size());
assertEquals("IDS Mannheim", n0.at("/institution").asText());
- assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WPD17",
+ assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle%3DWPD17",
n0.at("/landingPage").asText());
assertEquals("FREE", n0.at("/requiredAccess").asText());
+ assertEquals("A collection of articles of German Wikipedia from July "
+ + "1st, 2017.", n0.at("/description").asText());
JsonNode n1 = n.get(1);
assertEquals("http://hdl.handle.net/10932/00-03B6-558F-5EA0-6301-B",
@@ -46,7 +50,7 @@
assertEquals(1, n1.at("/languages").size());
assertEquals(6, n1.at("/layers").size());
assertEquals("IDS Mannheim", n1.at("/institution").asText());
- assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WDD17",
+ assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle%3DWDD17",
n1.at("/landingPage").asText());
assertEquals("FREE", n1.at("/requiredAccess").asText());
@@ -60,9 +64,9 @@
assertEquals(1, n4.at("/languages").size());
assertEquals(6, n4.at("/layers").size());
assertEquals("IDS Mannheim", n4.at("/institution").asText());
- assertEquals("https://korap.ids-mannheim.de?cq=textType = /(.*[Rr]oman|"
- + "[Bb]iographie|[Dd]rama|[Ss]schauspiel)/",
+ assertEquals("https://korap.ids-mannheim.de?cq=textType+%3D+%2F%28.*%5BRr%5Doman%7C%5BBb%5Diographie%7C%5BDd%5Drama%7C%5BSs%5Dschauspiel%29%2F",
n4.at("/landingPage").asText());
assertEquals("FREE", n4.at("/requiredAccess").asText());
+ assertTrue(n4.at("/description").isMissingNode());
}
}