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