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))));
}