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 13:29:25 UTC

[plc4x] branch feature/mspec-ng updated: fix(plc4j/spi): implement reserved field

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 9d0a0e4  fix(plc4j/spi): implement reserved field
9d0a0e4 is described below

commit 9d0a0e4a6dce3053fa53577c7980b925967855cb
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Oct 8 15:29:17 2021 +0200

    fix(plc4j/spi): implement reserved field
---
 .../plc4x/java/spi/codegen/fields/FieldReaderAssert.java    |  8 ++++----
 .../plc4x/java/spi/codegen/fields/FieldReaderConst.java     |  9 ++++-----
 .../plc4x/java/spi/codegen/fields/FieldReaderReserved.java  | 13 ++++++++++++-
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderAssert.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderAssert.java
index 35fd9a0..85fb50a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderAssert.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderAssert.java
@@ -37,10 +37,10 @@ public class FieldReaderAssert<T> implements FieldReader<T> {
     }
 
     public T readAssertField(String logicalName, DataReader<T> dataReader, T expectedValue, WithReaderArgs... readerArgs) throws ParseException {
-        T readValue = dataReader.read(logicalName, readerArgs);
-        if (Objects.equals(readValue, expectedValue)) {
-            throw new ParseAssertException("Actual value " + readValue + " doesn't match expected " + expectedValue);
+        T assertValue = dataReader.read(logicalName, readerArgs);
+        if (!Objects.equals(assertValue, expectedValue)) {
+            throw new ParseAssertException("Actual value " + assertValue + " doesn't match expected " + expectedValue);
         }
-        return readValue;
+        return assertValue;
     }
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderConst.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderConst.java
index 8ee12a9..3e0f66e 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderConst.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderConst.java
@@ -19,7 +19,6 @@
 package org.apache.plc4x.java.spi.codegen.fields;
 
 import org.apache.plc4x.java.spi.codegen.io.DataReader;
-import org.apache.plc4x.java.spi.generation.ParseAssertException;
 import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
 import org.slf4j.Logger;
@@ -37,11 +36,11 @@ public class FieldReaderConst<T> implements FieldReader<T> {
     }
 
     public T readAssertField(String logicalName, DataReader<T> dataReader, T expectedValue, WithReaderArgs... readerArgs) throws ParseException {
-        T readValue = dataReader.read(logicalName, readerArgs);
-        if (Objects.equals(readValue, expectedValue)) {
-            throw new ParseException("Actual value " + readValue + " doesn't match expected " + expectedValue);
+        T constValue = dataReader.read(logicalName, readerArgs);
+        if (!Objects.equals(constValue, expectedValue)) {
+            throw new ParseException("Actual value " + constValue + " doesn't match expected " + expectedValue);
         }
-        return readValue;
+        return constValue;
     }
 
 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderReserved.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderReserved.java
index 68ed531..fbb262f 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderReserved.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderReserved.java
@@ -19,18 +19,29 @@
 package org.apache.plc4x.java.spi.codegen.fields;
 
 import org.apache.plc4x.java.spi.codegen.io.DataReader;
+import org.apache.plc4x.java.spi.generation.ParseAssertException;
 import org.apache.plc4x.java.spi.generation.ParseException;
 import org.apache.plc4x.java.spi.generation.WithReaderArgs;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Objects;
+
 public class FieldReaderReserved<T> implements FieldReader<T> {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(FieldReaderReserved.class);
 
     @Override
     public T readField(String logicalName, DataReader<T> dataReader, WithReaderArgs... readerArgs) throws ParseException {
-        return switchByteOrderIfNecessary(() -> dataReader.read(logicalName, readerArgs), dataReader, extractByteOder(readerArgs).orElse(null));
+        throw new IllegalStateException("not possible with reserved field");
+    }
+
+    public T readAssertField(String logicalName, DataReader<T> dataReader, T referenceValue, WithReaderArgs... readerArgs) throws ParseException {
+        T reserved = dataReader.read(logicalName, readerArgs);
+        if (!Objects.equals(reserved, referenceValue)) {
+            LOGGER.info("Expected constant value {} but got {} for reserved field.", referenceValue, reserved);
+        }
+        return reserved;
     }
 
 }