You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/10/22 13:07:06 UTC
[incubator-plc4x] branch master updated: - Write tests for the
field items - Fixed a lot of bugs in the field items - Introduced the
ability to use Groovy for test code and use the Spock framework for
testing. - Changed the way the DefaultBooleanFieldItem.getByte method
works.
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/master by this push:
new 563f16f - Write tests for the field items - Fixed a lot of bugs in the field items - Introduced the ability to use Groovy for test code and use the Spock framework for testing. - Changed the way the DefaultBooleanFieldItem.getByte method works.
563f16f is described below
commit 563f16f82c14b5a4378cd43eb62aebf8953db953
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Oct 22 14:06:57 2018 +0100
- Write tests for the field items
- Fixed a lot of bugs in the field items
- Introduced the ability to use Groovy for test code and use the Spock framework for testing.
- Changed the way the DefaultBooleanFieldItem.getByte method works.
---
.../apache/plc4x/edgent/mock/MockConnection.java | 14 +-
.../apache/plc4x/edgent/mock/MockFieldHandler.java | 30 +--
.../apache/plc4x/edgent/mock/MockFieldItem.java | 4 +-
.../plc4x/java/ads/model/AdsPlcFieldHandler.java | 42 ++--
.../plc4x/java/ads/protocol/Plc4x2AdsProtocol.java | 8 +-
.../ads/protocol/util/LittleEndianDecoder.java | 2 +-
.../ads/protocol/util/LittleEndianDecoderTest.java | 6 +-
plc4j/protocols/driver-bases/base/pom.xml | 15 +-
.../base/connection/DefaultPlcFieldHandler.java | 30 +--
.../java/base/connection/PlcFieldHandler.java | 30 +--
.../java/base/messages/DefaultPlcReadResponse.java | 102 +++++-----
.../java/base/messages/DefaultPlcWriteRequest.java | 26 +--
.../base/messages/InternalPlcReadResponse.java | 4 +-
.../base/messages/InternalPlcWriteRequest.java | 8 +-
.../{FieldItem.java => BaseDefaultFieldItem.java} | 22 +--
.../messages/items/DefaultBigDecimalFieldItem.java | 22 +--
.../messages/items/DefaultBigIntegerFieldItem.java | 28 +--
.../messages/items/DefaultBooleanFieldItem.java | 128 +++++++++++-
.../messages/items/DefaultByteArrayFieldItem.java | 2 +-
.../base/messages/items/DefaultByteFieldItem.java | 8 +-
.../messages/items/DefaultDoubleFieldItem.java | 6 +-
.../base/messages/items/DefaultFloatFieldItem.java | 7 +-
.../messages/items/DefaultIntegerFieldItem.java | 8 +-
.../messages/items/DefaultLocalDateFieldItem.java | 6 +-
.../items/DefaultLocalDateTimeFieldItem.java | 4 +-
.../messages/items/DefaultLocalTimeFieldItem.java | 4 +-
.../base/messages/items/DefaultLongFieldItem.java | 8 +-
.../base/messages/items/DefaultShortFieldItem.java | 8 +-
.../messages/items/DefaultStringFieldItem.java | 4 +-
.../SingleItemToSingleRequestProtocol.java | 12 +-
.../base/messages/items/DefaultItemsSpec.groovy | 215 +++++++++++++++++++++
.../SingleItemToSingleRequestProtocolTest.java | 20 +-
...spockframework.report.IReportCreator.properties | 66 +++++++
.../ethernetip/netty/Plc4XEtherNetIpProtocol.java | 8 +-
.../ethernetip/netty/util/EnipPlcFieldHandler.java | 26 +--
.../java/modbus/netty/Plc4XModbusProtocol.java | 10 +-
.../java/modbus/util/ModbusPlcFieldHandler.java | 6 +-
.../items/DefaultModbusByteArrayFieldItemTest.java | 23 +--
.../plc4x/java/s7/netty/Plc4XS7Protocol.java | 10 +-
.../java/s7/netty/util/S7PlcFieldHandler.java | 38 ++--
.../java/s7/netty/util/S7PlcFieldHandlerTest.java | 12 +-
.../org/apache/plc4x/java/test/TestConnection.java | 12 +-
.../org/apache/plc4x/java/test/TestDevice.java | 10 +-
.../apache/plc4x/java/test/TestFieldHandler.java | 28 +--
.../org/apache/plc4x/java/test/TestFieldItem.java | 4 +-
.../org/apache/plc4x/java/test/TestDeviceTest.java | 12 +-
pom.xml | 54 +++++-
47 files changed, 802 insertions(+), 350 deletions(-)
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
index 383d3c6..6ff75e5 100644
--- a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
+++ b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
@@ -21,8 +21,6 @@ package org.apache.plc4x.edgent.mock;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.plc4x.java.api.authentication.PlcAuthentication;
-import org.apache.plc4x.java.base.messages.PlcReader;
-import org.apache.plc4x.java.base.messages.PlcWriter;
import org.apache.plc4x.java.api.exceptions.PlcIoException;
import org.apache.plc4x.java.api.messages.PlcReadRequest;
import org.apache.plc4x.java.api.messages.PlcReadResponse;
@@ -31,7 +29,7 @@ import org.apache.plc4x.java.api.messages.PlcWriteResponse;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.*;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -43,7 +41,7 @@ public class MockConnection extends org.apache.plc4x.java.base.connection.MockCo
private final String url;
private final PlcAuthentication authentication;
- private final Map<PlcField, FieldItem<?>> dataValueMap = new HashMap<>();
+ private final Map<PlcField, BaseDefaultFieldItem<?>> dataValueMap = new HashMap<>();
private long curReadCnt;
private int readExceptionTriggerCount;
private String readExceptionMsg;
@@ -81,7 +79,7 @@ public class MockConnection extends org.apache.plc4x.java.base.connection.MockCo
cf.completeExceptionally(new PlcIoException(readExceptionMsg));
return cf;
}
- Map<String, Pair<PlcResponseCode, FieldItem>> fields = new LinkedHashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> fields = new LinkedHashMap<>();
for (String fieldName : readRequest.getFieldNames()) {
PlcField field = readRequest.getField(fieldName);
fields.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, getFieldItem(field)));
@@ -117,15 +115,15 @@ public class MockConnection extends org.apache.plc4x.java.base.connection.MockCo
return CompletableFuture.completedFuture(response);
}
- public void setFieldItem(PlcField field, FieldItem<?> fieldItem) {
+ public void setFieldItem(PlcField field, BaseDefaultFieldItem<?> fieldItem) {
dataValueMap.put(field, fieldItem);
}
- public FieldItem<?> getFieldItem(PlcField field) {
+ public BaseDefaultFieldItem<?> getFieldItem(PlcField field) {
return dataValueMap.get(field);
}
- public Map<PlcField, FieldItem<?>> getAllFieldItems() {
+ public Map<PlcField, BaseDefaultFieldItem<?>> getAllFieldItems() {
return dataValueMap;
}
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
index 437cafe..788b8d7 100644
--- a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
+++ b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
@@ -22,7 +22,7 @@ package org.apache.plc4x.edgent.mock;
import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.base.connection.PlcFieldHandler;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
public class MockFieldHandler implements PlcFieldHandler {
@@ -32,72 +32,72 @@ public class MockFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeByte(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeShort(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeLong(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeFloat(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeBigDecimal(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigDecimal(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeDouble(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeString(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeDate(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeDateTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
@Override
- public FieldItem encodeByteArray(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByteArray(PlcField field, Object[] values) {
return new MockFieldItem(values);
}
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
index debe835..2a1f83f 100644
--- a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
+++ b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
@@ -19,9 +19,9 @@
package org.apache.plc4x.edgent.mock;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
-public class MockFieldItem extends FieldItem<Object> {
+public class MockFieldItem extends BaseDefaultFieldItem<Object> {
public MockFieldItem(Object... values) {
super(values);
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java
index 9d1ec6a..cbd6ca8 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsPlcFieldHandler.java
@@ -52,7 +52,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
// All of these types are declared as Bit or Bit-String types.
switch (adsField.getAdsDataType()) {
@@ -104,7 +104,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeByte(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -155,7 +155,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeShort(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -206,7 +206,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -257,7 +257,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -308,7 +308,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeLong(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -359,7 +359,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeFloat(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -410,7 +410,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeDouble(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -461,7 +461,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeString(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -512,7 +512,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -563,7 +563,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeDate(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -614,7 +614,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeDateTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BIT:
@@ -664,7 +664,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
}
- private FieldItem internalEncodeBoolean(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeBoolean(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case BOOL:
@@ -714,11 +714,11 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
return new DefaultBooleanFieldItem(booleanValues.toArray(new Boolean[0]));
}
- private FieldItem internalEncodeInteger(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeInteger(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
BigDecimal minValue = BigDecimal.valueOf(adsField.getAdsDataType().getLowerBound());
BigDecimal maxValue = BigDecimal.valueOf(adsField.getAdsDataType().getUpperBound());
- Class<? extends FieldItem> fieldType;
+ Class<? extends BaseDefaultFieldItem> fieldType;
switch (adsField.getAdsDataType()) {
case BYTE:
fieldType = DefaultByteFieldItem.class;
@@ -816,11 +816,11 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
}
- private FieldItem internalEncodeFloatingPoint(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeFloatingPoint(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
BigDecimal minValue = BigDecimal.valueOf(adsField.getAdsDataType().getLowerBound());
BigDecimal maxValue = BigDecimal.valueOf(adsField.getAdsDataType().getUpperBound());
- Class<? extends FieldItem> fieldType;
+ Class<? extends BaseDefaultFieldItem> fieldType;
switch (adsField.getAdsDataType()) {
case REAL:
fieldType = DefaultFloatFieldItem.class;
@@ -883,7 +883,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
}
}
- private FieldItem internalEncodeString(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeString(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
double maxLength = adsField.getAdsDataType().getUpperBound();
boolean encoding16Bit;
@@ -962,7 +962,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
return new DefaultStringFieldItem(stringValues.toArray(new String[0]));
}
- private FieldItem internalTimeTemporal(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalTimeTemporal(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case TIME:
@@ -981,7 +981,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
return new DefaultLocalTimeFieldItem(localTimeValues.toArray(new LocalTime[0]));
}
- private FieldItem internalDateTemporal(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalDateTemporal(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case TIME:
@@ -1000,7 +1000,7 @@ public class AdsPlcFieldHandler extends DefaultPlcFieldHandler {
return new DefaultLocalDateFieldItem(localDateValues.toArray(new LocalDate[0]));
}
- private FieldItem internalDateTimeTemporal(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalDateTimeTemporal(PlcField field, Object[] values) {
AdsField adsField = (AdsField) field;
switch (adsField.getAdsDataType()) {
case TIME:
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java
index c67f455..ba64cc4 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java
@@ -42,7 +42,7 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.*;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -152,7 +152,7 @@ public class Plc4x2AdsProtocol extends MessageToMessageCodec<AmsPacket, PlcReque
IndexGroup indexGroup = IndexGroup.of(directAdsField.getIndexGroup());
IndexOffset indexOffset = IndexOffset.of(directAdsField.getIndexOffset());
- FieldItem fieldItem = writeRequest.getFieldItems().get(0);
+ BaseDefaultFieldItem fieldItem = writeRequest.getFieldItems().get(0);
Object[] values = fieldItem.getValues();
byte[] bytes = encodeData(directAdsField.getAdsDataType(), values);
@@ -297,10 +297,10 @@ public class Plc4x2AdsProtocol extends MessageToMessageCodec<AmsPacket, PlcReque
PlcResponseCode responseCode = decodeResponseCode(responseMessage.getResult());
byte[] bytes = responseMessage.getData().getBytes();
- FieldItem<?> fieldItem = decodeData(field.getAdsDataType(), bytes);
+ BaseDefaultFieldItem<?> fieldItem = decodeData(field.getAdsDataType(), bytes);
// TODO: does every item has the same ads response or is this whole aggregation broken?
- Map<String, Pair<PlcResponseCode, FieldItem>> responseItems = plcReadRequest.getFieldNames()
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> responseItems = plcReadRequest.getFieldNames()
.stream()
.collect(Collectors.toMap(
fieldName -> fieldName,
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoder.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoder.java
index 235760e..950e4b4 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoder.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoder.java
@@ -42,7 +42,7 @@ public class LittleEndianDecoder {
}
@SuppressWarnings("unchecked")
- public static FieldItem decodeData(AdsDataType adsDataType, byte[] adsData) {
+ public static BaseDefaultFieldItem decodeData(AdsDataType adsDataType, byte[] adsData) {
ByteBuf wrappedBuffer = Unpooled.wrappedBuffer(adsData);
switch (adsDataType) {
case BIT: {
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderTest.java
index 0d2e773..1edaf37 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderTest.java
@@ -22,7 +22,7 @@ import org.apache.commons.lang3.reflect.MethodUtils;
import org.apache.plc4x.java.ads.model.AdsDataType;
import org.apache.plc4x.java.api.exceptions.PlcProtocolException;
import org.apache.plc4x.java.api.exceptions.PlcUnsupportedDataTypeException;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
@@ -48,9 +48,9 @@ public class LittleEndianDecoderTest {
@ParameterizedTest
@MethodSource("createAdsDataTypePears")
public void decodeData(AdsDataType adsDataType, Collection expectedTypes, Class<?> clazz, byte[] adsData) throws Exception {
- FieldItem<?> fieldItem = LittleEndianDecoder.decodeData(adsDataType, adsData);
+ BaseDefaultFieldItem<?> fieldItem = LittleEndianDecoder.decodeData(adsDataType, adsData);
- Method getterMethod = MethodUtils.getAccessibleMethod(FieldItem.class, "get" + clazz.getSimpleName(), int.class);
+ Method getterMethod = MethodUtils.getAccessibleMethod(BaseDefaultFieldItem.class, "get" + clazz.getSimpleName(), int.class);
LOG.info("Using {} to map", getterMethod);
List<? super Object> actualTypes = new LinkedList<>();
diff --git a/plc4j/protocols/driver-bases/base/pom.xml b/plc4j/protocols/driver-bases/base/pom.xml
index 66753a7..58b236d 100644
--- a/plc4j/protocols/driver-bases/base/pom.xml
+++ b/plc4j/protocols/driver-bases/base/pom.xml
@@ -65,10 +65,23 @@
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>3.9.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.spockframework</groupId>
+ <artifactId>spock-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.athaydes</groupId>
+ <artifactId>spock-reports</artifactId>
+ <version>1.6.1</version>
+ <scope>test</scope>
</dependency>
</dependencies>
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/DefaultPlcFieldHandler.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/DefaultPlcFieldHandler.java
index c61d361..e74be1a 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/DefaultPlcFieldHandler.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/DefaultPlcFieldHandler.java
@@ -21,77 +21,77 @@ package org.apache.plc4x.java.base.connection;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.api.model.PlcField;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeByte(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeShort(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeLong(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeFloat(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeBigDecimal(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigDecimal(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeDouble(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeString(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeDate(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeDateTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
@Override
- public FieldItem encodeByteArray(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByteArray(PlcField field, Object[] values) {
throw new PlcRuntimeException("Invalid encoder for type " + field);
}
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/PlcFieldHandler.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/PlcFieldHandler.java
index 91a7605..cddf0c7 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/PlcFieldHandler.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/PlcFieldHandler.java
@@ -20,38 +20,38 @@ package org.apache.plc4x.java.base.connection;
import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.model.PlcField;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
public interface PlcFieldHandler {
PlcField createField(String fieldQuery) throws PlcInvalidFieldException;
- FieldItem encodeBoolean(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values);
- FieldItem encodeByte(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeByte(PlcField field, Object[] values);
- FieldItem encodeShort(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeShort(PlcField field, Object[] values);
- FieldItem encodeInteger(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values);
- FieldItem encodeBigInteger(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values);
- FieldItem encodeLong(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeLong(PlcField field, Object[] values);
- FieldItem encodeFloat(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values);
- FieldItem encodeBigDecimal(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeBigDecimal(PlcField field, Object[] values);
- FieldItem encodeDouble(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values);
- FieldItem encodeString(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeString(PlcField field, Object[] values);
- FieldItem encodeTime(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeTime(PlcField field, Object[] values);
- FieldItem encodeDate(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeDate(PlcField field, Object[] values);
- FieldItem encodeDateTime(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values);
- FieldItem encodeByteArray(PlcField field, Object[] values);
+ BaseDefaultFieldItem encodeByteArray(PlcField field, Object[] values);
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
index 73cad97..30f80de 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.java.base.messages;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -36,9 +36,9 @@ import java.util.Map;
public class DefaultPlcReadResponse implements InternalPlcReadResponse {
private final InternalPlcReadRequest request;
- private final Map<String, Pair<PlcResponseCode, FieldItem>> values;
+ private final Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> values;
- public DefaultPlcReadResponse(InternalPlcReadRequest request, Map<String, Pair<PlcResponseCode, FieldItem>> fields) {
+ public DefaultPlcReadResponse(InternalPlcReadRequest request, Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> fields) {
this.request = request;
this.values = fields;
}
@@ -50,7 +50,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public int getNumberOfValues(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getNumberOfValues();
}
@@ -76,7 +76,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
}
@Override
- public Map<String, Pair<PlcResponseCode, FieldItem>> getValues() {
+ public Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> getValues() {
return values;
}
@@ -87,7 +87,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Object getObject(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getObject(index);
}
@@ -107,7 +107,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidBoolean(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidBoolean(index);
}
@@ -121,7 +121,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Boolean getBoolean(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getBoolean(index);
}
@@ -130,7 +130,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Boolean> getAllBooleans(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Boolean> values = new ArrayList<>(num);
@@ -149,7 +149,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidByte(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidByte(index);
}
@@ -163,7 +163,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Byte getByte(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getByte(index);
}
@@ -172,7 +172,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Byte> getAllBytes(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Byte> values = new ArrayList<>(num);
@@ -191,7 +191,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidShort(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidShort(index);
}
@@ -205,7 +205,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Short getShort(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getShort(index);
}
@@ -214,7 +214,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Short> getAllShorts(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Short> values = new ArrayList<>(num);
@@ -233,7 +233,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidInteger(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidInteger(index);
}
@@ -247,7 +247,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Integer getInteger(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getInteger(index);
}
@@ -256,7 +256,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Integer> getAllIntegers(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Integer> values = new ArrayList<>(num);
@@ -275,7 +275,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidBigInteger(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidInteger(index);
}
@@ -289,7 +289,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public BigInteger getBigInteger(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getBigInteger(index);
}
@@ -298,7 +298,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<BigInteger> getAllBigIntegers(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<BigInteger> values = new ArrayList<>(num);
@@ -317,7 +317,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidLong(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidLong(index);
}
@@ -331,7 +331,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Long getLong(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getLong(index);
}
@@ -340,7 +340,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Long> getAllLongs(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Long> values = new ArrayList<>(num);
@@ -359,7 +359,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidFloat(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidFloat(index);
}
@@ -373,7 +373,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Float getFloat(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getFloat(index);
}
@@ -382,7 +382,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Float> getAllFloats(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Float> values = new ArrayList<>(num);
@@ -401,7 +401,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidDouble(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidDouble(index);
}
@@ -415,7 +415,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Double getDouble(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getDouble(index);
}
@@ -424,7 +424,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Double> getAllDoubles(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Double> values = new ArrayList<>(num);
@@ -443,7 +443,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidBigDecimal(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidBigDecimal(index);
}
@@ -457,7 +457,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public BigDecimal getBigDecimal(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getBigDecimal(index);
}
@@ -466,7 +466,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<BigDecimal> getAllBigDecimals(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<BigDecimal> values = new ArrayList<>(num);
@@ -485,7 +485,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidString(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidString(index);
}
@@ -499,7 +499,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public String getString(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getString(index);
}
@@ -508,7 +508,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<String> getAllStrings(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<String> values = new ArrayList<>(num);
@@ -527,7 +527,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidTime(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidTime(index);
}
@@ -541,7 +541,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public LocalTime getTime(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getTime(index);
}
@@ -550,7 +550,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<LocalTime> getAllTimes(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<LocalTime> values = new ArrayList<>(num);
@@ -569,7 +569,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidDate(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidDate(index);
}
@@ -583,7 +583,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public LocalDate getDate(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getDate(index);
}
@@ -592,7 +592,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<LocalDate> getAllDates(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<LocalDate> values = new ArrayList<>(num);
@@ -611,7 +611,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidDateTime(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidDateTime(index);
}
@@ -625,7 +625,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public LocalDateTime getDateTime(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getDateTime(index);
}
@@ -634,7 +634,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<LocalDateTime> getAllDateTimes(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<LocalDateTime> values = new ArrayList<>(num);
@@ -648,7 +648,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidByteArray(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidByteArray(0);
}
@@ -657,7 +657,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public boolean isValidByteArray(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.isValidDateTime(index);
}
@@ -666,7 +666,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Byte[] getByteArray(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getByteArray(0);
}
@@ -675,7 +675,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Byte[] getByteArray(String name, int index) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
return fieldInternal.getByteArray(index);
}
@@ -684,7 +684,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
@Override
public Collection<Byte[]> getAllByteArrays(String name) {
- FieldItem fieldInternal = getFieldInternal(name);
+ BaseDefaultFieldItem fieldInternal = getFieldInternal(name);
if (fieldInternal != null) {
int num = fieldInternal.getNumberOfValues();
List<Byte[]> values = new ArrayList<>(num);
@@ -696,7 +696,7 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
return null;
}
- private FieldItem getFieldInternal(String name) {
+ private BaseDefaultFieldItem getFieldInternal(String name) {
// If this field doesn't exist, ignore it.
if (values.get(name) == null) {
return null;
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteRequest.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteRequest.java
index 6330300..9ede855 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteRequest.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteRequest.java
@@ -26,7 +26,7 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.messages.PlcWriteResponse;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.base.connection.PlcFieldHandler;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -41,9 +41,9 @@ import java.util.stream.Collectors;
public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, InternalPlcFieldRequest {
private final PlcWriter writer;
- private final LinkedHashMap<String, Pair<PlcField, FieldItem>> fields;
+ private final LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> fields;
- protected DefaultPlcWriteRequest(PlcWriter writer, LinkedHashMap<String, Pair<PlcField, FieldItem>> fields) {
+ protected DefaultPlcWriteRequest(PlcWriter writer, LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> fields) {
this.writer = writer;
this.fields = fields;
}
@@ -74,12 +74,12 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
return fields.values().stream().map(Pair::getKey).collect(Collectors.toCollection(LinkedList::new));
}
- public FieldItem getFieldItem(String name) {
+ public BaseDefaultFieldItem getFieldItem(String name) {
return fields.get(name).getValue();
}
@Override
- public LinkedList<FieldItem> getFieldItems() {
+ public LinkedList<BaseDefaultFieldItem> getFieldItems() {
return fields.values().stream().map(Pair::getValue).collect(Collectors.toCollection(LinkedList::new));
}
@@ -96,7 +96,7 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
}
@Override
- public LinkedList<Triple<String, PlcField, FieldItem>> getNamedFieldTriples() {
+ public LinkedList<Triple<String, PlcField, BaseDefaultFieldItem>> getNamedFieldTriples() {
return fields.entrySet()
.stream()
.map(stringPairEntry ->
@@ -118,7 +118,7 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
private final PlcWriter writer;
private final PlcFieldHandler fieldHandler;
private final Map<String, BuilderItem<Object>> fields;
- private final Map<Class<?>, BiFunction<PlcField, Object[], FieldItem>> handlerMap;
+ private final Map<Class<?>, BiFunction<PlcField, Object[], BaseDefaultFieldItem>> handlerMap;
public Builder(PlcWriter writer, PlcFieldHandler fieldHandler) {
this.writer = writer;
@@ -229,7 +229,7 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
throw new IllegalArgumentException("Invalid class found " + value.getClass() + ". should all be " + checkedClazz);
}
}
- BiFunction<PlcField, Object[], FieldItem> plcFieldFieldItemBiFunction = handlerMap.get(checkedClazz);
+ BiFunction<PlcField, Object[], BaseDefaultFieldItem> plcFieldFieldItemBiFunction = handlerMap.get(checkedClazz);
if (plcFieldFieldItemBiFunction == null) {
throw new IllegalArgumentException("no field handler for " + checkedClazz + " found");
}
@@ -238,19 +238,19 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
@Override
public PlcWriteRequest build() {
- LinkedHashMap<String, Pair<PlcField, FieldItem>> parsedFields = new LinkedHashMap<>();
+ LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> parsedFields = new LinkedHashMap<>();
fields.forEach((name, builderItem) -> {
// Compile the query string.
PlcField parsedField = fieldHandler.createField(builderItem.fieldQuery);
// Encode the payload.
// TODO: Depending on the field type, handle the FieldItem creation differently.
- FieldItem fieldItem = builderItem.encoder.apply(parsedField, builderItem.values);
+ BaseDefaultFieldItem fieldItem = builderItem.encoder.apply(parsedField, builderItem.values);
parsedFields.put(name, new ImmutablePair<>(parsedField, fieldItem));
});
return new DefaultPlcWriteRequest(writer, parsedFields);
}
- private Builder addItem(String name, String fieldQuery, Object[] values, BiFunction<PlcField, Object[], FieldItem> encoder) {
+ private Builder addItem(String name, String fieldQuery, Object[] values, BiFunction<PlcField, Object[], BaseDefaultFieldItem> encoder) {
if (fields.containsKey(name)) {
throw new PlcRuntimeException("Duplicate field definition '" + name + "'");
}
@@ -261,9 +261,9 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
private static class BuilderItem<T> {
private final String fieldQuery;
private final T[] values;
- private final BiFunction<PlcField, T[], FieldItem> encoder;
+ private final BiFunction<PlcField, T[], BaseDefaultFieldItem> encoder;
- private BuilderItem(String fieldQuery, T[] values, BiFunction<PlcField, T[], FieldItem> encoder) {
+ private BuilderItem(String fieldQuery, T[] values, BiFunction<PlcField, T[], BaseDefaultFieldItem> encoder) {
this.fieldQuery = fieldQuery;
this.values = values;
this.encoder = encoder;
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcReadResponse.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcReadResponse.java
index 53cf0b5..50d0e4d 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcReadResponse.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcReadResponse.java
@@ -21,11 +21,11 @@ package org.apache.plc4x.java.base.messages;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.plc4x.java.api.messages.PlcReadResponse;
import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.util.Map;
public interface InternalPlcReadResponse extends PlcReadResponse, InternalPlcResponse {
- Map<String, Pair<PlcResponseCode, FieldItem>> getValues();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> getValues();
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcWriteRequest.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcWriteRequest.java
index f10cd89..af717d7 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcWriteRequest.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcWriteRequest.java
@@ -21,15 +21,15 @@ package org.apache.plc4x.java.base.messages;
import org.apache.commons.lang3.tuple.Triple;
import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.model.PlcField;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.util.LinkedList;
public interface InternalPlcWriteRequest extends PlcWriteRequest, InternalPlcRequest {
- FieldItem getFieldItem(String name);
+ BaseDefaultFieldItem getFieldItem(String name);
- LinkedList<FieldItem> getFieldItems();
+ LinkedList<BaseDefaultFieldItem> getFieldItems();
- LinkedList<Triple<String, PlcField, FieldItem>> getNamedFieldTriples();
+ LinkedList<Triple<String, PlcField, BaseDefaultFieldItem>> getNamedFieldTriples();
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/BaseDefaultFieldItem.java
similarity index 94%
rename from plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java
rename to plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/BaseDefaultFieldItem.java
index 14deb18..e41b2e5 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/BaseDefaultFieldItem.java
@@ -27,11 +27,11 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Arrays;
-public abstract class FieldItem<T> {
+public abstract class BaseDefaultFieldItem<T> {
private T[] values;
- protected FieldItem(T[] values) {
+ protected BaseDefaultFieldItem(T[] values) {
this.values = values;
}
@@ -73,20 +73,20 @@ public abstract class FieldItem<T> {
throw new PlcIncompatibleDatatypeException(Integer.class, index);
}
- public boolean isValidBigInteger(int index) {
+ public boolean isValidLong(int index) {
return false;
}
- public BigInteger getBigInteger(int index) {
- throw new PlcIncompatibleDatatypeException(BigInteger.class, index);
+ public Long getLong(int index) {
+ throw new PlcIncompatibleDatatypeException(Long.class, index);
}
- public boolean isValidLong(int index) {
+ public boolean isValidBigInteger(int index) {
return false;
}
- public Long getLong(int index) {
- throw new PlcIncompatibleDatatypeException(Long.class, index);
+ public BigInteger getBigInteger(int index) {
+ throw new PlcIncompatibleDatatypeException(BigInteger.class, index);
}
public boolean isValidFloat(int index) {
@@ -158,7 +158,7 @@ public abstract class FieldItem<T> {
}
protected T getValue(int index) {
- if (index < 0 || (index >= values.length)) {
+ if ((values == null) || (index < 0 || (index >= values.length))) {
return null;
}
return values[index];
@@ -169,10 +169,10 @@ public abstract class FieldItem<T> {
if (this == o) {
return true;
}
- if (!(o instanceof FieldItem)) {
+ if (!(o instanceof BaseDefaultFieldItem)) {
return false;
}
- FieldItem<?> fieldItem = (FieldItem<?>) o;
+ BaseDefaultFieldItem<?> fieldItem = (BaseDefaultFieldItem<?>) o;
return Arrays.equals(values, fieldItem.values);
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigDecimalFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigDecimalFieldItem.java
index 12f9a2c..c78bd05 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigDecimalFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigDecimalFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
+public class DefaultBigDecimalFieldItem extends BaseDefaultFieldItem<BigDecimal> {
public DefaultBigDecimalFieldItem(BigDecimal... values) {
super(values);
@@ -31,12 +31,12 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
@Override
public Object getObject(int index) {
- return getBigDecimal(index);
+ return getValue(index);
}
@Override
public boolean isValidBoolean(int index) {
- return (getValue(index) != null);
+ return getValue(index) != null;
}
@Override
@@ -52,7 +52,7 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
BigDecimal value = getValue(index);
BigDecimal min = BigDecimal.valueOf(Byte.MIN_VALUE);
BigDecimal max = BigDecimal.valueOf(Byte.MAX_VALUE);
- return (value != null) && (value.compareTo(min) < 0) && (value.compareTo(max) > 0);
+ return (value != null) && (value.compareTo(min) >= 0) && (value.compareTo(max) <= 0);
}
@Override
@@ -68,7 +68,7 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
BigDecimal value = getValue(index);
BigDecimal min = BigDecimal.valueOf(Short.MIN_VALUE);
BigDecimal max = BigDecimal.valueOf(Short.MAX_VALUE);
- return (value != null) && (value.compareTo(min) < 0) && (value.compareTo(max) > 0);
+ return (value != null) && (value.compareTo(min) >= 0) && (value.compareTo(max) <= 0);
}
@Override
@@ -84,7 +84,7 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
BigDecimal value = getValue(index);
BigDecimal min = BigDecimal.valueOf(Integer.MIN_VALUE);
BigDecimal max = BigDecimal.valueOf(Integer.MAX_VALUE);
- return (value != null) && (value.compareTo(min) < 0) && (value.compareTo(max) > 0);
+ return (value != null) && (value.compareTo(min) >= 0) && (value.compareTo(max) <= 0);
}
@Override
@@ -100,7 +100,7 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
BigDecimal value = getValue(index);
BigDecimal min = BigDecimal.valueOf(Long.MIN_VALUE);
BigDecimal max = BigDecimal.valueOf(Long.MAX_VALUE);
- return (value != null) && (value.compareTo(min) < 0) && (value.compareTo(max) > 0);
+ return (value != null) && (value.compareTo(min) >= 0) && (value.compareTo(max) <= 0);
}
@Override
@@ -126,9 +126,9 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
@Override
public boolean isValidFloat(int index) {
BigDecimal value = getValue(index);
- BigDecimal min = BigDecimal.valueOf(Float.MIN_VALUE);
+ BigDecimal min = BigDecimal.valueOf(-Float.MAX_VALUE);
BigDecimal max = BigDecimal.valueOf(Float.MAX_VALUE);
- return (value != null) && (value.compareTo(min) < 0) && (value.compareTo(max) > 0);
+ return (value != null) && (value.compareTo(min) >= 0) && (value.compareTo(max) <= 0);
}
@Override
@@ -142,9 +142,9 @@ public class DefaultBigDecimalFieldItem extends FieldItem<BigDecimal> {
@Override
public boolean isValidDouble(int index) {
BigDecimal value = getValue(index);
- BigDecimal min = BigDecimal.valueOf(Double.MIN_VALUE);
+ BigDecimal min = BigDecimal.valueOf(-Double.MAX_VALUE);
BigDecimal max = BigDecimal.valueOf(Double.MAX_VALUE);
- return (value != null) && (value.compareTo(min) < 0) && (value.compareTo(max) > 0);
+ return (value != null) && (value.compareTo(min) >= 0) && (value.compareTo(max) <= 0);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
index 103dd97..80db40e 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
+public class DefaultBigIntegerFieldItem extends BaseDefaultFieldItem<BigInteger> {
public DefaultBigIntegerFieldItem(BigInteger... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Object getObject(int index) {
- return getBigInteger(index);
+ return getValue(index);
}
@Override
@@ -50,8 +50,8 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public boolean isValidByte(int index) {
BigInteger value = getValue(index);
- return (value != null) && (value.compareTo(BigInteger.valueOf(Byte.MAX_VALUE)) < 0) &&
- (value.compareTo(BigInteger.valueOf(Byte.MIN_VALUE)) > 0);
+ return (value != null) && (value.compareTo(BigInteger.valueOf(Byte.MAX_VALUE)) <= 0) &&
+ (value.compareTo(BigInteger.valueOf(Byte.MIN_VALUE)) >= 0);
}
@Override
@@ -65,8 +65,8 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public boolean isValidShort(int index) {
BigInteger value = getValue(index);
- return (value != null) && (value.compareTo(BigInteger.valueOf(Short.MAX_VALUE)) < 0) &&
- (value.compareTo(BigInteger.valueOf(Short.MIN_VALUE)) > 0);
+ return (value != null) && (value.compareTo(BigInteger.valueOf(Short.MAX_VALUE)) <= 0) &&
+ (value.compareTo(BigInteger.valueOf(Short.MIN_VALUE)) >= 0);
}
@Override
@@ -80,8 +80,8 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public boolean isValidInteger(int index) {
BigInteger value = getValue(index);
- return (value != null) && (value.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) < 0) &&
- (value.compareTo(BigInteger.valueOf(Integer.MIN_VALUE)) > 0);
+ return (value != null) && (value.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) <= 0) &&
+ (value.compareTo(BigInteger.valueOf(Integer.MIN_VALUE)) >= 0);
}
@Override
@@ -95,8 +95,8 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public boolean isValidLong(int index) {
BigInteger value = getValue(index);
- return (value != null) && (value.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) < 0) &&
- (value.compareTo(BigInteger.valueOf(Long.MIN_VALUE)) > 0);
+ return (value != null) && (value.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) <= 0) &&
+ (value.compareTo(BigInteger.valueOf(Long.MIN_VALUE)) >= 0);
}
@Override
@@ -126,8 +126,8 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
return false;
}
BigDecimal decimalValue = new BigDecimal(value);
- return (decimalValue.compareTo(BigDecimal.valueOf(Float.MAX_VALUE)) < 0) &&
- (decimalValue.compareTo(BigDecimal.valueOf(Float.MIN_VALUE)) > 0);
+ return (decimalValue.compareTo(BigDecimal.valueOf(Float.MAX_VALUE)) <= 0) &&
+ (decimalValue.compareTo(BigDecimal.valueOf(-Float.MAX_VALUE)) >= 0);
}
@Override
@@ -145,8 +145,8 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
return false;
}
BigDecimal decimalValue = new BigDecimal(value);
- return (decimalValue.compareTo(BigDecimal.valueOf(Double.MAX_VALUE)) < 0) &&
- (decimalValue.compareTo(BigDecimal.valueOf(Double.MIN_VALUE)) > 0);
+ return (decimalValue.compareTo(BigDecimal.valueOf(Double.MAX_VALUE)) <= 0) &&
+ (decimalValue.compareTo(BigDecimal.valueOf(-Double.MAX_VALUE)) >= 0);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBooleanFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBooleanFieldItem.java
index 0e85bed..f5cd05f 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBooleanFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBooleanFieldItem.java
@@ -20,9 +20,11 @@ package org.apache.plc4x.java.base.messages.items;
import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.BitSet;
-public class DefaultBooleanFieldItem extends FieldItem<Boolean> {
+public class DefaultBooleanFieldItem extends BaseDefaultFieldItem<Boolean> {
public DefaultBooleanFieldItem(Boolean... values) {
super(values);
@@ -30,7 +32,7 @@ public class DefaultBooleanFieldItem extends FieldItem<Boolean> {
@Override
public Object getObject(int index) {
- return getBoolean(index);
+ return getValue(index);
}
@Override
@@ -48,22 +50,132 @@ public class DefaultBooleanFieldItem extends FieldItem<Boolean> {
@Override
public boolean isValidByte(int index) {
- int byteAddress = index >> 3;
- return (getValue(byteAddress) != null);
+ return isValidBoolean(index);
}
@Override
public Byte getByte(int index) {
+ if (!isValidByte(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? (byte) 1 : (byte) 0;
+ }
+
+ @Override
+ public boolean isValidShort(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public Short getShort(int index) {
+ if (!isValidShort(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? (short) 1 : (short) 0;
+ }
+
+ @Override
+ public boolean isValidInteger(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public Integer getInteger(int index) {
+ if (!isValidInteger(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? 1 : 0;
+ }
+
+ @Override
+ public boolean isValidLong(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public Long getLong(int index) {
+ if (!isValidLong(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? 1L : 0L;
+ }
+
+ @Override
+ public boolean isValidBigInteger(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public BigInteger getBigInteger(int index) {
+ if (!isValidBigInteger(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? BigInteger.ONE : BigInteger.ZERO;
+ }
+
+ @Override
+ public boolean isValidFloat(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public Float getFloat(int index) {
+ if (!isValidFloat(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? 1.0F : 0.0F;
+ }
+
+ @Override
+ public boolean isValidDouble(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public Double getDouble(int index) {
+ if (!isValidDouble(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? 1.0D : 0.0D;
+ }
+
+ @Override
+ public boolean isValidBigDecimal(int index) {
+ return isValidBoolean(index);
+ }
+
+ @Override
+ public BigDecimal getBigDecimal(int index) {
+ if (!isValidBigDecimal(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
+ return getValue(index) ? BigDecimal.ONE : BigDecimal.ZERO;
+ }
+
+ public Byte getCompleteByte(int index) {
+ if (!isValidByte(index)) {
+ throw new PlcIncompatibleDatatypeException(Byte.class, index);
+ }
BitSet bitSet = new BitSet();
int i = 0;
- for (Boolean value : getValues()) {
- bitSet.set(i, value);
- i++;
+ if(getValues() != null) {
+ for (Boolean value : getValues()) {
+ bitSet.set(i, value);
+ i++;
+ }
}
+ // TODO: In this case the real max index is smaller than the numValues the object reports.
+ // Calculate the real number of bytes.
+ int numBytes = (i / 8) + ((i % 8 == 0) ? 0 : 1);
byte[] bytes = bitSet.toByteArray();
- if (bytes.length < index) {
+ if (numBytes - 1 < index) {
return null;
}
+ // If the highest level bits are all false, the number of bytes is smaller than it should be,
+ // So we have to fix that and return a 0-vale byte instead.
+ if((bytes.length < numBytes) && (bytes.length <= index)) {
+ return 0x00;
+ }
return bytes[index];
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteArrayFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteArrayFieldItem.java
index b0732f5..6d35b0b 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteArrayFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteArrayFieldItem.java
@@ -22,7 +22,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.util.Objects;
-public class DefaultByteArrayFieldItem extends FieldItem<Byte[]> {
+public class DefaultByteArrayFieldItem extends BaseDefaultFieldItem<Byte[]> {
public DefaultByteArrayFieldItem(Byte[]... values) {
super(values);
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteFieldItem.java
index e737fcf..aac13d2 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultByteFieldItem extends FieldItem<Byte> {
+public class DefaultByteFieldItem extends BaseDefaultFieldItem<Byte> {
public DefaultByteFieldItem(Byte... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultByteFieldItem extends FieldItem<Byte> {
@Override
public Object getObject(int index) {
- return getByte(index);
+ return getValue(index);
}
@Override
@@ -117,7 +117,7 @@ public class DefaultByteFieldItem extends FieldItem<Byte> {
@Override
public boolean isValidFloat(int index) {
Byte value = getValue(index);
- return (value != null) && (value <= Float.MAX_VALUE) && (value >= Float.MIN_VALUE);
+ return (value != null) && (value <= Float.MAX_VALUE) && (value >= -Float.MAX_VALUE);
}
@Override
@@ -131,7 +131,7 @@ public class DefaultByteFieldItem extends FieldItem<Byte> {
@Override
public boolean isValidDouble(int index) {
Byte value = getValue(index);
- return (value != null) && (value <= Double.MAX_VALUE) && (value >= Double.MIN_VALUE);
+ return (value != null) && (value <= Double.MAX_VALUE) && (value >= -Double.MAX_VALUE);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultDoubleFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultDoubleFieldItem.java
index c010cc5..9a23dc8 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultDoubleFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultDoubleFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultDoubleFieldItem extends FieldItem<Double> {
+public class DefaultDoubleFieldItem extends BaseDefaultFieldItem<Double> {
public DefaultDoubleFieldItem(Double... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultDoubleFieldItem extends FieldItem<Double> {
@Override
public Object getObject(int index) {
- return getDouble(index);
+ return getValue(index);
}
@Override
@@ -118,7 +118,7 @@ public class DefaultDoubleFieldItem extends FieldItem<Double> {
@Override
public boolean isValidFloat(int index) {
Double value = getValue(index);
- return (value != null) && (value <= Float.MAX_VALUE) && (value >= Float.MIN_VALUE);
+ return (value != null) && (value <= Float.MAX_VALUE) && (value >= -Float.MAX_VALUE);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatFieldItem.java
index a10c39a..d1f661d 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultFloatFieldItem extends FieldItem<Float> {
+public class DefaultFloatFieldItem extends BaseDefaultFieldItem<Float> {
public DefaultFloatFieldItem(Float... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultFloatFieldItem extends FieldItem<Float> {
@Override
public Object getObject(int index) {
- return getFloat(index);
+ return getValue(index);
}
@Override
@@ -118,7 +118,7 @@ public class DefaultFloatFieldItem extends FieldItem<Float> {
@Override
public boolean isValidFloat(int index) {
Float value = getValue(index);
- return (value != null) && (value <= Float.MAX_VALUE) && (value >= Float.MIN_VALUE);
+ return (value != null) && (value <= Float.MAX_VALUE) && (value >= -Float.MAX_VALUE);
}
@Override
@@ -131,6 +131,7 @@ public class DefaultFloatFieldItem extends FieldItem<Float> {
@Override
public boolean isValidDouble(int index) {
+ // If it's a valid Float value it will also be a valid double one.
return (getValue(index) != null);
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
index 345d20d..2c08c90 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultIntegerFieldItem extends FieldItem<Integer> {
+public class DefaultIntegerFieldItem extends BaseDefaultFieldItem<Integer> {
public DefaultIntegerFieldItem(Integer... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Integer> {
@Override
public Object getObject(int index) {
- return getInteger(index);
+ return getValue(index);
}
@Override
@@ -117,7 +117,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Integer> {
@Override
public boolean isValidFloat(int index) {
Integer value = getValue(index);
- return (value != null) && (value <= Float.MAX_VALUE) && (value >= Float.MIN_VALUE);
+ return (value != null) && (value <= Float.MAX_VALUE) && (value >= -Float.MAX_VALUE);
}
@Override
@@ -131,7 +131,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Integer> {
@Override
public boolean isValidDouble(int index) {
Integer value = getValue(index);
- return (value != null) && (value <= Double.MAX_VALUE) && (value >= Double.MIN_VALUE);
+ return (value != null) && (value <= Double.MAX_VALUE) && (value >= -Double.MAX_VALUE);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateFieldItem.java
index 34811dc..79d6d6a 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateFieldItem.java
@@ -22,7 +22,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.time.LocalDate;
-public class DefaultLocalDateFieldItem extends FieldItem<LocalDate> {
+public class DefaultLocalDateFieldItem extends BaseDefaultFieldItem<LocalDate> {
public DefaultLocalDateFieldItem(LocalDate... values) {
super(values);
@@ -30,7 +30,7 @@ public class DefaultLocalDateFieldItem extends FieldItem<LocalDate> {
@Override
public Object getObject(int index) {
- return getDate(index);
+ return getValue(index);
}
@Override
@@ -40,7 +40,7 @@ public class DefaultLocalDateFieldItem extends FieldItem<LocalDate> {
@Override
public LocalDate getDate(int index) {
- if (!isValidTime(index)) {
+ if (!isValidDate(index)) {
throw new PlcIncompatibleDatatypeException(LocalDate.class, index);
}
return getValue(index);
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateTimeFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateTimeFieldItem.java
index c49a03a..090b999 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateTimeFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateTimeFieldItem.java
@@ -24,7 +24,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
-public class DefaultLocalDateTimeFieldItem extends FieldItem<LocalDateTime> {
+public class DefaultLocalDateTimeFieldItem extends BaseDefaultFieldItem<LocalDateTime> {
public DefaultLocalDateTimeFieldItem(LocalDateTime... values) {
super(values);
@@ -32,7 +32,7 @@ public class DefaultLocalDateTimeFieldItem extends FieldItem<LocalDateTime> {
@Override
public Object getObject(int index) {
- return getDateTime(index);
+ return getValue(index);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalTimeFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalTimeFieldItem.java
index 0387401..f06cbb1 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalTimeFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalTimeFieldItem.java
@@ -22,7 +22,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.time.LocalTime;
-public class DefaultLocalTimeFieldItem extends FieldItem<LocalTime> {
+public class DefaultLocalTimeFieldItem extends BaseDefaultFieldItem<LocalTime> {
public DefaultLocalTimeFieldItem(LocalTime... values) {
super(values);
@@ -30,7 +30,7 @@ public class DefaultLocalTimeFieldItem extends FieldItem<LocalTime> {
@Override
public Object getObject(int index) {
- return getTime(index);
+ return getValue(index);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLongFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLongFieldItem.java
index 22d36dc..48efd02 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLongFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLongFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultLongFieldItem extends FieldItem<Long> {
+public class DefaultLongFieldItem extends BaseDefaultFieldItem<Long> {
public DefaultLongFieldItem(Long... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultLongFieldItem extends FieldItem<Long> {
@Override
public Object getObject(int index) {
- return getLong(index);
+ return getValue(index);
}
@Override
@@ -117,7 +117,7 @@ public class DefaultLongFieldItem extends FieldItem<Long> {
@Override
public boolean isValidFloat(int index) {
Long value = getValue(index);
- return (value != null) && (value <= Float.MAX_VALUE) && (value >= Float.MIN_VALUE);
+ return (value != null) && (value <= Float.MAX_VALUE) && (value >= -Float.MAX_VALUE);
}
@Override
@@ -131,7 +131,7 @@ public class DefaultLongFieldItem extends FieldItem<Long> {
@Override
public boolean isValidDouble(int index) {
Long value = getValue(index);
- return (value != null) && (value <= Double.MAX_VALUE) && (value >= Double.MIN_VALUE);
+ return (value != null) && (value <= Double.MAX_VALUE) && (value >= -Double.MAX_VALUE);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultShortFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultShortFieldItem.java
index df02828..254a8c8 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultShortFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultShortFieldItem.java
@@ -23,7 +23,7 @@ import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
import java.math.BigDecimal;
import java.math.BigInteger;
-public class DefaultShortFieldItem extends FieldItem<Short> {
+public class DefaultShortFieldItem extends BaseDefaultFieldItem<Short> {
public DefaultShortFieldItem(Short... values) {
super(values);
@@ -31,7 +31,7 @@ public class DefaultShortFieldItem extends FieldItem<Short> {
@Override
public Object getObject(int index) {
- return getShort(index);
+ return getValue(index);
}
@Override
@@ -117,7 +117,7 @@ public class DefaultShortFieldItem extends FieldItem<Short> {
@Override
public boolean isValidFloat(int index) {
Short value = getValue(index);
- return (value != null) && (value <= Float.MAX_VALUE) && (value >= Float.MIN_VALUE);
+ return (value != null) && (value <= Float.MAX_VALUE) && (value >= -Float.MAX_VALUE);
}
@Override
@@ -131,7 +131,7 @@ public class DefaultShortFieldItem extends FieldItem<Short> {
@Override
public boolean isValidDouble(int index) {
Short value = getValue(index);
- return (value != null) && (value <= Double.MAX_VALUE) && (value >= Double.MIN_VALUE);
+ return (value != null) && (value <= Double.MAX_VALUE) && (value >= -Double.MAX_VALUE);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultStringFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultStringFieldItem.java
index d02bbd2..cfb3b83 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultStringFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultStringFieldItem.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.java.base.messages.items;
import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException;
-public class DefaultStringFieldItem extends FieldItem<String> {
+public class DefaultStringFieldItem extends BaseDefaultFieldItem<String> {
public DefaultStringFieldItem(String... values) {
super(values);
@@ -28,7 +28,7 @@ public class DefaultStringFieldItem extends FieldItem<String> {
@Override
public Object getObject(int index) {
- return getString(index);
+ return getValue(index);
}
@Override
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocol.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocol.java
index bc19ad2..7ef5bdc 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocol.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocol.java
@@ -25,14 +25,12 @@ import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.PromiseCombiner;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.lang3.tuple.Triple;
-import org.apache.plc4x.java.base.messages.PlcReader;
-import org.apache.plc4x.java.base.messages.PlcWriter;
import org.apache.plc4x.java.api.exceptions.PlcProtocolException;
import org.apache.plc4x.java.api.exceptions.PlcTimeoutException;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.*;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -185,7 +183,7 @@ public class SingleItemToSingleRequestProtocol extends ChannelDuplexHandler {
InternalPlcResponse plcResponse;
if (originalPlcRequestContainer.getRequest() instanceof InternalPlcReadRequest) {
InternalPlcReadRequest internalPlcReadRequest = (InternalPlcReadRequest) originalPlcRequestContainer.getRequest();
- HashMap<String, Pair<PlcResponseCode, FieldItem>> fields = new HashMap<>();
+ HashMap<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> fields = new HashMap<>();
correlatedResponseItems.stream()
.map(InternalPlcReadResponse.class::cast)
@@ -414,13 +412,13 @@ public class SingleItemToSingleRequestProtocol extends ChannelDuplexHandler {
private final int tdpu;
- public CorrelatedPlcWriteRequest(PlcWriter writer, LinkedHashMap<String, Pair<PlcField, FieldItem>> fields, int tdpu) {
+ public CorrelatedPlcWriteRequest(PlcWriter writer, LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> fields, int tdpu) {
super(writer, fields);
this.tdpu = tdpu;
}
- public static CorrelatedPlcWriteRequest of(PlcWriter writer, Triple<String, PlcField, FieldItem> fieldItemTriple, int tdpu) {
- LinkedHashMap<String, Pair<PlcField, FieldItem>> fields = new LinkedHashMap<>();
+ public static CorrelatedPlcWriteRequest of(PlcWriter writer, Triple<String, PlcField, BaseDefaultFieldItem> fieldItemTriple, int tdpu) {
+ LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> fields = new LinkedHashMap<>();
fields.put(fieldItemTriple.getLeft(), Pair.of(fieldItemTriple.getMiddle(), fieldItemTriple.getRight()));
return new CorrelatedPlcWriteRequest(writer, fields, tdpu);
}
diff --git a/plc4j/protocols/driver-bases/base/src/test/groovy/org/apache/plc4x/java/base/messages/items/DefaultItemsSpec.groovy b/plc4j/protocols/driver-bases/base/src/test/groovy/org/apache/plc4x/java/base/messages/items/DefaultItemsSpec.groovy
new file mode 100644
index 0000000..92c2713
--- /dev/null
+++ b/plc4j/protocols/driver-bases/base/src/test/groovy/org/apache/plc4x/java/base/messages/items/DefaultItemsSpec.groovy
@@ -0,0 +1,215 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+package org.apache.plc4x.java.base.messages.items
+
+
+import org.apache.plc4x.java.api.exceptions.PlcIncompatibleDatatypeException
+import spock.lang.Specification
+import spock.lang.Unroll
+
+import java.time.LocalDate
+import java.time.LocalDateTime
+import java.time.LocalTime
+
+class DefaultItemsSpec extends Specification {
+
+ @Unroll
+ def "The '#fieldItemType.simpleName'.isValidXYZ methods should respect the correct boundaries of the type XYZ and "(
+ Class<? extends BaseDefaultFieldItem> fieldItemType, Object value, Boolean isValidBoolean, Boolean isValidByte, Boolean isValidShort, Boolean isValidInteger,
+ Boolean isValidLong, Boolean isValidBigInteger, Boolean isValidFloat, Boolean isValidDouble, Boolean isValidBigDecimal,
+ Boolean isValidString, Boolean isValidTime, Boolean isValidDate, Boolean isValidDateTime, Boolean isValidByteArray) {
+
+ setup:
+ BaseDefaultFieldItem fieldItem = fieldItemType.newInstance(value)
+
+ expect:
+ fieldItem.getObject(0) == value
+
+ assertItem(fieldItem, "Boolean", isValidBoolean)
+ assertItem(fieldItem, "Byte", isValidByte)
+ assertItem(fieldItem, "Short", isValidShort)
+ assertItem(fieldItem, "Integer", isValidInteger)
+ assertItem(fieldItem, "Long", isValidLong)
+ assertItem(fieldItem, "BigInteger", isValidBigInteger)
+ assertItem(fieldItem, "Float", isValidFloat)
+ assertItem(fieldItem, "Double", isValidDouble)
+ assertItem(fieldItem, "BigDecimal", isValidBigDecimal)
+ assertItem(fieldItem, "String", isValidString)
+ assertItem(fieldItem, "Time", isValidTime)
+ assertItem(fieldItem, "Date", isValidDate)
+ assertItem(fieldItem, "DateTime", isValidDateTime)
+ assertItem(fieldItem, "ByteArray", isValidByteArray)
+
+ where:
+ fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultBooleanFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultBooleanFieldItem | true || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBooleanFieldItem | false || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultByteFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultByteFieldItem | (byte) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultByteFieldItem | (byte) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultByteFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultByteFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultShortFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultShortFieldItem | (short) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultShortFieldItem | (short) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultShortFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultShortFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultShortFieldItem | Short.MAX_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultShortFieldItem | Short.MIN_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultIntegerFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultIntegerFieldItem | (int) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | (int) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | Short.MAX_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | Short.MIN_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | Integer.MAX_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultIntegerFieldItem | Integer.MIN_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultLongFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultLongFieldItem | (int) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | (int) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Short.MAX_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Short.MIN_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Integer.MAX_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Integer.MIN_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Long.MAX_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultLongFieldItem | Long.MIN_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultBigIntegerFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultBigIntegerFieldItem | (int) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | (int) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Short.MIN_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Short.MAX_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Integer.MIN_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Integer.MAX_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Long.MIN_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | Long.MAX_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | BigInteger.valueOf(Long.MIN_VALUE).multiply(2) || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+ DefaultBigIntegerFieldItem | BigInteger.valueOf(Long.MAX_VALUE).multiply(2) || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultFloatFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultFloatFieldItem | (int) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | (int) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Short.MIN_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Short.MAX_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Integer.MIN_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+// In this case the conversion to Float results in a rounding error
+// DefaultFloatFieldItem | Integer.MAX_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Long.MIN_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Long.MAX_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | 1.2345678912345f || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Float.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | -Float.MAX_VALUE || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+ DefaultFloatFieldItem | Float.MAX_VALUE || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultDoubleFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultDoubleFieldItem | (int) 0 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | (int) 42 || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Byte.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Byte.MAX_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Short.MIN_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Short.MAX_VALUE || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Integer.MIN_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Integer.MAX_VALUE || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Long.MIN_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Long.MAX_VALUE || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | 1.23456789123456f || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Float.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | -Float.MAX_VALUE || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Float.MAX_VALUE || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | 1.23456789012345d || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Double.MIN_VALUE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | -Double.MAX_VALUE || true | false | false | false | false | true | false | true | true | false | false | false | false | false
+ DefaultDoubleFieldItem | Double.MAX_VALUE || true | false | false | false | false | true | false | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultBigDecimalFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.ZERO || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.ONE || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(42) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Byte.MIN_VALUE) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Byte.MAX_VALUE) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Short.MIN_VALUE) || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Short.MAX_VALUE) || true | false | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Integer.MIN_VALUE) || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Integer.MAX_VALUE) || true | false | false | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Long.MIN_VALUE) || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Long.MAX_VALUE) || true | false | false | false | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(1.23456789123456f) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Float.MIN_VALUE) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(-Float.MAX_VALUE) || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Float.MAX_VALUE) || true | false | false | false | false | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(1.23456789012345d) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Double.MIN_VALUE) || true | true | true | true | true | true | true | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(-Double.MAX_VALUE) || true | false | false | false | false | true | false | true | true | false | false | false | false | false
+ DefaultBigDecimalFieldItem | BigDecimal.valueOf(Double.MAX_VALUE) || true | false | false | false | false | true | false | true | true | false | false | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultLocalTimeFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultLocalTimeFieldItem | LocalTime.now() || false | false | false | false | false | false | false | false | false | false | true | false | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultLocalDateFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultLocalDateFieldItem | LocalDate.now() || false | false | false | false | false | false | false | false | false | false | false | true | false | false
+
+// fieldItemType | value || isValidBoolean | isValidByte | isValidShort | isValidInteger | isValidLong | isValidBigInteger | isValidFloat | isValidDouble | isValidBigDecimal | isValidString | isValidTime | isValidDate | isValidDateTime | isValidByteArray
+ DefaultLocalDateTimeFieldItem | null || false | false | false | false | false | false | false | false | false | false | false | false | false | false
+ DefaultLocalDateTimeFieldItem | LocalDateTime.now() || false | false | false | false | false | false | false | false | false | false | true | true | true | false
+ }
+
+ Boolean assertItem(BaseDefaultFieldItem fieldItem, String type, Boolean expectedToBeValid) {
+ assert fieldItem."isValid$type"(0) == expectedToBeValid
+ if (expectedToBeValid) {
+ assert fieldItem."get$type"(0) != null
+ } else {
+ assert getExecutionException({fieldItem."get$type"(0)}) instanceof PlcIncompatibleDatatypeException
+ }
+ return true
+ }
+
+ Exception getExecutionException(Closure c) {
+ try{
+ c.call()
+ return null
+ }catch(Exception e){
+ return e
+ }
+ }
+
+}
+
+
diff --git a/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocolTest.java b/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocolTest.java
index b3c6458..ebf266f 100644
--- a/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocolTest.java
+++ b/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocolTest.java
@@ -29,7 +29,7 @@ import org.apache.plc4x.java.api.messages.PlcFieldRequest;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.*;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.model.InternalPlcSubscriptionHandle;
import org.apache.plc4x.java.base.model.SubscriptionPlcField;
import org.assertj.core.api.WithAssertions;
@@ -284,8 +284,8 @@ class SingleItemToSingleRequestProtocolTest implements WithAssertions {
InternalPlcReadRequest request = (InternalPlcReadRequest) plcRequestContainer.getRequest();
String fieldName = request.getFieldNames().iterator().next();
CompletableFuture responseFuture = plcRequestContainer.getResponseFuture();
- HashMap<String, Pair<PlcResponseCode, FieldItem>> responseFields = new HashMap<>();
- responseFields.put(fieldName, Pair.of(PlcResponseCode.OK, mock(FieldItem.class)));
+ HashMap<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> responseFields = new HashMap<>();
+ responseFields.put(fieldName, Pair.of(PlcResponseCode.OK, mock(BaseDefaultFieldItem.class)));
responseFuture.complete(new DefaultPlcReadResponse(request, responseFields));
return null;
}
@@ -294,13 +294,13 @@ class SingleItemToSingleRequestProtocolTest implements WithAssertions {
@Nested
class Decoding {
@Test
- void tryFinish() throws Exception {
+ void tryFinish() {
SUT.tryFinish(1, null, new CompletableFuture<>());
// TODO: add Assertions.
}
@Test
- void errored() throws Exception {
+ void errored() {
SUT.errored(1, mock(Throwable.class), new CompletableFuture<>());
// TODO: add Assertions.
}
@@ -385,12 +385,12 @@ class SingleItemToSingleRequestProtocolTest implements WithAssertions {
}
@Test
- void subscribe() throws Exception {
+ void subscribe() {
// TODO: implement once available
}
@Test
- void unsubcribe() throws Exception {
+ void unsubcribe() {
// TODO: implement once available
}
@@ -419,13 +419,13 @@ class SingleItemToSingleRequestProtocolTest implements WithAssertions {
private static class TestDefaultPlcWriteRequest extends DefaultPlcWriteRequest {
- private TestDefaultPlcWriteRequest(PlcWriter writer, LinkedHashMap<String, Pair<PlcField, FieldItem>> fields) {
+ private TestDefaultPlcWriteRequest(PlcWriter writer, LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> fields) {
super(writer, fields);
}
private static TestDefaultPlcWriteRequest build(PlcWriter writer) {
- LinkedHashMap<String, Pair<PlcField, FieldItem>> fields = new LinkedHashMap<>();
- IntStream.rangeClosed(1, 5).forEach(i -> fields.put("writeField" + i, Pair.of(mock(PlcField.class), mock(FieldItem.class))));
+ LinkedHashMap<String, Pair<PlcField, BaseDefaultFieldItem>> fields = new LinkedHashMap<>();
+ IntStream.rangeClosed(1, 5).forEach(i -> fields.put("writeField" + i, Pair.of(mock(PlcField.class), mock(BaseDefaultFieldItem.class))));
return new TestDefaultPlcWriteRequest(writer, fields);
}
}
diff --git a/plc4j/protocols/driver-bases/base/src/test/resources/META-INF/services/com.athaydes.spockframework.report.IReportCreator.properties b/plc4j/protocols/driver-bases/base/src/test/resources/META-INF/services/com.athaydes.spockframework.report.IReportCreator.properties
new file mode 100644
index 0000000..0759363
--- /dev/null
+++ b/plc4j/protocols/driver-bases/base/src/test/resources/META-INF/services/com.athaydes.spockframework.report.IReportCreator.properties
@@ -0,0 +1,66 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Name of the implementation class(es) of report creator(s) to enable (separate multiple entries with commas)
+# Currently supported classes are:
+# 1. com.athaydes.spockframework.report.internal.HtmlReportCreator
+# 2. com.athaydes.spockframework.report.template.TemplateReportCreator
+com.athaydes.spockframework.report.IReportCreator=com.athaydes.spockframework.report.internal.HtmlReportCreator
+
+# Set properties of the report creator
+# For the HtmlReportCreator, the only properties available are
+# (the location of the css files is relative to the classpath):
+com.athaydes.spockframework.report.internal.HtmlReportCreator.featureReportCss=spock-feature-report.css
+com.athaydes.spockframework.report.internal.HtmlReportCreator.summaryReportCss=spock-summary-report.css
+com.athaydes.spockframework.report.internal.HtmlReportCreator.printThrowableStackTrace=false
+com.athaydes.spockframework.report.internal.HtmlReportCreator.inlineCss=true
+com.athaydes.spockframework.report.internal.HtmlReportCreator.enabled=true
+# options are: "class_name_and_title", "class_name", "title"
+com.athaydes.spockframework.report.internal.HtmlReportCreator.specSummaryNameOption=class_name_and_title
+
+# exclude Specs Table of Contents
+com.athaydes.spockframework.report.internal.HtmlReportCreator.excludeToc=false
+
+# Output directory (where the spock reports will be created) - relative to working directory
+com.athaydes.spockframework.report.outputDir=target/spock-reports
+
+# Output directory where to store the aggregated JSON report (used to support parallel builds)
+com.athaydes.spockframework.report.aggregatedJsonReportDir=
+
+# If set to true, hides blocks which do not have any description
+com.athaydes.spockframework.report.hideEmptyBlocks=false
+
+# Set the name of the project under test so it can be displayed in the report
+com.athaydes.spockframework.report.projectName=
+
+# Set the version of the project under test so it can be displayed in the report
+com.athaydes.spockframework.report.projectVersion=Unknown
+
+# Show the source code for each block
+com.athaydes.spockframework.report.showCodeBlocks=false
+
+# Set the root location of the Spock test source code (only used if showCodeBlocks is 'true')
+com.athaydes.spockframework.report.testSourceRoots=src/test/groovy
+
+# Set properties specific to the TemplateReportCreator
+com.athaydes.spockframework.report.template.TemplateReportCreator.specTemplateFile=/templateReportCreator/spec-template.md
+com.athaydes.spockframework.report.template.TemplateReportCreator.reportFileExtension=md
+com.athaydes.spockframework.report.template.TemplateReportCreator.summaryTemplateFile=/templateReportCreator/summary-template.md
+com.athaydes.spockframework.report.template.TemplateReportCreator.summaryFileName=summary.md
+com.athaydes.spockframework.report.template.TemplateReportCreator.enabled=true
\ No newline at end of file
diff --git a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java
index 98df8d0..49087c1 100644
--- a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java
+++ b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java
@@ -32,14 +32,16 @@ import io.netty.handler.codec.MessageToMessageCodec;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.plc4x.java.api.exceptions.PlcProtocolException;
-import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
+import org.apache.plc4x.java.api.messages.PlcRequest;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.events.ConnectEvent;
import org.apache.plc4x.java.base.events.ConnectedEvent;
import org.apache.plc4x.java.base.messages.*;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultLongFieldItem;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
import org.apache.plc4x.java.ethernetip.model.EtherNetIpField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -468,7 +470,7 @@ public class Plc4XEtherNetIpProtocol extends MessageToMessageCodec<EnipPacket, P
UnconnectedDataItemResponse enipResponse = (UnconnectedDataItemResponse) payload;
ByteBuf data = enipResponse.getData();
if (data.readableBytes() > 0) {
- Map<String, Pair<PlcResponseCode, FieldItem>> values = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> values = new HashMap<>();
// TODO: This is not quite correct as this will probalby not work when requesting more than one item.
for (String fieldName : request.getFieldNames()) {
MessageRouterResponse cipResponse = MessageRouterResponse.decode(data);
diff --git a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/util/EnipPlcFieldHandler.java b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/util/EnipPlcFieldHandler.java
index eea8901..bd2fbac 100644
--- a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/util/EnipPlcFieldHandler.java
+++ b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/netty/util/EnipPlcFieldHandler.java
@@ -22,7 +22,7 @@ import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.base.connection.DefaultPlcFieldHandler;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.ethernetip.model.EtherNetIpField;
public class EnipPlcFieldHandler extends DefaultPlcFieldHandler {
@@ -36,73 +36,73 @@ public class EnipPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeByte(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeShort(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeLong(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeFloat(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeDouble(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeString(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeDate(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
@Override
- public FieldItem encodeDateTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
EtherNetIpField enipField = (EtherNetIpField) field;
throw new PlcRuntimeException("Invalid encoder for type " + enipField);
}
diff --git a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
index 1bfb9d4..291cc72 100644
--- a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
+++ b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
@@ -38,8 +38,8 @@ import org.apache.plc4x.java.api.messages.PlcRequest;
import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.*;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultBooleanFieldItem;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
import org.apache.plc4x.java.modbus.messages.items.DefaultModbusByteArrayFieldItem;
import org.apache.plc4x.java.modbus.model.*;
import org.slf4j.Logger;
@@ -263,7 +263,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
LOGGER.debug("{}: Nothing", readCoilsResponse);
ByteBuf byteBuf = readCoilsResponse.getCoilStatus();
DefaultBooleanFieldItem data = produceCoilValueList(byteBuf, field.getQuantity());
- Map<String, Pair<PlcResponseCode, FieldItem>> responseValues = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> responseValues = new HashMap<>();
responseValues.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, data));
plcRequestContainer.getResponseFuture().complete(new DefaultPlcReadResponse((InternalPlcReadRequest) request, responseValues));
} else if (modbusPdu instanceof ReadDiscreteInputsResponse) {
@@ -272,7 +272,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
LOGGER.debug("{}: Nothing", readDiscreteInputsResponse);
ByteBuf byteBuf = readDiscreteInputsResponse.getInputStatus();
DefaultBooleanFieldItem data = produceCoilValueList(byteBuf, field.getQuantity());
- Map<String, Pair<PlcResponseCode, FieldItem>> responseValues = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> responseValues = new HashMap<>();
responseValues.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, data));
plcRequestContainer.getResponseFuture().complete(new DefaultPlcReadResponse((InternalPlcReadRequest) request, responseValues));
} else if (modbusPdu instanceof ReadHoldingRegistersResponse) {
@@ -282,7 +282,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
ByteBuf byteBuf = readHoldingRegistersResponse.getRegisters();
// TODO: use register method
DefaultModbusByteArrayFieldItem data = produceRegisterValueList(byteBuf, field.getQuantity());
- Map<String, Pair<PlcResponseCode, FieldItem>> responseValues = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> responseValues = new HashMap<>();
responseValues.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, data));
plcRequestContainer.getResponseFuture().complete(new DefaultPlcReadResponse((InternalPlcReadRequest) request, responseValues));
} else if (modbusPdu instanceof ReadInputRegistersResponse) {
@@ -292,7 +292,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
ByteBuf byteBuf = readInputRegistersResponse.getRegisters();
// TODO: use register method
DefaultModbusByteArrayFieldItem data = produceRegisterValueList(byteBuf, field.getQuantity());
- Map<String, Pair<PlcResponseCode, FieldItem>> responseValues = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> responseValues = new HashMap<>();
responseValues.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, data));
plcRequestContainer.getResponseFuture().complete(new DefaultPlcReadResponse((InternalPlcReadRequest) request, responseValues));
} else if (modbusPdu instanceof MaskWriteRegisterResponse) {
diff --git a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java
index 4fa4e80..eaf3912 100644
--- a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java
+++ b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java
@@ -22,8 +22,8 @@ import org.apache.commons.lang3.ArrayUtils;
import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.base.connection.DefaultPlcFieldHandler;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultBooleanFieldItem;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
import org.apache.plc4x.java.modbus.messages.items.DefaultModbusByteArrayFieldItem;
import org.apache.plc4x.java.modbus.model.*;
@@ -52,7 +52,7 @@ public class ModbusPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
ModbusField modbusField = (ModbusField) field;
List<Boolean> booleanValues = new LinkedList<>();
for (Object value : values) {
@@ -93,7 +93,7 @@ public class ModbusPlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeByteArray(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByteArray(PlcField field, Object[] values) {
ModbusField modbusField = (ModbusField) field;
List<Byte[]> byteArrays = new LinkedList<>();
for (Object value : values) {
diff --git a/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java b/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java
index 454afec..beedcbf 100644
--- a/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java
+++ b/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java
@@ -18,19 +18,20 @@
*/
package org.apache.plc4x.java.modbus.messages.items;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.junit.Test;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
@SuppressWarnings("unchecked")
public class DefaultModbusByteArrayFieldItemTest {
@Test
public void convertByteArrayToIntegerTest() {
- FieldItem fieldItem = getFieldItemForIntegerArray();
+ BaseDefaultFieldItem fieldItem = getFieldItemForIntegerArray();
Integer itemInteger = fieldItem.getInteger(1);
assertEquals(456,itemInteger,0);
@@ -38,13 +39,13 @@ public class DefaultModbusByteArrayFieldItemTest {
@Test
public void convertByteArrayToIntegerTestReturnsNull() {
- FieldItem fieldItem = getFieldItemForIntegerArray();
+ BaseDefaultFieldItem fieldItem = getFieldItemForIntegerArray();
Integer itemInteger = fieldItem.getInteger(17);
assertNull(itemInteger);
}
- private static FieldItem getFieldItemForIntegerArray() {
+ private static BaseDefaultFieldItem getFieldItemForIntegerArray() {
int sizeIntByteBuffer = 12;
ByteBuffer byteBuffer = ByteBuffer.allocate(sizeIntByteBuffer);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
@@ -65,7 +66,7 @@ public class DefaultModbusByteArrayFieldItemTest {
@Test
public void convertByteArrayToShortTest() {
- FieldItem fieldItem = getFieldItemForShortArray();
+ BaseDefaultFieldItem fieldItem = getFieldItemForShortArray();
Short itemShort = fieldItem.getShort(3);
assertEquals(1011,itemShort,0);
@@ -73,13 +74,13 @@ public class DefaultModbusByteArrayFieldItemTest {
@Test
public void convertByteArrayToShortTestReturnsNull() {
- FieldItem fieldItem = getFieldItemForShortArray();
+ BaseDefaultFieldItem fieldItem = getFieldItemForShortArray();
Short itemShort = fieldItem.getShort(7);
assertNull(itemShort);
}
- private static FieldItem getFieldItemForShortArray() {
+ private static BaseDefaultFieldItem getFieldItemForShortArray() {
int sizeIntByteBuffer = 8;
ByteBuffer byteBuffer = ByteBuffer.allocate(sizeIntByteBuffer);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
@@ -100,7 +101,7 @@ public class DefaultModbusByteArrayFieldItemTest {
@Test
public void convertByteArrayToLongTest() {
- FieldItem fieldItem = getFieldItemForLongArray();
+ BaseDefaultFieldItem fieldItem = getFieldItemForLongArray();
Long itemLong = fieldItem.getLong(1);
assertEquals(456789123L,itemLong,0);
@@ -108,13 +109,13 @@ public class DefaultModbusByteArrayFieldItemTest {
@Test
public void convertByteArrayToLongTestReturnsNull() {
- FieldItem fieldItem = getFieldItemForLongArray();
+ BaseDefaultFieldItem fieldItem = getFieldItemForLongArray();
Long itemLong = fieldItem.getLong(4);
assertNull(itemLong);
}
- private static FieldItem getFieldItemForLongArray() {
+ private static BaseDefaultFieldItem getFieldItemForLongArray() {
int sizeIntByteBuffer = 32;
ByteBuffer byteBuffer = ByteBuffer.allocate(sizeIntByteBuffer);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
index 43c6d44..01c8cb5 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
@@ -34,7 +34,7 @@ import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.PlcMessageToMessageCodec;
import org.apache.plc4x.java.base.events.ConnectedEvent;
import org.apache.plc4x.java.base.messages.*;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.s7.messages.items.*;
import org.apache.plc4x.java.s7.model.S7Field;
import org.apache.plc4x.java.s7.netty.events.S7ConnectedEvent;
@@ -193,7 +193,7 @@ public class Plc4XS7Protocol extends PlcMessageToMessageCodec<S7Message, PlcRequ
if(!(writeRequest instanceof DefaultPlcWriteRequest)) {
throw new PlcException("The writeRequest should have been of type DefaultPlcWriteRequest");
}
- FieldItem fieldItem = ((DefaultPlcWriteRequest) writeRequest).getFieldItem(fieldName);
+ BaseDefaultFieldItem fieldItem = ((DefaultPlcWriteRequest) writeRequest).getFieldItem(fieldName);
// The number of elements provided in the request must match the number defined in the field, or
// bad things are going to happen.
@@ -411,7 +411,7 @@ public class Plc4XS7Protocol extends PlcMessageToMessageCodec<S7Message, PlcRequ
"The number of requested items doesn't match the number of returned items");
}
- Map<String, Pair<PlcResponseCode, FieldItem>> values = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> values = new HashMap<>();
List<VarPayloadItem> payloadItems = payload.getItems();
int index = 0;
for (String fieldName : plcReadRequest.getFieldNames()) {
@@ -419,7 +419,7 @@ public class Plc4XS7Protocol extends PlcMessageToMessageCodec<S7Message, PlcRequ
VarPayloadItem payloadItem = payloadItems.get(index);
PlcResponseCode responseCode = decodeResponseCode(payloadItem.getReturnCode());
- FieldItem fieldItem = null;
+ BaseDefaultFieldItem fieldItem = null;
ByteBuf data = Unpooled.wrappedBuffer(payloadItem.getData());
if (responseCode == PlcResponseCode.OK) {
// TODO 2018-09-27 jf: array returning only implemented for BOOL, BYTE, INTEGERS, FP
@@ -572,7 +572,7 @@ public class Plc4XS7Protocol extends PlcMessageToMessageCodec<S7Message, PlcRequ
throw new PlcProtocolException("Unsupported type " + field.getDataType());
}
}
- Pair<PlcResponseCode, FieldItem> result = new ImmutablePair<>(responseCode, fieldItem);
+ Pair<PlcResponseCode, BaseDefaultFieldItem> result = new ImmutablePair<>(responseCode, fieldItem);
values.put(fieldName, result);
index++;
}
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java
index 4ab6a51..b9c99df 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandler.java
@@ -22,9 +22,9 @@ import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.base.connection.DefaultPlcFieldHandler;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultLocalDateTimeFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultLongFieldItem;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
import org.apache.plc4x.java.s7.messages.items.*;
import org.apache.plc4x.java.s7.model.S7Field;
import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
@@ -46,7 +46,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
// All of these types are declared as Bit or Bit-String types.
if ((s7Field.getDataType() == TransportSize.BOOL) || (s7Field.getDataType() == TransportSize.BYTE) ||
@@ -58,7 +58,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeByte(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if ((s7Field.getDataType() == TransportSize.BYTE) || (s7Field.getDataType() == TransportSize.SINT) ||
(s7Field.getDataType() == TransportSize.USINT) || (s7Field.getDataType() == TransportSize.CHAR)) {
@@ -68,7 +68,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeShort(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if ((s7Field.getDataType() == TransportSize.WORD) || (s7Field.getDataType() == TransportSize.INT) ||
(s7Field.getDataType() == TransportSize.UINT)) {
@@ -78,7 +78,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if ((s7Field.getDataType() == TransportSize.DWORD) || (s7Field.getDataType() == TransportSize.DINT) ||
(s7Field.getDataType() == TransportSize.UDINT)) {
@@ -88,7 +88,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if ((s7Field.getDataType() == TransportSize.DWORD) || (s7Field.getDataType() == TransportSize.DINT) ||
(s7Field.getDataType() == TransportSize.UDINT)) {
@@ -98,7 +98,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeLong(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if ((s7Field.getDataType() == TransportSize.LWORD) || (s7Field.getDataType() == TransportSize.LINT) ||
(s7Field.getDataType() == TransportSize.ULINT)) {
@@ -108,7 +108,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeFloat(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if (s7Field.getDataType() == TransportSize.REAL) {
return internalEncodeFloatingPoint(field, values);
@@ -117,7 +117,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeDouble(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if (s7Field.getDataType() == TransportSize.LREAL) {
return internalEncodeFloatingPoint(field, values);
@@ -126,7 +126,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeString(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if ((s7Field.getDataType() == TransportSize.CHAR) || (s7Field.getDataType() == TransportSize.WCHAR) ||
(s7Field.getDataType() == TransportSize.STRING) || (s7Field.getDataType() == TransportSize.WSTRING)) {
@@ -136,7 +136,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if (s7Field.getDataType() == TransportSize.TIME) {
return internalEncodeTemporal(field, values);
@@ -145,7 +145,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeDate(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if (s7Field.getDataType() == TransportSize.DATE) {
return internalEncodeTemporal(field, values);
@@ -154,7 +154,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
@Override
- public FieldItem encodeDateTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
if (s7Field.getDataType() == TransportSize.DATE_AND_TIME) {
return internalEncodeTemporal(field, values);
@@ -162,7 +162,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
throw new PlcRuntimeException("Invalid encoder for type " + s7Field.getDataType().name());
}
- private FieldItem internalEncodeBoolean(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeBoolean(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case BOOL:
@@ -213,11 +213,11 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
return new S7BooleanFieldItem(s7Field.getDataType(), booleanValues.toArray(new Boolean[0]));
}
- private FieldItem internalEncodeInteger(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeInteger(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
BigInteger minValue;
BigInteger maxValue;
- Class<? extends FieldItem> fieldType;
+ Class<? extends BaseDefaultFieldItem> fieldType;
switch (s7Field.getDataType()) {
case BYTE:
minValue = BigInteger.valueOf((long) Byte.MIN_VALUE);
@@ -336,7 +336,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
}
}
- private FieldItem internalEncodeFloatingPoint(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeFloatingPoint(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
Double minValue;
Double maxValue;
@@ -380,7 +380,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
return new S7FloatingPointFieldItem(s7Field.getDataType(), floatingPointValues);
}
- private FieldItem internalEncodeString(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeString(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
int maxLength;
boolean encoding16Bit;
@@ -472,7 +472,7 @@ public class S7PlcFieldHandler extends DefaultPlcFieldHandler {
return new S7StringFieldItem(s7Field.getDataType(), stringValues.toArray(new String[0]));
}
- private FieldItem internalEncodeTemporal(PlcField field, Object[] values) {
+ private BaseDefaultFieldItem internalEncodeTemporal(PlcField field, Object[] values) {
S7Field s7Field = (S7Field) field;
switch (s7Field.getDataType()) {
case TIME:
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
index d938fc0..4a4b790 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
@@ -18,11 +18,8 @@ under the License.
*/
package org.apache.plc4x.java.s7.netty.util;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
import org.apache.plc4x.java.api.model.PlcField;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.s7.netty.model.types.TransportSize;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest;
@@ -39,6 +36,9 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
+
class S7PlcFieldHandlerTest {
private static S7PlcFieldHandler SUT = new S7PlcFieldHandler();
@@ -331,10 +331,10 @@ class S7PlcFieldHandlerTest {
}
private void encode(String name, PlcField field, Object[] values, Set<String> expectedSuccess,
- BiFunction<PlcField, Object[], FieldItem> encoder) {
+ BiFunction<PlcField, Object[], BaseDefaultFieldItem> encoder) {
boolean success = expectedSuccess.contains(name);
try {
- FieldItem fieldItem = encoder.apply(field, values);
+ BaseDefaultFieldItem fieldItem = encoder.apply(field, values);
assertNotNull(fieldItem, "A FieldItem instance should have been returned for testcase " + name);
if(!success) {
fail("Expected to fail for testcase " + name);
diff --git a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestConnection.java b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestConnection.java
index 32da5e9..5d06baf 100644
--- a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestConnection.java
+++ b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestConnection.java
@@ -21,12 +21,10 @@ package org.apache.plc4x.java.test;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.plc4x.java.api.PlcConnection;
-import org.apache.plc4x.java.base.messages.PlcReader;
-import org.apache.plc4x.java.base.messages.PlcWriter;
import org.apache.plc4x.java.api.messages.*;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.*;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.util.HashMap;
import java.util.Map;
@@ -86,11 +84,11 @@ class TestConnection implements PlcConnection, PlcReader, PlcWriter {
throw new IllegalArgumentException("Read request doesn't implement InternalPlcReadRequest");
}
InternalPlcReadRequest request = (InternalPlcReadRequest) readRequest;
- Map<String, Pair<PlcResponseCode, FieldItem>> fields = new HashMap<>();
+ Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> fields = new HashMap<>();
for (String fieldName : request.getFieldNames()) {
TestField field = (TestField) request.getField(fieldName);
- Optional<FieldItem> fieldItemOptional = device.get(field);
- ImmutablePair<PlcResponseCode, FieldItem> fieldPair;
+ Optional<BaseDefaultFieldItem> fieldItemOptional = device.get(field);
+ ImmutablePair<PlcResponseCode, BaseDefaultFieldItem> fieldPair;
boolean present = fieldItemOptional.isPresent();
fieldPair = present
? new ImmutablePair<>(PlcResponseCode.OK, fieldItemOptional.get())
@@ -110,7 +108,7 @@ class TestConnection implements PlcConnection, PlcReader, PlcWriter {
Map<String, PlcResponseCode> fields = new HashMap<>();
for (String fieldName : request.getFieldNames()) {
TestField field = (TestField) request.getField(fieldName);
- FieldItem fieldItem = request.getFieldItem(fieldName);
+ BaseDefaultFieldItem fieldItem = request.getFieldItem(fieldName);
device.set(field, fieldItem);
fields.put(fieldName, PlcResponseCode.OK);
}
diff --git a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestDevice.java b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestDevice.java
index b93e545..c4a4716 100644
--- a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestDevice.java
+++ b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestDevice.java
@@ -18,7 +18,7 @@ under the License.
*/
package org.apache.plc4x.java.test;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import java.util.*;
@@ -30,13 +30,13 @@ class TestDevice {
private final Random random = new Random();
private final String name;
- private final Map<TestField, FieldItem> state = new HashMap<>();
+ private final Map<TestField, BaseDefaultFieldItem> state = new HashMap<>();
TestDevice(String name) {
this.name = name;
}
- Optional<FieldItem> get(TestField field) {
+ Optional<BaseDefaultFieldItem> get(TestField field) {
Objects.requireNonNull(field);
switch(field.getType()) {
case STATE:
@@ -49,7 +49,7 @@ class TestDevice {
throw new IllegalArgumentException("Unsupported field type: " + field.getType().name());
}
- void set(TestField field, FieldItem value) {
+ void set(TestField field, BaseDefaultFieldItem value) {
Objects.requireNonNull(field);
switch (field.getType()) {
case STATE:
@@ -66,7 +66,7 @@ class TestDevice {
}
@SuppressWarnings("unchecked")
- private FieldItem randomValue(Class<?> type) {
+ private BaseDefaultFieldItem randomValue(Class<?> type) {
Object result = null;
if (type.equals(Byte.class))
diff --git a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldHandler.java b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldHandler.java
index 045912c..4452656 100644
--- a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldHandler.java
+++ b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldHandler.java
@@ -43,7 +43,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeBoolean(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBoolean(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Boolean.class) {
return new DefaultBooleanFieldItem((Boolean[]) values);
@@ -52,7 +52,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeByte(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByte(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Byte.class) {
return new DefaultLongFieldItem(Arrays.stream(values).map(x -> new Long((Byte) x)).toArray(Long[]::new));
@@ -61,7 +61,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeShort(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeShort(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Short.class) {
return new DefaultLongFieldItem(Arrays.stream(values).map(x -> new Long((Short) x)).toArray(Long[]::new));
@@ -70,7 +70,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeInteger(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Integer.class) {
return new DefaultLongFieldItem(Arrays.stream(values).map(x -> new Long((Integer) x)).toArray(Long[]::new));
@@ -79,7 +79,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeBigInteger(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigInteger(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == BigInteger.class) {
return new DefaultLongFieldItem(Arrays.stream(values).map(x -> ((BigInteger) x).longValue()).toArray(Long[]::new));
@@ -88,7 +88,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeLong(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeLong(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Long.class) {
return new DefaultLongFieldItem((Long[]) values);
@@ -97,7 +97,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeFloat(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeFloat(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Float.class) {
return new DefaultDoubleFieldItem((Double[]) values);
@@ -106,7 +106,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeBigDecimal(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeBigDecimal(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == BigDecimal.class) {
return new DefaultBigDecimalFieldItem((BigDecimal[]) values);
@@ -115,7 +115,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeDouble(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDouble(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == Double.class) {
return new DefaultDoubleFieldItem((Double[]) values);
@@ -124,7 +124,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeString(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeString(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == String.class) {
return new DefaultStringFieldItem((String[]) values);
@@ -133,7 +133,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeTime(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == LocalTime.class) {
return new DefaultLocalDateTimeFieldItem((LocalDateTime[]) values);
@@ -142,7 +142,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeDate(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDate(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == LocalDate.class) {
return new DefaultLocalDateTimeFieldItem((LocalDateTime[]) values);
@@ -151,7 +151,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeDateTime(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeDateTime(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == LocalDateTime.class) {
return new DefaultLocalDateTimeFieldItem((LocalDateTime[]) values);
@@ -160,7 +160,7 @@ public class TestFieldHandler implements PlcFieldHandler {
}
@Override
- public FieldItem encodeByteArray(PlcField field, Object[] values) {
+ public BaseDefaultFieldItem encodeByteArray(PlcField field, Object[] values) {
TestField testField = (TestField) field;
if (testField.getDataType() == byte[].class) {
return new DefaultByteArrayFieldItem(Arrays.stream(values).map(Byte.class::cast).toArray(Byte[]::new));
diff --git a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldItem.java b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldItem.java
index 1c93a94..a040a6d 100644
--- a/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldItem.java
+++ b/plc4j/protocols/test/src/main/java/org/apache/plc4x/java/test/TestFieldItem.java
@@ -19,9 +19,9 @@
package org.apache.plc4x.java.test;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
-public class TestFieldItem<T> extends FieldItem<T> {
+public class TestFieldItem<T> extends BaseDefaultFieldItem<T> {
public TestFieldItem(T[] values) {
super(values);
diff --git a/plc4j/protocols/test/src/test/java/org/apache/plc4x/java/test/TestDeviceTest.java b/plc4j/protocols/test/src/test/java/org/apache/plc4x/java/test/TestDeviceTest.java
index 53df1c7..9038e46 100644
--- a/plc4j/protocols/test/src/test/java/org/apache/plc4x/java/test/TestDeviceTest.java
+++ b/plc4j/protocols/test/src/test/java/org/apache/plc4x/java/test/TestDeviceTest.java
@@ -18,15 +18,13 @@
*/
package org.apache.plc4x.java.test;
-import org.apache.plc4x.java.base.messages.items.FieldItem;
+import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultLongFieldItem;
import org.junit.Test;
import java.util.Optional;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
public class TestDeviceTest {
@@ -35,7 +33,7 @@ public class TestDeviceTest {
TestDevice device = new TestDevice("foobar");
TestField field = TestField.of("RANDOM/foo:INTEGER");
- Optional<FieldItem> value = device.get(field);
+ Optional<BaseDefaultFieldItem> value = device.get(field);
assertTrue(value.isPresent());
}
@@ -45,13 +43,13 @@ public class TestDeviceTest {
TestDevice device = new TestDevice("foobar");
TestField field = TestField.of("STATE/bar:INTEGER");
- Optional<FieldItem> value = device.get(field);
+ Optional<BaseDefaultFieldItem> value = device.get(field);
assertFalse(value.isPresent());
device.set(field, new DefaultLongFieldItem((long) 42));
value = device.get(field);
assertTrue(value.isPresent());
- FieldItem fieldItem = value.get();
+ BaseDefaultFieldItem fieldItem = value.get();
assertEquals(42L, (long) fieldItem.getLong(0));
}
diff --git a/pom.xml b/pom.xml
index 63d6ea7..2495fac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,21 +88,23 @@
<!-- Exclude all generated code -->
<sonar.exclusions>**/generated-sources</sonar.exclusions>
+ <assertj.version>3.11.1</assertj.version>
<commons-io.version>2.6</commons-io.version>
<commons-codec.version>1.11</commons-codec.version>
<commons-collections4.version>4.1</commons-collections4.version>
<commons-lang.version>2.6</commons-lang.version>
- <hamcrest.version>1.3</hamcrest.version>
+ <groovy.version>2.5.3</groovy.version>
<gson.version>2.8.0</gson.version>
+ <hamcrest.version>1.3</hamcrest.version>
<junit.version>4.12</junit.version>
<junit.jupiter.version>5.2.0</junit.jupiter.version>
<junit.platform.version>1.2.0</junit.platform.version>
<logback.version>1.2.3</logback.version>
<mockito.version>2.22.0</mockito.version>
- <assertj.version>3.11.1</assertj.version>
<netty.version>4.1.23.Final</netty.version>
<pcap4j.version>1.7.3</pcap4j.version>
<slf4j.version>1.7.25</slf4j.version>
+ <spock.version>1.2-groovy-2.5</spock.version>
<!-- Site properties -->
<bootstrap.version>3.3.7</bootstrap.version>
@@ -281,6 +283,21 @@
<artifactId>pcap4j-packetfactory-static</artifactId>
<version>${pcap4j.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ <version>${groovy.version}</version>
+ <type>pom</type>
+ <!-- Ensure we only use this in test -->
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.spockframework</groupId>
+ <artifactId>spock-core</artifactId>
+ <version>${spock.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -413,6 +430,25 @@
</executions>
</plugin>
+ <!-- Compile any groovy code located in "src/test/groovy" -->
+ <plugin>
+ <groupId>org.codehaus.gmavenplus</groupId>
+ <artifactId>gmavenplus-plugin</artifactId>
+ <version>1.6.2</version>
+ <executions>
+ <execution>
+ <id>compile-groovy-tests</id>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>addTestSources</goal>
+ <goal>generateTestStubs</goal>
+ <goal>compileTests</goal>
+ <goal>removeTestStubs</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
<!--
===================================
== ==
@@ -1081,6 +1117,13 @@
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ <type>pom</type>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -1119,6 +1162,9 @@
<ignoredDependency>org.mockito:mockito-junit-jupiter</ignoredDependency>
<ignoredDependency>org.slf4j:slf4j-api</ignoredDependency>
<ignoredDependency>ch.qos.logback:logback-classic</ignoredDependency>
+ <ignoredDependency>org.codehaus.groovy:groovy-all</ignoredDependency>
+ <ignoredDependency>org.codehaus.groovy:groovy</ignoredDependency>
+ <ignoredDependency>com.athaydes:spock-reports</ignoredDependency>
</ignoredDependencies>
</configuration>
</execution>
@@ -1218,6 +1264,10 @@
Notice the @ instead of the $ as prefix? That's late evaluation.
-->
<argLine>-Xmx256m @{surefireArgLine}</argLine>
+ <includes>
+ <include>**/*Test.java</include>
+ <include>**/*Spec.java</include>
+ </includes>
</configuration>
</plugin>