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 9c0050f60a4..10181ce7c67 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 30480e39e7e..e59f457f549 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")); + } }