This is an automated email from the ASF dual-hosted git repository. cdutz pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 3ed3bdb674a7d0ffe71e554d031f31658ee812f3 Author: Christofer Dutz <[email protected]> AuthorDate: Tue Jul 14 17:22:50 2020 +0200 PLC4X-215 - Drivers using the BaseOptimizer (SingleFieldOptimizer) don't handle error responses gracefully - Fixed the issue by only accessing the PlcValue if the return code is 'OK' --- .../java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java index c031710..0933ec5 100644 --- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java +++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java @@ -49,9 +49,10 @@ public abstract class BaseOptimizer { for (String fieldName : curRequest.getFieldNames()) { if (readResponse.isLeft()) { PlcReadResponse subReadResponse = (PlcReadResponse) readResponse.getLeft(); - fields.put(fieldName, - new ResponseItem<>(subReadResponse.getResponseCode(fieldName), - subReadResponse.getAsPlcValue().getValue(fieldName))); + PlcResponseCode responseCode = subReadResponse.getResponseCode(fieldName); + PlcValue value = (responseCode == PlcResponseCode.OK) ? + subReadResponse.getAsPlcValue().getValue(fieldName) : null; + fields.put(fieldName, new ResponseItem<>(responseCode, value)); } else { fields.put(fieldName, new ResponseItem<>(PlcResponseCode.INTERNAL_ERROR, null)); }
