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 2021/10/08 14:51:28 UTC

[plc4x] branch feature/mspec-ng updated: fix(plc4j/codgen): add byte order to read/writer, add enum example

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

sruehl pushed a commit to branch feature/mspec-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/feature/mspec-ng by this push:
     new 5f268d3  fix(plc4j/codgen): add byte order to read/writer, add enum example
5f268d3 is described below

commit 5f268d3477f3c8e15dd0f5d6856f69457687d07b
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Oct 8 16:45:30 2021 +0200

    fix(plc4j/codgen): add byte order to read/writer, add enum example
---
 .../main/resources/templates/java/io-template.java.ftlh   |  5 +----
 .../java/spi/codegen/io/DataReaderComplexDefault.java     | 11 +++++++++++
 .../apache/plc4x/java/spi/codegen/io/DataReaderEnum.java  |  2 +-
 .../plc4x/java/spi/codegen/io/DataReaderEnumDefault.java  | 12 +++++++++++-
 .../java/spi/codegen/io/DataReaderSimpleBigDecimal.java   |  9 +++++++++
 .../java/spi/codegen/io/DataReaderSimpleBoolean.java      | 10 ++++++++++
 .../plc4x/java/spi/codegen/io/DataReaderSimpleByte.java   | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleByteArray.java    | 10 ++++++++++
 .../plc4x/java/spi/codegen/io/DataReaderSimpleDouble.java | 10 ++++++++++
 .../plc4x/java/spi/codegen/io/DataReaderSimpleFloat.java  | 10 ++++++++++
 .../spi/codegen/io/DataReaderSimpleSignedBigInteger.java  | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleSignedByte.java   | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleSignedInt.java    | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleSignedLong.java   | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleSignedShort.java  | 10 ++++++++++
 .../codegen/io/DataReaderSimpleUnsignedBigInteger.java    | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleUnsignedByte.java | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleUnsignedInt.java  | 10 ++++++++++
 .../java/spi/codegen/io/DataReaderSimpleUnsignedLong.java | 10 ++++++++++
 .../spi/codegen/io/DataReaderSimpleUnsignedShort.java     | 12 +++++++++++-
 .../org/apache/plc4x/java/spi/generation/ReadBuffer.java  |  4 ++++
 .../plc4x/java/spi/generation/ReadBufferByteBased.java    | 15 ++++++++++++++-
 .../plc4x/java/spi/generation/ReadBufferJsonBased.java    | 11 +++++++++++
 .../plc4x/java/spi/generation/ReadBufferXmlBased.java     | 11 +++++++++++
 24 files changed, 224 insertions(+), 8 deletions(-)

diff --git a/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh b/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
index 08532ea..d9a00cb 100644
--- a/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
+++ b/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
@@ -323,10 +323,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
 
         FieldReader${field.typeName?cap_first}.INSTANCE.read${field.typeName?cap_first}Field(String logicalName, new DataReaderSimple${helper.getLanguageTypeNameForTypeReference(simpleTypeReference, false)}(readBuffer), ${type.name}.${constField.name?upper_case}))
         <#else>
-        ${helper.getLanguageTypeNameForField(field)} ${constField.name} = ${helper.getLanguageTypeNameForField(field)}.enumForValue(${helper.getReadBufferReadMethodCall(constField.name, helper.getEnumBaseTypeReference(constField.type), "", constField)});
-        if(${constField.name} != ${type.name}.${constField.name?upper_case}) {
-            throw new ParseException("Expected constant value " + ${type.name}.${constField.name?upper_case} + " but got " + ${constField.name});
-        }
+        FieldReader${field.typeName?cap_first}.INSTANCE.read${field.typeName?cap_first}Field(String logicalName, new DataReaderEnumDefault(${helper.getLanguageTypeNameForField(field)}::enumForValue, new DataReaderSimple${helper.getLanguageTypeNameForTypeReference(simpleTypeReference, false)}(readBuffer), ${type.name}.${constField.name?upper_case})))
         </#if>
         <#break>
     <#case "discriminator">
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java
index 3f4dca8..00d2016 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderComplexDefault.java
@@ -18,6 +18,7 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
+import org.apache.plc4x.java.spi.generation.ByteOrder;
 import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.ReadBuffer;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
