diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java b/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java index 9f1c7c3f..1ea5a3ba 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java +++ b/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java @@ -19,20 +19,20 @@ private OmeObjectMappers() { static ObjectMapper makeV2Mapper() { ObjectMapper mapper = dev.zarr.zarrjava.v2.Node.makeObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); - mapper.addHandler(new UnknownOmePropertyWarningHandler()); + mapper.addHandler(new UnknownOmePropertyLoggingHandler()); return mapper; } static ObjectMapper makeV3Mapper() { ObjectMapper mapper = dev.zarr.zarrjava.v3.Node.makeObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); - mapper.addHandler(new UnknownOmePropertyWarningHandler()); + mapper.addHandler(new UnknownOmePropertyLoggingHandler()); return mapper; } - private static final class UnknownOmePropertyWarningHandler extends DeserializationProblemHandler { - private static final Logger LOGGER = Logger.getLogger(UnknownOmePropertyWarningHandler.class.getName()); - private static final Set WARNED_FIELDS = ConcurrentHashMap.newKeySet(); + private static final class UnknownOmePropertyLoggingHandler extends DeserializationProblemHandler { + private static final Logger LOGGER = Logger.getLogger(UnknownOmePropertyLoggingHandler.class.getName()); + private static final Set UNKNOWN_FIELDS = ConcurrentHashMap.newKeySet(); @Override public boolean handleUnknownProperty( @@ -46,8 +46,8 @@ public boolean handleUnknownProperty( ? ((Class) beanOrClass).getName() : beanOrClass.getClass().getName(); String key = target + "#" + propertyName; - if (WARNED_FIELDS.add(key)) { - LOGGER.warning( + if (UNKNOWN_FIELDS.add(key)) { + LOGGER.fine( "Ignoring unknown OME metadata field '" + propertyName + "' for " + target); } p.skipChildren(); diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java b/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java index 29959965..23f35f9f 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java +++ b/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java @@ -24,11 +24,11 @@ class OmeObjectMappersTest { - private static final String WARNING_LOGGER_NAME = - "dev.zarr.zarrjava.experimental.ome.OmeObjectMappers$UnknownOmePropertyWarningHandler"; + private static final String HANDLER_LOGGER_NAME = + "dev.zarr.zarrjava.experimental.ome.OmeObjectMappers$UnknownOmePropertyLoggingHandler"; @Test - void v3MapperWarnsAndContinuesOnUnknownOmeFields() { + void v3MapperLogsAndContinuesOnUnknownOmeFields() { String unknownTop = "unknown_top_" + UUID.randomUUID(); String unknownAxis = "unknown_axis_" + UUID.randomUUID(); @@ -54,9 +54,11 @@ void v3MapperWarnsAndContinuesOnUnknownOmeFields() { omeRaw.put("multiscales", Arrays.asList(multiscale)); omeRaw.put(unknownTop, "surprise"); - Logger logger = Logger.getLogger(WARNING_LOGGER_NAME); + Logger logger = Logger.getLogger(HANDLER_LOGGER_NAME); CapturingHandler handler = new CapturingHandler(); + Level previousLevel = logger.getLevel(); logger.addHandler(handler); + logger.setLevel(Level.FINE); try { ObjectMapper mapper = OmeObjectMappers.makeV3Mapper(); OmeMetadata parsed = mapper.convertValue(omeRaw, OmeMetadata.class); @@ -66,15 +68,16 @@ void v3MapperWarnsAndContinuesOnUnknownOmeFields() { assertNotNull(parsed.multiscales); assertEquals(1, parsed.multiscales.size()); assertEquals("x", parsed.multiscales.get(0).axes.get(0).name); - assertTrue(handler.containsWarningWith(unknownTop)); - assertTrue(handler.containsWarningWith(unknownAxis)); + assertTrue(handler.containsMessageWith(unknownTop)); + assertTrue(handler.containsMessageWith(unknownAxis)); } finally { logger.removeHandler(handler); + logger.setLevel(previousLevel); } } @Test - void v2MapperWarnsAndContinuesOnUnknownFields() { + void v2MapperLogsAndContinuesOnUnknownFields() { String unknownEntryField = "unknown_entry_" + UUID.randomUUID(); Map axis = new HashMap<>(); @@ -94,9 +97,11 @@ void v2MapperWarnsAndContinuesOnUnknownFields() { entryRaw.put("datasets", Arrays.asList(dataset)); entryRaw.put(unknownEntryField, 123); - Logger logger = Logger.getLogger(WARNING_LOGGER_NAME); + Logger logger = Logger.getLogger(HANDLER_LOGGER_NAME); CapturingHandler handler = new CapturingHandler(); + Level previousLevel = logger.getLevel(); logger.addHandler(handler); + logger.setLevel(Level.FINE); try { ObjectMapper mapper = OmeObjectMappers.makeV2Mapper(); MultiscalesEntry entry = mapper.convertValue(entryRaw, MultiscalesEntry.class); @@ -105,9 +110,10 @@ void v2MapperWarnsAndContinuesOnUnknownFields() { assertEquals(1, entry.axes.size()); assertEquals(1, entry.datasets.size()); assertFalse(entry.datasets.get(0).coordinateTransformations.isEmpty()); - assertTrue(handler.containsWarningWith(unknownEntryField)); + assertTrue(handler.containsMessageWith(unknownEntryField)); } finally { logger.removeHandler(handler); + logger.setLevel(previousLevel); } } @@ -346,12 +352,12 @@ void v3MapperParsesV06SceneMetadataRefsAndNestedTransforms() { } private static final class CapturingHandler extends Handler { - private final List warnings = new ArrayList<>(); + private final List messages = new ArrayList<>(); @Override public void publish(LogRecord record) { - if (record.getLevel().intValue() >= Level.WARNING.intValue()) { - warnings.add(record.getMessage()); + if (record.getLevel().intValue() >= Level.FINE.intValue()) { + messages.add(record.getMessage()); } } @@ -363,9 +369,9 @@ public void flush() { public void close() { } - boolean containsWarningWith(String token) { - for (String warning : warnings) { - if (warning != null && warning.contains(token)) { + boolean containsMessageWith(String token) { + for (String message : messages) { + if (message != null && message.contains(token)) { return true; } }