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());
 	}
 }