Fix Jackson and serialization deprecated methods

[AI assisted]
1. JsonNode.fields() → JsonNode.properties().iterator()
2. ObjectNode.put(String, JsonNode) → ObjectNode.set(String, JsonNode)
3. ObjectNode.putAll(ObjectNode) → ObjectNode.setAll(ObjectNode)
4. Custom KoralNode.put() → KoralNode.set()

Change-Id: I72fe9febcc69d5951077eebb0e245fde62037bdc
diff --git a/Changes b/Changes
index b586e14..26308d1 100644
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@
 
 - Reactivate Query Serializer Web-service (#903)
 - Fix deprecated URL constructor (AI assisted)
+- Fix Jackson and serialization deprecated methods (AI assisted)
 
 # version 1.1
 
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/CollectionCleanRewrite.java b/src/main/java/de/ids_mannheim/korap/rewrite/CollectionCleanRewrite.java
index 3955209..69e1d04 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/CollectionCleanRewrite.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/CollectionCleanRewrite.java
@@ -24,7 +24,7 @@
     public KoralNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
             User user, double apiVersion) {
         JsonNode jsonNode = process(node.rawNode());
-        return node.wrapNode(jsonNode);
+        return KoralNode.wrapNode(jsonNode);
     }
 
     private JsonNode process (JsonNode root) {
@@ -55,7 +55,7 @@
                     ObjectNode ob = (ObjectNode) root;
                     ob.remove(Arrays.asList(
                             new String[] { "@type", "operation", "operands" }));
-                    ob.putAll((ObjectNode) sub);
+                    ob.setAll((ObjectNode) sub);
                 }
             }
         }
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/IdWriter.java b/src/main/java/de/ids_mannheim/korap/rewrite/IdWriter.java
index bc98530..e0685f6 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/IdWriter.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/IdWriter.java
@@ -23,7 +23,7 @@
         if (node.get("@type").equals("koral:token")) {
             String s = extractToken(node.rawNode());
             if (s != null && !s.isEmpty())
-                node.put("idn", s + "_" + counter++);
+                node.set("idn", s + "_" + counter++, null);
         }
         return node;
     }
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/KoralNode.java b/src/main/java/de/ids_mannheim/korap/rewrite/KoralNode.java
index fb99954..e7c1a0a 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/KoralNode.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/KoralNode.java
@@ -3,9 +3,6 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import de.ids_mannheim.korap.utils.JsonUtils;
-
-import java.util.*;
 
 /**
  * @author hanl
@@ -71,7 +68,7 @@
             else if (value instanceof Integer)
                 n.put(name, (Integer) value);
             else if (value instanceof JsonNode)
-                n.put(name, (JsonNode) value);
+                n.set(name, (JsonNode) value);
 
             this.rewrites.add("override", ident);
         }
@@ -91,13 +88,8 @@
                 !this.node.at(path).isMissingNode()) {
             ObjectNode n = (ObjectNode) this.node.at(path);
             n.removeAll();
-            n.putAll((ObjectNode) value);
-
-            String name = path;
-            if (ident != null)
-                name = ident.toString(); // scope is simply RewriteIdentifier ?? 
-
-            this.rewrites.add("override", name);
+            n.setAll((ObjectNode) value);
+            this.rewrites.add("override", ident);
         }
     }
     
@@ -174,7 +166,7 @@
     }
 
     public void removeNode (RewriteIdentifier ident) {
-        this.rewrites.add("deletion", ident.toString());
+        this.rewrites.add("deletion", ident);
         this.remove = true;
     }
 
@@ -197,7 +189,7 @@
 
     public KoralNode get (int i) {
         //        this.node = this.node.get(i);
-        return this.wrapNode(this.node.get(i));
+        return KoralNode.wrapNode(this.node.get(i));
     }
 
     public int asInt() {
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java b/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java
index 83979d8..1f4d69f 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/KoralRewriteBuilder.java
@@ -32,14 +32,16 @@
 	public KoralRewriteBuilder add (String op, RewriteIdentifier ri) {
 		KoralRewrite rewrite = new KoralRewrite();
 		rewrite.setOperation(op);
-		if (ri.getScope() != null) {
-			rewrite.setScope(ri.getScope());
-		}
-		if (ri.getOriginal() != null) {
-			rewrite.setOriginal(ri.getOriginal());
-		}
-		if (ri.getComment() != null) {
-			rewrite.setComment(ri.getComment());
+		if (ri != null) {
+    		if (ri.getScope() != null) {
+    			rewrite.setScope(ri.getScope());
+    		}
+    		if (ri.getOriginal() != null) {
+    			rewrite.setOriginal(ri.getOriginal());
+    		}
+    		if (ri.getComment() != null) {
+    			rewrite.setComment(ri.getComment());
+    		}
 		}
 		this.rewrites.add(rewrite);
 		return this;
@@ -57,9 +59,9 @@
 			}
 			else if (node.isObject()) {
 				ObjectNode n = (ObjectNode) node;
-				List l = new LinkedList<>();
+				List<Object> l = new LinkedList<>();
 				l.add(JsonUtils.valueToTree(rewrite.map));
-				n.put("rewrites", JsonUtils.valueToTree(l));
+				n.set("rewrites", JsonUtils.valueToTree(l));
 			}
 			else {
 				//fixme: matches in result will land here. rewrites need to be placed under root node - though then there might be unclear where they belong to
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/RewriteHandler.java b/src/main/java/de/ids_mannheim/korap/rewrite/RewriteHandler.java
index 29e27cb..e528805 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/RewriteHandler.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/RewriteHandler.java
@@ -103,7 +103,7 @@
     public boolean add (Class<? extends RewriteTask> rewriter) {
         RewriteTask task;
         try {
-            Constructor c = rewriter.getConstructor();
+            Constructor<? extends RewriteTask> c = rewriter.getConstructor();
             task = (RewriteTask) c.newInstance();
         }
         catch (NoSuchMethodException | InvocationTargetException
@@ -202,7 +202,7 @@
                 jlog.debug("Running rewrite process on query " + root);
             }
             if (root != null) {
-                Iterator<Map.Entry<String, JsonNode>> it = root.fields();
+                Iterator<Map.Entry<String, JsonNode>> it = root.properties().iterator();
                 while (it.hasNext()) {
                     Map.Entry<String, JsonNode> next = it.next();
                     processNode(next.getKey(), next.getValue(), result, apiVersion);
diff --git a/src/main/java/de/ids_mannheim/korap/utils/KoralCollectionQueryBuilder.java b/src/main/java/de/ids_mannheim/korap/utils/KoralCollectionQueryBuilder.java
index 286920d..8a503e7 100644
--- a/src/main/java/de/ids_mannheim/korap/utils/KoralCollectionQueryBuilder.java
+++ b/src/main/java/de/ids_mannheim/korap/utils/KoralCollectionQueryBuilder.java
@@ -164,7 +164,7 @@
                                     ? this.mergeOperator.toLowerCase()
                                     : "and", result, tobase);
                 }
-                ((ObjectNode) base).put(nodeName, result);
+                ((ObjectNode) base).set(nodeName, result);
                 return base;
             }
             return this.base;
@@ -219,7 +219,7 @@
             node.put("operation", "operation:" + op);
             ArrayNode ops = JsonUtils.createArrayNode();
             ops.addAll(Arrays.asList(groups));
-            node.put("operands", ops);
+            node.set("operands", ops);
             return node;
         }