Skip to content

Commit

Permalink
Use upstream agreed metadata (See zarr-developers/zarr-python#715)
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-allan authored and joshmoore committed Apr 9, 2021
1 parent 51514a0 commit 5877f3f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
25 changes: 20 additions & 5 deletions src/main/java/com/bc/zarr/ZarrHeader.java
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,11 @@ public void serialize(ZarrHeader value, JsonGenerator gen, SerializerProvider pr
gen.writeObjectField("order", value.order);
gen.writeObjectField("shape", value.getShape());
gen.writeNumberField("zarr_format", value.zarr_format);
if (value.nested != null) {
gen.writeBooleanField("nested", value.nested);
String dimensionSeparator = ".";
if (Boolean.TRUE.equals(value.nested)) {
dimensionSeparator = "/";
}
gen.writeStringField("dimension_separator", dimensionSeparator);
gen.writeEndObject();
}
}
Expand Down Expand Up @@ -188,9 +190,22 @@ public ZarrHeader deserialize(JsonParser p, DeserializationContext ctxt) throws
}

Boolean nested = null;
JsonNode nestedNode = (JsonNode) root.path("nested");
if (!nestedNode.isMissingNode()) {
nested = nestedNode.asBoolean();
JsonNode dimensionSeparatorNode =
(JsonNode) root.path("dimension_separator");
if (!dimensionSeparatorNode.isMissingNode()) {
String dimensionSeparator = dimensionSeparatorNode.asText();
switch (dimensionSeparator) {
case ".":
nested = false;
break;
case "/":
nested = true;
break;
default:
throw new IllegalArgumentException(
"Unsupported dimension separator: "
+ dimensionSeparator);
}
}
return new ZarrHeader(shape, chunks, getRawDataType(dtype).toString(), getByteOrder(dtype), fill, compressor, nested);
}
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/com/bc/zarr/ZarrUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,8 @@ private String expectedJson(boolean nullCompressor) {
pw.println(" 10,");
pw.println(" 15");
pw.println(" ],");
pw.println(" \"zarr_format\": 2");
pw.println(" \"zarr_format\": 2,");
pw.println(" \"dimension_separator\": \".\"");
pw.println("}");

return strip(sw.toString());
Expand Down

0 comments on commit 5877f3f

Please sign in to comment.