Do not serialize duplicated keys for fields

Change-Id: I12d9e52a368ef39f446a09436ee3dbb44e7f1404
diff --git a/src/main/java/de/ids_mannheim/korap/KrillMeta.java b/src/main/java/de/ids_mannheim/korap/KrillMeta.java
index a3db457..6d715e5 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillMeta.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillMeta.java
@@ -40,7 +40,8 @@
         fields = new ArrayList<String>(16);
 
         // Lift following fields per default
-        // These fields are chosen for <legacy /> reasons
+        // These fields are chosen for
+        // <legacy /> reasons
         for (String field : new String[] {
 				"ID",
 				"UID",
diff --git a/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java b/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java
index 413b1d0..7ee4751 100644
--- a/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java
+++ b/src/main/java/de/ids_mannheim/korap/index/AbstractDocument.java
@@ -38,6 +38,7 @@
  */
 @JsonInclude(Include.NON_EMPTY)
 // @JsonIgnoreProperties(ignoreUnknown = true)
+
 public abstract class AbstractDocument extends Response {
     ObjectMapper mapper = new ObjectMapper();
     
@@ -155,20 +156,13 @@
 
 
     public void populateFields (Document doc, List<String> fields) {
-        // Remove all fields already set
         Iterator<String> fieldsIter = fields.iterator();
-        while (fieldsIter.hasNext()) {
-            if (mFields.contains(fieldsIter.next())) {
-                fieldsIter.remove();
-            };
-        };
-
         
         if (fields.contains("UID")) {
             this.setUID(doc.get("UID"));
         };
         
-        fieldsIter = fields.iterator();
+        // fieldsIter = fields.iterator();
         mFields.fieldsOrder = new ArrayList<>(16);
 
         while (fieldsIter.hasNext()) {
@@ -180,6 +174,11 @@
 
             mFields.fieldsOrder.add(name);
 
+            // Ignore fields already set
+            if (mFields.contains(name)) {
+                continue;
+            };
+
             IndexableField iField = doc.getField(name);
             
             if (iField == null)
@@ -314,6 +313,7 @@
      * 
      * @return The text sigle as a string.
      */
+    @JsonIgnore
     public String getTextSigle () {
         return this.getFieldValue("textSigle");
     };
@@ -324,6 +324,7 @@
      * 
      * @return The document sigle as a string.
      */
+    @JsonIgnore
     public String getDocSigle () {
         return this.getFieldValue("docSigle");
     };
@@ -334,12 +335,14 @@
      * 
      * @return The corpus sigle as a string.
      */
+    @JsonIgnore
     public String getCorpusSigle () {
         return this.getFieldValue("corpusSigle");
     };
 
 
     @Deprecated
+    @JsonIgnore
     public String getAvailability () {
         return this.getFieldValue("availability");
     };
@@ -369,6 +372,7 @@
             if (mf == null)
                 continue;
             String mfs = mf.key;
+
             String value = this.getFieldValue(mfs);
                 if (value != null && (
                         legacyDateFields.contains(mfs) ||
diff --git a/src/main/java/de/ids_mannheim/korap/response/MetaFields.java b/src/main/java/de/ids_mannheim/korap/response/MetaFields.java
index e083769..514292f 100644
--- a/src/main/java/de/ids_mannheim/korap/response/MetaFields.java
+++ b/src/main/java/de/ids_mannheim/korap/response/MetaFields.java
@@ -20,9 +20,6 @@
 
 public class MetaFields extends AbstractDocument {
 
-    // Mapper for JSON serialization
-    ObjectMapper mapper = new ObjectMapper();
-
     public MetaFields (String id) {
 		this.addMessage(0, "Response format is temporary");
     };
diff --git a/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java b/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java
index c6ba70e..1c60b1d 100644
--- a/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java
+++ b/src/main/java/de/ids_mannheim/korap/response/MetaFieldsObj.java
@@ -208,6 +208,7 @@
         return fieldsMap.containsKey(key);
     };
 
+
     private Iterator<String> getIterator () {
         if (this.fieldsOrder == null) {
             return fieldsMap.keySet().iterator();
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
index 53280c7..8d69760 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
@@ -7,9 +7,10 @@
 // TODO: This should only use textSigle!
 
 public class DocIdentifier {
-    protected String textSigle, // fine
-            corpusID, // LEGACY
-            docID;    // LEGACY
+    protected String
+        textSigle, // fine
+        corpusID, // LEGACY
+        docID;    // LEGACY
 
 
     // Legacy