Skip to content

Commit b85639f

Browse files
committed
fix: only read 'properties' if present
1 parent b813021 commit b85639f

2 files changed

Lines changed: 21 additions & 8 deletions

File tree

src/main/java/io/weaviate/client6/v1/api/collections/CollectionConfig.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -264,16 +264,19 @@ public void write(JsonWriter out, CollectionConfig value) throws IOException {
264264
public CollectionConfig read(JsonReader in) throws IOException {
265265
var jsonObject = JsonParser.parseReader(in).getAsJsonObject();
266266

267-
var mixedProperties = jsonObject.get("properties").getAsJsonArray();
268267
var references = new JsonArray();
269268
var properties = new JsonArray();
270269

271-
for (var property : mixedProperties) {
272-
var dataTypes = property.getAsJsonObject().get("dataType").getAsJsonArray();
273-
if (dataTypes.size() == 1 && DataType.KNOWN_TYPES.contains(dataTypes.get(0).getAsString())) {
274-
properties.add(property);
275-
} else {
276-
references.add(property);
270+
if (jsonObject.has("properties") && jsonObject.get("properties").isJsonArray()) {
271+
var mixedProperties = jsonObject.get("properties").getAsJsonArray();
272+
273+
for (var property : mixedProperties) {
274+
var dataTypes = property.getAsJsonObject().get("dataType").getAsJsonArray();
275+
if (dataTypes.size() == 1 && DataType.KNOWN_TYPES.contains(dataTypes.get(0).getAsString())) {
276+
properties.add(property);
277+
} else {
278+
references.add(property);
279+
}
277280
}
278281
}
279282

src/test/java/io/weaviate/client6/v1/internal/json/JSONTest.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ public void test_ReferenceAddManyResponse_CustomDeserializer() {
400400
"result": { "status": "SUCCESS", "errors": {} }
401401
},
402402
{
403-
"result": { "status": "FAILED", "errors": {
403+
"result": { "status": "FAILED", "errors": jsonObject.has("properties") && {
404404
"error": [ "oops" ]
405405
}}
406406
}
@@ -413,4 +413,14 @@ public void test_ReferenceAddManyResponse_CustomDeserializer() {
413413
.as("response contains 1 error")
414414
.hasSize(1);
415415
}
416+
417+
@Test
418+
public void test_CollectionConfig_read_empty() {
419+
var json = """
420+
{ "class": "BarebonesCollection" }
421+
""";
422+
Assertions.assertThatCode(() -> JSON.deserialize(json, CollectionConfig.class))
423+
.as("deserialize CollectionConfig with no properties")
424+
.doesNotThrowAnyException();
425+
}
416426
}

0 commit comments

Comments
 (0)