You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/05/13 13:39:43 UTC

[plc4x] 02/06: fix(plc4j/codegen): make writers for complex and enum null safe

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 6b6a8fdcf65a87769e7914409d94ccaad2421f32
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri May 13 11:01:02 2022 +0200

    fix(plc4j/codegen): make writers for complex and enum null safe
---
 .../plc4x/java/spi/codegen/io/DataWriterComplexDefault.java   | 11 ++++++++++-
 .../plc4x/java/spi/codegen/io/DataWriterEnumDefault.java      |  8 ++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java
index 26bddffbf7..b60970fb29 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterComplexDefault.java
@@ -20,9 +20,14 @@ package org.apache.plc4x.java.spi.codegen.io;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.plc4x.java.spi.generation.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class DataWriterComplexDefault<T extends Message> implements DataWriterComplex<T> {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(DataWriterComplexDefault.class);
+
+
     protected final WriteBuffer writeBuffer;
 
     public DataWriterComplexDefault(WriteBuffer writeBuffer) {
@@ -55,7 +60,11 @@ public class DataWriterComplexDefault<T extends Message> implements DataWriterCo
         if (hasLogicalName) {
             writeBuffer.pushContext(logicalName);
         }
-        value.serialize(writeBuffer);
+        if (value != null) {
+            value.serialize(writeBuffer);
+        } else {
+            LOGGER.warn("Trying to serialize null value for {}", logicalName);
+        }
         if (hasLogicalName) {
             writeBuffer.popContext(logicalName);
         }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java
index 855e3064aa..8887bdd693 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataWriterEnumDefault.java
@@ -23,11 +23,15 @@ import org.apache.plc4x.java.spi.generation.ByteOrder;
 import org.apache.plc4x.java.spi.generation.SerializationException;
 import org.apache.plc4x.java.spi.generation.WithReaderWriterArgs;
 import org.apache.plc4x.java.spi.generation.WithWriterArgs;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.function.Function;
 
 public class DataWriterEnumDefault<T, I> implements DataWriterEnum<T> {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(DataWriterEnumDefault.class);
+
     private final Function<T, I> enumSerializer;
     private final Function<T, String> enumNamer;
     private final DataWriter<I> dataWriter;
@@ -54,6 +58,10 @@ public class DataWriterEnumDefault<T, I> implements DataWriterEnum<T> {
     }
 
     public void write(String logicalName, T value, Function<T, I> enumSerializer, Function<T, String> enumNamer, DataWriter<I> rawWriter, WithWriterArgs... writerArgs) throws SerializationException {
+        if (value == null) {
+            LOGGER.warn("Trying to serialize null value for {}", logicalName);
+            return;
+        }
         final I rawValue = enumSerializer.apply(value);
         rawWriter.write(logicalName, rawValue, ArrayUtils.addAll(writerArgs, WithReaderWriterArgs.WithAdditionalStringRepresentation(enumNamer.apply(value))));
     }