Add support for "corpus" in deserialization.

"collection" is marked as legacy.

Change-Id: I2708e8972230e727c59d15a91ff27f81022c4d8f
diff --git a/Changes b/Changes
index 04a6289..dc768c4 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
-0.64.3 2025-07-25
+0.64.3 2025-08-19
     - [feature] Add tar and zip archive input support to Krill-Indexer (kupietz)
     - [security] Update dependencies (kupietz)
+	- [enhancement] Add support for "corpus" in deserialization, "collection" 
+	  is marked as legacy (margaretha). 
 
 0.64.2 2025-07-02
     - [bugfix] Restore rewrites in Meta. (diewald)
diff --git a/src/main/java/de/ids_mannheim/korap/Krill.java b/src/main/java/de/ids_mannheim/korap/Krill.java
index 7b10c8a..9b520e0 100644
--- a/src/main/java/de/ids_mannheim/korap/Krill.java
+++ b/src/main/java/de/ids_mannheim/korap/Krill.java
@@ -211,7 +211,17 @@
 
         // Parse "collection" or "collections" attribute
         try {
-            if (json.has("collection")) {
+        	if (json.has("corpus")) {
+                final JsonNode collNode = json.get("corpus");
+
+                // TODO: Temporary
+                if (collNode.fieldNames().hasNext()) {
+                    this.setCollection(
+                            new KrillCollection().fromKoral(collNode));
+                };
+            }
+        	// EM: legacy
+        	else if (json.has("collection")) {
                 final JsonNode collNode = json.get("collection");
 
                 // TODO: Temporary
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index dd4cb75..c5e3d27 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -104,6 +104,10 @@
             if (json.has("errors") && json.get("errors").size() > 0) {
                 this.addError(StatusCodes.INVALID_QUERY, "Json has errors.");
             }
+            else if (json.has("corpus")) {
+                this.fromKoral(json.get("corpus"));
+            }
+            // EM: legacy
             else if (json.has("collection")) {
                 this.fromKoral(json.get("collection"));
             }
@@ -113,7 +117,7 @@
             }
             else {
                 this.addError(StatusCodes.MISSING_COLLECTION,
-                        "Collection is not found");
+                        "VC is not found");
                 this.fromBuilder(this.build().nothing());
             }
         }
@@ -216,7 +220,7 @@
         }
         else{
             this.addError(StatusCodes.MISSING_COLLECTION,
-                    "Collection is not found " + fileName);
+                    "VC is not found " + fileName);
 			return this;
         };
 
@@ -251,6 +255,10 @@
     private CollectionBuilder.Interface _fromKoral (JsonNode json)
 		throws QueryException {
 
+    	if (json.has("corpus")) {
+			return this._fromKoral(json.at("/corpus"));
+		};
+		
 		if (json.has("collection")) {
 			return this._fromKoral(json.at("/collection"));
 		};
diff --git a/src/main/java/de/ids_mannheim/korap/response/Response.java b/src/main/java/de/ids_mannheim/korap/response/Response.java
index 46c51c1..eaf4d7f 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Response.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Response.java
@@ -557,8 +557,11 @@
         if (this.collection != null) {
             // && this.collection.getFilters().toArray().length > 0) {
             JsonNode collNode = this.collection.toJsonNode();
-            if (collNode != null)
+            if (collNode != null) {
+                json.set("corpus", collNode);
+                // EM: legacy
                 json.set("collection", collNode);
+            };
         };
 
         return (JsonNode) json;
diff --git a/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java b/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
index 6e6f7c2..828cb40 100644
--- a/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
+++ b/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
@@ -30,7 +30,7 @@
             VirtualCorpusCache.store(vcId, ki);
         });
         assertEquals("de.ids_mannheim.korap.util.QueryException: "
-                + "Collection is not found queries/collections/named-vcs/snx.jsonld",
+                + "VC is not found queries/collections/named-vcs/snx.jsonld",
                 ex.getMessage());
     }
 
@@ -46,7 +46,7 @@
         Message m = result.getError(0);
         assertEquals(StatusCodes.MISSING_COLLECTION, m.getCode());
         assertEquals(
-                "Collection is not found queries/collections/named-vcs/unknown-vc.jsonld",
+                "VC is not found queries/collections/named-vcs/unknown-vc.jsonld",
                 m.getMessage());
         assertEquals(0, result.getTotalResults());
     }
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
index 066dc43..c38a10e 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
@@ -677,7 +677,7 @@
 		Result result = krill.apply(ki);
 
 		assertEquals(StatusCodes.MISSING_COLLECTION, result.getError(0).getCode());
-		assertTrue(result.getError(0).getMessage().startsWith("Collection is not found"));
+		assertTrue(result.getError(0).getMessage().startsWith("VC is not found"));
 	};
 	
     @Test
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
index 39c98e8..99ae8b8 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
@@ -32,6 +32,12 @@
         assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
     };
 
+    @Test
+    public void corpus1 () {
+        String metaQuery = _getJSONString("corpus_1.jsonld");
+        KrillCollection kc = new KrillCollection(metaQuery);
+        assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
+    };   
 
     @Test
     public void collection2 () {
diff --git a/src/test/resources/queries/collections/corpus_1.jsonld b/src/test/resources/queries/collections/corpus_1.jsonld
new file mode 100644
index 0000000..ad8e433
--- /dev/null
+++ b/src/test/resources/queries/collections/corpus_1.jsonld
@@ -0,0 +1,13 @@
+{
+  "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.2/context.jsonld",
+  "errors" : [ ],
+  "warnings" : [ ],
+  "announcements" : [ ],
+  "corpus" : {
+    "@type" : "koral:doc",
+    "key" : "pubDate",
+    "type" : "type:date",
+    "value" : "2000-01-01",
+    "match" : "match:eq"
+  }
+}
\ No newline at end of file