@@ -46,6 +47,16 @@ public class DataReaderComplexDefault<T> implements DataReaderComplex<T> {
     }
 
     @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
+
+    @Override
     public T read(String logicalName, WithReaderArgs... readerArgs) throws ParseException {
         return read(logicalName, complexSupplier, readerArgs);
     }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnum.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnum.java
index fad7756..1132988 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnum.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnum.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.java.spi.codegen.io;
 import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
 
-public interface DataReaderEnum<T> extends DataReader {
+public interface DataReaderEnum<T> extends DataReader<T> {
 
     T read(String logicalName, WithReaderArgs... readerArgs) throws ParseException;
 
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnumDefault.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnumDefault.java
index 0f73266..0834c96 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnumDefault.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderEnumDefault.java
@@ -18,7 +18,7 @@
  */
 package org.apache.plc4x.java.spi.codegen.io;
 
-import org.apache.plc4x.java.spi.codegen.WithOption;
+import org.apache.plc4x.java.spi.generation.ByteOrder;
 import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
 
@@ -45,6 +45,16 @@ public class DataReaderEnumDefault<T, I> implements DataReaderEnum<T> {
     }
 
     @Override
+    public ByteOrder getByteOrder() {
+        return dataReader.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        dataReader.setByteOrder(byteOrder);
+    }
+
+    @Override
     public T read(String logicalName, WithReaderArgs... readerArgs) throws ParseException {
         return read(logicalName, enumResolver, readerArgs);
     }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBigDecimal.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBigDecimal.java
index a68a74c..588f050 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBigDecimal.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBigDecimal.java
@@ -43,4 +43,13 @@ public class DataReaderSimpleBigDecimal implements DataReaderSimple<BigDecimal>
         readBuffer.reset(position);
     }
 
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBoolean.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBoolean.java
index 418d8bf..cb82d0a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBoolean.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleBoolean.java
@@ -45,4 +45,14 @@ public class DataReaderSimpleBoolean implements DataReaderSimple<Boolean> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByte.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByte.java
index 0cec2da..decf526 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByte.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByte.java
@@ -43,4 +43,14 @@ public class DataReaderSimpleByte implements DataReaderSimple<Byte> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByteArray.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByteArray.java
index c26b558..393808e 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByteArray.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleByteArray.java
@@ -43,4 +43,14 @@ public class DataReaderSimpleByteArray implements DataReaderSimple<byte[]> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleDouble.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleDouble.java
index 8426dd4..ef05617 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleDouble.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleDouble.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleDouble implements DataReaderSimple<Double> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleFloat.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleFloat.java
index 69f4a28..9da8b45 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleFloat.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleFloat.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleFloat implements DataReaderSimple<Float> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedBigInteger.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedBigInteger.java
index df1962e..ce4d59a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedBigInteger.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedBigInteger.java
@@ -42,4 +42,14 @@ public class DataReaderSimpleSignedBigInteger implements DataReaderSimple<BigInt
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedByte.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedByte.java
index 831a43a..50fd661 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedByte.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedByte.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleSignedByte implements DataReaderSimple<Byte> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedInt.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedInt.java
index 30290f9..005c1e8 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedInt.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedInt.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleSignedInt implements DataReaderSimple<Integer> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedLong.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedLong.java
index 3ddaada..804cea8 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedLong.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedLong.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleSignedLong implements DataReaderSimple<Long> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedShort.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedShort.java
index 423bc08..39cd4fb 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedShort.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleSignedShort.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleSignedShort implements DataReaderSimple<Short> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedBigInteger.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedBigInteger.java
index 7715bea..dad1744 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedBigInteger.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedBigInteger.java
@@ -42,4 +42,14 @@ public class DataReaderSimpleUnsignedBigInteger implements DataReaderSimple<BigI
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedByte.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedByte.java
index 0aef2b9..2b620bb 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedByte.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedByte.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleUnsignedByte implements DataReaderSimple<Byte> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedInt.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedInt.java
index 8f77b4a..3342ddb 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedInt.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedInt.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleUnsignedInt implements DataReaderSimple<Integer> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedLong.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedLong.java
index e0631f6..d1cc2e9 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedLong.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedLong.java
@@ -40,4 +40,14 @@ public class DataReaderSimpleUnsignedLong implements DataReaderSimple<Long> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedShort.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedShort.java
index 62e9bac..e52a606 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedShort.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/io/DataReaderSimpleUnsignedShort.java
@@ -29,7 +29,7 @@ public class DataReaderSimpleUnsignedShort implements DataReaderSimple<Short> {
     }
 
     @Override
-    public Short read(String logicalName, int bitLength, WithReaderArgs... readerArgs) throws ParseException  {
+    public Short read(String logicalName, int bitLength, WithReaderArgs... readerArgs) throws ParseException {
         return readBuffer.readUnsignedShort(logicalName, bitLength, readerArgs);
     }
 
@@ -40,4 +40,14 @@ public class DataReaderSimpleUnsignedShort implements DataReaderSimple<Short> {
     public void setPos(int position) {
         readBuffer.reset(position);
     }
+
+    @Override
+    public ByteOrder getByteOrder() {
+        return readBuffer.getByteOrder();
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        readBuffer.setByteOrder(byteOrder);
+    }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBuffer.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBuffer.java
index d5a3baa..9032e6b 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBuffer.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBuffer.java
@@ -28,6 +28,10 @@ public interface ReadBuffer {
 
     boolean hasMore(int numBits);
 
+    ByteOrder getByteOrder();
+
+    void setByteOrder(ByteOrder byteOrder);
+
     void pullContext(String logicalName, WithReaderArgs... readerArgs);
 
     boolean readBit(String logicalName, WithReaderArgs... readerArgs) throws ParseException;
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferByteBased.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferByteBased.java
index fc8cd27..6188f07 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferByteBased.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferByteBased.java
@@ -26,11 +26,12 @@ import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.nio.charset.Charset;
+import java.util.Objects;
 
 public class ReadBufferByteBased implements ReadBuffer {
 
     private final MyDefaultBitInput bi;
-    private final ByteOrder byteOrder;
+    private ByteOrder byteOrder;
     private final long totalBytes;
 
     public ReadBufferByteBased(byte[] input) {
@@ -38,6 +39,8 @@ public class ReadBufferByteBased implements ReadBuffer {
     }
 
     public ReadBufferByteBased(byte[] input, ByteOrder byteOrder) {
+        Objects.requireNonNull(input);
+        Objects.requireNonNull(byteOrder);
         ArrayByteInput abi = new ArrayByteInput(input);
         this.bi = new MyDefaultBitInput(abi);
         this.byteOrder = byteOrder;
@@ -70,6 +73,16 @@ public class ReadBufferByteBased implements ReadBuffer {
         return (numBits / 8) <= (totalBytes - getPos());
     }
 
+    @Override
+    public ByteOrder getByteOrder() {
+        return byteOrder;
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        this.byteOrder = byteOrder;
+    }
+
     public byte peekByte(int offset) throws ParseException {
         // Remember the old index.
         int oldIndex = bi.getDelegate().getIndex();
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferJsonBased.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferJsonBased.java
index 1c8328c..4213556 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferJsonBased.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferJsonBased.java
@@ -73,6 +73,17 @@ public class ReadBufferJsonBased implements ReadBuffer, BufferCommons {
     }
 
     @Override
+    public ByteOrder getByteOrder() {
+        // NO OP
+        return ByteOrder.BIG_ENDIAN;
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        // NO OP
+    }
+
+    @Override
     public void pullContext(String logicalName, WithReaderArgs... readerArgs) {
         logicalName = sanitizeLogicalName(logicalName);
         if (stack.isEmpty()) {
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferXmlBased.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferXmlBased.java
index 5acbe7c..015f6c5 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferXmlBased.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBufferXmlBased.java
@@ -64,6 +64,17 @@ public class ReadBufferXmlBased implements ReadBuffer, BufferCommons {
     }
 
     @Override
+    public ByteOrder getByteOrder() {
+        // NO OP
+        return ByteOrder.BIG_ENDIAN;
+    }
+
+    @Override
+    public void setByteOrder(ByteOrder byteOrder) {
+        // NO OP
+    }
+
+    @Override
     public void pullContext(String logicalName, WithReaderArgs... readerArgs) {
         StartElement startElement = travelToNextStartElement();
         String elementName = startElement.getName().getLocalPart();