Implemented Timeout rewrite.

Change-Id: Icdbb54451e29b8978f7a5749486cb7adee23327f
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/TimeoutRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/TimeoutRewriteTest.java
new file mode 100644
index 0000000..43146ed
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/TimeoutRewriteTest.java
@@ -0,0 +1,63 @@
+package de.ids_mannheim.korap.rewrite;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.config.SpringJerseyTest;
+import de.ids_mannheim.korap.config.TestVariables;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.query.serialize.QuerySerializer;
+import de.ids_mannheim.korap.user.User;
+import de.ids_mannheim.korap.utils.JsonUtils;
+
+public class TimeoutRewriteTest extends SpringJerseyTest {
+
+	@Autowired
+	public KustvaktConfiguration config;
+
+	@Test
+	public void testReplaceTimeout () throws KustvaktException {
+		RewriteHandler handler = new RewriteHandler(config);
+        handler.add(TimeoutRewrite.class);
+        
+        Map<String, Object> map = new HashMap<String,Object>();
+        map.put("count", 25);
+        map.put("timeout", 50000);
+        QuerySerializer s = new QuerySerializer();
+        s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
+        s.setMeta(map);
+        String result = s.toJSON();
+        JsonNode node = JsonUtils.readTree(handler.processQuery(result,
+                User.UserFactory.getUser("test_user")));
+        
+        node = node.at("/meta"); 
+        assertEquals(10000, node.at("/timeout").asInt());
+        assertEquals(50000, node.at("/rewrites/0/original").asInt());
+	}
+	
+	@Test
+	public void testAddTimeout () throws KustvaktException {
+		RewriteHandler handler = new RewriteHandler(config);
+        handler.add(TimeoutRewrite.class);
+        
+        Map<String, Object> map = new HashMap<String,Object>();
+        map.put("count", 25);
+        QuerySerializer s = new QuerySerializer();
+        s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
+        s.setMeta(map);
+        String result = s.toJSON();
+        JsonNode node = JsonUtils.readTree(handler.processQuery(result,
+                User.UserFactory.getUser("test_user")));
+        
+        node = node.at("/meta"); 
+        assertEquals(10000, node.at("/timeout").asInt());
+	}
+}
diff --git a/src/test/resources/test-config.xml b/src/test/resources/test-config.xml
index 7a95588..5fd5ff2 100644
--- a/src/test/resources/test-config.xml
+++ b/src/test/resources/test-config.xml
@@ -214,6 +214,8 @@
 	<!-- Rewrite -->
 	<bean id="foundryRewrite"
 		class="de.ids_mannheim.korap.rewrite.FoundryRewrite" />
+	<bean id="timeoutRewrite"
+	class="de.ids_mannheim.korap.rewrite.TimeoutRewrite" />	
 	<bean id="availabilityRewrite"
 		class="de.ids_mannheim.korap.rewrite.AvailabilityRewrite" />
 	<bean id="virtualCorpusRewrite"
@@ -227,6 +229,7 @@
 	<util:list id="rewriteTasks"
 		value-type="de.ids_mannheim.korap.rewrite.RewriteTask">
 		<ref bean="foundryRewrite" />
+		<ref bean="timeoutRewrite" />
 		<ref bean="availabilityRewrite" />
 		<ref bean="virtualCorpusRewrite" />
 		<ref bean="queryReferenceRewrite" />
@@ -241,6 +244,7 @@
 	<util:list id="statisticsRewriteTasks"
 		value-type="de.ids_mannheim.korap.rewrite.RewriteTask">
 		<ref bean="foundryRewrite" />
+		<ref bean="timeoutRewrite" />
 		<ref bean="virtualCorpusRewrite" />
 		<ref bean="queryReferenceRewrite" />
 	</util:list>