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:17:23 UTC
[plc4x] branch feature/mspec-ng updated: fix(plc4j/spi): implement
const 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 0d697e3 fix(plc4j/spi): implement const field
0d697e3 is described below
commit 0d697e3cc63028a8bccde5a4dd2b7136e61b8445
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Oct 8 15:16:48 2021 +0200
fix(plc4j/spi): implement const field
---
.../plc4x/java/spi/codegen/fields/FieldReaderAssert.java | 11 +++++++----
.../plc4x/java/spi/codegen/fields/FieldReaderConst.java | 13 ++++++++++++-
2 files changed, 19 insertions(+), 5 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 44594e8..35fd9a0 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
@@ -25,6 +25,8 @@ import org.apache.plc4x.java.spi.generation.WithReaderArgs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Objects;
+
public class FieldReaderAssert<T> implements FieldReader<T> {
private static final Logger LOGGER = LoggerFactory.getLogger(FieldReaderAssert.class);
@@ -34,10 +36,11 @@ public class FieldReaderAssert<T> implements FieldReader<T> {
throw new IllegalStateException("not possible with assert field");
}
- public T readAssertField(String logicalName, DataReader<T> dataReader, boolean condition, WithReaderArgs... readerArgs) throws ParseException {
- if (!condition) {
- throw new ParseAssertException("Doesn't meet expectations");
+ 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);
}
- return dataReader.read(logicalName, readerArgs);
+ return readValue;
}
}
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 a1cf18c..8ee12a9 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,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 FieldReaderConst<T> implements FieldReader<T> {
private static final Logger LOGGER = LoggerFactory.getLogger(FieldReaderConst.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 const field");
+ }
+
+ 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);
+ }
+ return readValue;
}
}