From: jimtng <2554958+jimtng@users.noreply.github.com> Date: Thu, 26 Sep 2024 19:28:38 +0000 (+1000) Subject: [modbus] Discard data if transformation failed (#17457) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=d44d84eb4359b5cc5038104a8487bc92faf82672;p=openhab-addons.git [modbus] Discard data if transformation failed (#17457) Signed-off-by: Jimmy Tanagra --- diff --git a/bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/ModbusTransformation.java b/bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/ModbusTransformation.java index 9c0050f60a..10181ce7c6 100644 --- a/bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/ModbusTransformation.java +++ b/bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/ModbusTransformation.java @@ -111,10 +111,19 @@ public class ModbusTransformation { } } + /** + * Transform the given value using the configured transformations. + * + * @param value the value to transform + * @return the transformed value. If the transformation failed, return a blank string. + * This could happen in one of these situations: + * - The transformation service is not available. + * - An error occurred when performing transformations. + * - The transformation service intentionally returned null. + */ public String transform(String value) { if (transformation != null) { - // return input if transformation failed - return Objects.requireNonNull(transformation.apply(value).orElse(value)); + return Objects.requireNonNull(transformation.apply(value).orElse("")); } return Objects.requireNonNullElse(constantOutput, value); diff --git a/bundles/org.openhab.binding.modbus/src/test/java/org/openhab/binding/modbus/internal/ModbusTransformationTest.java b/bundles/org.openhab.binding.modbus/src/test/java/org/openhab/binding/modbus/internal/ModbusTransformationTest.java index 30480e39e7..e59f457f54 100644 --- a/bundles/org.openhab.binding.modbus/src/test/java/org/openhab/binding/modbus/internal/ModbusTransformationTest.java +++ b/bundles/org.openhab.binding.modbus/src/test/java/org/openhab/binding/modbus/internal/ModbusTransformationTest.java @@ -51,4 +51,11 @@ public class ModbusTransformationTest { assertFalse(transformation.isIdentityTransform()); assertEquals("constant", transformation.transform("xx")); } + + @Test + public void testTransformationFailed() { + ModbusTransformation transformation = new ModbusTransformation(List.of("NONEXISTENT(test)")); + assertFalse(transformation.isIdentityTransform()); + assertEquals("", transformation.transform("xx")); + } }