This is an automated email from the ASF dual-hosted git repository. sruehl pushed a commit to branch refactoring/java_generify in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
commit 1361a0a2f604b1e932e09e7825a25147edb230d1 Author: Sebastian Rühl <sru...@apache.org> AuthorDate: Thu Jan 11 10:53:55 2018 +0100 use list instead of array and get rid of some more suppress warnings --- .../java/org/apache/plc4x/camel/PLC4XProducer.java | 6 ++--- .../apache/plc4x/edgent/mock/MockConnection.java | 4 +-- .../plc4x/java/api/messages/PlcWriteRequest.java | 8 +----- .../java/api/messages/items/WriteRequestItem.java | 18 +++++++------- .../api/messages/specific/BulkPlcReadRequest.java | 17 ++++++------- .../api/messages/specific/BulkPlcReadResponse.java | 6 ++--- .../api/messages/specific/BulkPlcWriteRequest.java | 18 +++++--------- .../messages/specific/BulkPlcWriteResponse.java | 6 ++--- .../specific/CheckedBulkPlcReadRequest.java | 6 ++--- .../specific/CheckedBulkPlcWriteRequest.java | 13 +++------- .../messages/specific/SinglePlcReadRequest.java | 2 +- .../messages/specific/SinglePlcWriteRequest.java | 2 +- .../plc4x/java/api/messages/APIMessageTests.java | 29 +++++++++++----------- .../plc4x/java/s7/netty/Plc4XS7Protocol.java | 24 +++++++++++------- 14 files changed, 74 insertions(+), 85 deletions(-) diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java b/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java index cff83d2..fcd037c 100644 --- a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java +++ b/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java @@ -25,9 +25,9 @@ import org.apache.camel.impl.DefaultAsyncProducer; import org.apache.plc4x.java.api.connection.PlcConnection; import org.apache.plc4x.java.api.connection.PlcWriter; import org.apache.plc4x.java.api.exceptions.PlcException; +import org.apache.plc4x.java.api.messages.items.WriteRequestItem; import org.apache.plc4x.java.api.messages.specific.BulkPlcWriteRequest; import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest; -import org.apache.plc4x.java.api.messages.items.WriteRequestItem; import org.apache.plc4x.java.api.model.Address; import java.util.List; @@ -62,9 +62,9 @@ public class PLC4XProducer extends DefaultAsyncProducer { CompletableFuture<?> completableFuture; if (body instanceof List) { List<?> bodyList = in.getBody(List.class); - List<WriteRequestItem> collect = bodyList + List<WriteRequestItem<?>> collect = bodyList .stream() - .map(o -> new WriteRequestItem(o.getClass(), address, o)) + .map(o -> (WriteRequestItem<?>) new WriteRequestItem(o.getClass(), address, o)) .collect(Collectors.toList()); BulkPlcWriteRequest bulkPlcWriteRequest = new BulkPlcWriteRequest(collect); PlcWriter plcWriter = plcConnection.getWriter().orElseThrow(() -> new IllegalArgumentException("Writer for driver not found")); 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 1a5bb09..1868046 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 @@ -91,7 +91,7 @@ public class MockConnection extends AbstractPlcConnection implements PlcReader, cf.completeExceptionally(new PlcIoException(readExceptionMsg)); return cf; } - List<ReadResponseItem> responseItems = new LinkedList<>(); + List<ReadResponseItem<?>> responseItems = new LinkedList<>(); for (ReadRequestItem requestItem : readRequest.getReadRequestItems()) { ReadResponseItem responseItem = new ReadResponseItem(requestItem, ResponseCode.OK, Collections.singletonList(getDataValue(requestItem.getAddress()))); @@ -118,7 +118,7 @@ public class MockConnection extends AbstractPlcConnection implements PlcReader, cf.completeExceptionally(new PlcIoException(writeExceptionMsg)); return cf; } - List<WriteResponseItem> responseItems = new LinkedList<>(); + List<WriteResponseItem<?>> responseItems = new LinkedList<>(); for (WriteRequestItem requestItem : writeRequest.getRequestItems()) { setDataValue(requestItem.getAddress(), requestItem.getValues()); WriteResponseItem<?> responseItem = new WriteResponseItem<>(requestItem, ResponseCode.OK); diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java index e95ba29..1a6c082 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java @@ -59,13 +59,7 @@ public interface PlcWriteRequest extends PlcRequest { private List<WriteRequestItem> requests = new LinkedList<>(); - public <T> PlcWriteRequest.Builder addItem(Class<T> dataType, Address address, T value) { - checkType(dataType); - requests.add(new WriteRequestItem<>(dataType, address, value)); - return this; - } - - public <T> PlcWriteRequest.Builder addItem(Class<T> dataType, Address address, T[] values) { + public <T> PlcWriteRequest.Builder addItem(Class<T> dataType, Address address, T... values) { checkType(dataType); requests.add(new WriteRequestItem<>(dataType, address, values)); return this; diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java index 33aa544..5ece7c0 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java @@ -20,7 +20,9 @@ package org.apache.plc4x.java.api.messages.items; import org.apache.plc4x.java.api.model.Address; -import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.Optional; public class WriteRequestItem<T> { @@ -29,23 +31,21 @@ public class WriteRequestItem<T> { private final Address address; - private final T[] values; + private final List<T> values; private WriteResponseItem<T> responseItem; - @SuppressWarnings("unchecked") - public WriteRequestItem(Class<T> datatype, Address address, T value) { + public WriteRequestItem(Class<T> datatype, Address address, T... values) { this.datatype = datatype; this.address = address; - this.values = (T[]) Array.newInstance(datatype, 1); - this.values[0] = value; + this.values = new ArrayList<>(Arrays.asList(values)); responseItem = null; } - public WriteRequestItem(Class<T> datatype, Address address, T[] values) { + public WriteRequestItem(Class<T> datatype, Address address, List<T> values) { this.datatype = datatype; this.address = address; - this.values = values; + this.values = new ArrayList<>(values); responseItem = null; } @@ -57,7 +57,7 @@ public class WriteRequestItem<T> { return address; } - public T[] getValues() { + public List<T> getValues() { return values; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadRequest.java index 4b56e5a..47c7f39 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadRequest.java @@ -25,34 +25,33 @@ import org.apache.plc4x.java.api.model.Address; import java.util.LinkedList; import java.util.List; -@SuppressWarnings("unchecked") public class BulkPlcReadRequest implements PlcReadRequest { - private final List<ReadRequestItem> readRequestItems; + private final List<ReadRequestItem<?>> readRequestItems; public BulkPlcReadRequest() { this.readRequestItems = new LinkedList<>(); } - public BulkPlcReadRequest(Class dataType, Address address) { + public BulkPlcReadRequest(Class<?> dataType, Address address) { this(); - addItem(new ReadRequestItem(dataType, address)); + addItem(new ReadRequestItem<>(dataType, address)); } - public BulkPlcReadRequest(Class dataType, Address address, int size) { + public BulkPlcReadRequest(Class<?> dataType, Address address, int size) { this(); - addItem(new ReadRequestItem(dataType, address, size)); + addItem(new ReadRequestItem<>(dataType, address, size)); } - public BulkPlcReadRequest(List<ReadRequestItem> readRequestItems) { + public BulkPlcReadRequest(List<ReadRequestItem<?>> readRequestItems) { this.readRequestItems = readRequestItems; } - public void addItem(ReadRequestItem readRequestItem) { + public void addItem(ReadRequestItem<?> readRequestItem) { readRequestItems.add(readRequestItem); } - public List<? extends ReadRequestItem> getReadRequestItems() { + public List<? extends ReadRequestItem<?>> getReadRequestItems() { return readRequestItems; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadResponse.java index 7c9ee72..00458a7 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadResponse.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcReadResponse.java @@ -29,9 +29,9 @@ import java.util.Optional; public class BulkPlcReadResponse implements PlcReadResponse { private final BulkPlcReadRequest request; - private final List<ReadResponseItem> responseItems; + private final List<ReadResponseItem<?>> responseItems; - public BulkPlcReadResponse(BulkPlcReadRequest request, List<ReadResponseItem> responseItems) { + public BulkPlcReadResponse(BulkPlcReadRequest request, List<ReadResponseItem<?>> responseItems) { this.request = request; this.responseItems = responseItems; } @@ -40,7 +40,7 @@ public class BulkPlcReadResponse implements PlcReadResponse { return request; } - public List<? extends ReadResponseItem> getResponseItems() { + public List<? extends ReadResponseItem<?>> getResponseItems() { return responseItems; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteRequest.java index 610e072..9ffe97c 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteRequest.java @@ -25,34 +25,28 @@ import org.apache.plc4x.java.api.model.Address; import java.util.LinkedList; import java.util.List; -@SuppressWarnings("unchecked") public class BulkPlcWriteRequest implements PlcWriteRequest { - private final List<WriteRequestItem> requestItems; + private final List<WriteRequestItem<?>> requestItems; public BulkPlcWriteRequest() { this.requestItems = new LinkedList<>(); } - public BulkPlcWriteRequest(Class dataType, Address address, Object value) { + public <T> BulkPlcWriteRequest(Class<T> dataType, Address address, T... values) { this(); - addItem(new WriteRequestItem(dataType, address, value)); + addItem(new WriteRequestItem<>(dataType, address, values)); } - public BulkPlcWriteRequest(Class dataType, Address address, Object[] values) { - this(); - addItem(new WriteRequestItem(dataType, address, values)); - } - - public BulkPlcWriteRequest(List<WriteRequestItem> requestItems) { + public BulkPlcWriteRequest(List<WriteRequestItem<?>> requestItems) { this.requestItems = requestItems; } - public void addItem(WriteRequestItem requestItem) { + public void addItem(WriteRequestItem<?> requestItem) { requestItems.add(requestItem); } - public List<? extends WriteRequestItem> getRequestItems() { + public List<? extends WriteRequestItem<?>> getRequestItems() { return requestItems; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteResponse.java index 873fffd..3af5c33 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteResponse.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/BulkPlcWriteResponse.java @@ -26,9 +26,9 @@ import java.util.List; public class BulkPlcWriteResponse implements PlcWriteResponse { private final BulkPlcWriteRequest request; - private final List<WriteResponseItem> responseItems; + private final List<WriteResponseItem<?>> responseItems; - public BulkPlcWriteResponse(BulkPlcWriteRequest request, List<WriteResponseItem> responseItems) { + public BulkPlcWriteResponse(BulkPlcWriteRequest request, List<WriteResponseItem<?>> responseItems) { this.request = request; this.responseItems = responseItems; } @@ -37,7 +37,7 @@ public class BulkPlcWriteResponse implements PlcWriteResponse { return request; } - public List<? extends WriteResponseItem> getResponseItems() { + public List<? extends WriteResponseItem<?>> getResponseItems() { return responseItems; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcReadRequest.java index a56c78c..42fe6eb 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcReadRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcReadRequest.java @@ -50,17 +50,17 @@ public class CheckedBulkPlcReadRequest<T> extends BulkPlcReadRequest { } @SuppressWarnings("unchecked") - public void addItem(ReadRequestItem readRequestItem) { + public void addItem(ReadRequestItem<?> readRequestItem) { if (readRequestItem == null) { return; } if (readRequestItem.getDatatype() != datatype) { throw new IllegalArgumentException("Incompatible datatype " + readRequestItem.getDatatype()); } - readRequestItems.add(readRequestItem); + readRequestItems.add((ReadRequestItem<T>) readRequestItem); } - public List<? extends ReadRequestItem> getReadRequestItems() { + public List<? extends ReadRequestItem<?>> getReadRequestItems() { return readRequestItems; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcWriteRequest.java index 550b985..ff94d8b 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcWriteRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/CheckedBulkPlcWriteRequest.java @@ -35,12 +35,7 @@ public class CheckedBulkPlcWriteRequest<T> extends BulkPlcWriteRequest { this.requestItems = new LinkedList<>(); } - public CheckedBulkPlcWriteRequest(Class<T> dataType, Address address, T value) { - this(dataType); - addItem(new WriteRequestItem<>(dataType, address, value)); - } - - public CheckedBulkPlcWriteRequest(Class<T> dataType, Address address, T[] values) { + public CheckedBulkPlcWriteRequest(Class<T> dataType, Address address, T... values) { this(dataType); addItem(new WriteRequestItem<>(dataType, address, values)); } @@ -50,17 +45,17 @@ public class CheckedBulkPlcWriteRequest<T> extends BulkPlcWriteRequest { } @SuppressWarnings("unchecked") - public void addItem(WriteRequestItem writeRequestItem) { + public void addItem(WriteRequestItem<?> writeRequestItem) { if (writeRequestItem == null) { return; } if (writeRequestItem.getDatatype() != datatype) { throw new IllegalArgumentException("Incompatible datatype " + writeRequestItem.getDatatype()); } - requestItems.add(writeRequestItem); + requestItems.add((WriteRequestItem<T>)writeRequestItem); } - public List<? extends WriteRequestItem> getRequestItems() { + public List<? extends WriteRequestItem<?>> getRequestItems() { return requestItems; } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadRequest.java index 104281d..ac5d05f 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadRequest.java @@ -47,7 +47,7 @@ public class SinglePlcReadRequest<T> implements PlcReadRequest { @Override @SuppressWarnings("unchecked") - public void addItem(ReadRequestItem readRequestItem) { + public void addItem(ReadRequestItem<?> readRequestItem) { if (this.requestItem != null && readRequestItem != null) { throw new IllegalStateException(SinglePlcReadRequest.class.getName() + " can only contain on requestItem"); } diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteRequest.java index bf224ac..3beca8b 100644 --- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteRequest.java +++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteRequest.java @@ -47,7 +47,7 @@ public class SinglePlcWriteRequest<T> implements PlcWriteRequest { @Override @SuppressWarnings("unchecked") - public void addItem(WriteRequestItem requestItem) { + public void addItem(WriteRequestItem<?> requestItem) { if (this.requestItem != null && requestItem != null) { throw new IllegalStateException(SinglePlcReadRequest.class.getName() + " can only contain on readRequestItem"); } diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/APIMessageTests.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/APIMessageTests.java index 0cb0ba6..1ea3e8a 100644 --- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/APIMessageTests.java +++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/APIMessageTests.java @@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Collections; +import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -77,7 +78,7 @@ class APIMessageTests { assertTrue(writeRequestItem.getAddress().equals(address), "Unexpected address"); assertTrue(writeRequestItem.getDatatype() == Byte.class, "Unexpected data type"); - assertTrue(writeRequestItem.getValues()[0] == 0x45, "Unexpected value"); + assertTrue(writeRequestItem.getValues().get(0) == 0x45, "Unexpected value"); } @Test @@ -88,8 +89,8 @@ class APIMessageTests { WriteRequestItem<Byte> writeRequestItem = new WriteRequestItem<>(Byte.class, address, data); assertTrue(writeRequestItem.getAddress().equals(address), "Unexpected address"); assertTrue(writeRequestItem.getDatatype() == Byte.class, "Unexpected data type"); - assertTrue(writeRequestItem.getValues()[0] == (byte) 0x23, "Unexpected value"); - assertTrue(writeRequestItem.getValues()[1] == (byte) 0x84, "Unexpected value"); + assertTrue(writeRequestItem.getValues().get(0) == (byte) 0x23, "Unexpected value"); + assertTrue(writeRequestItem.getValues().get(1) == (byte) 0x84, "Unexpected value"); } @Test @@ -145,7 +146,7 @@ class APIMessageTests { @Tag("fast") void plcReadResponse() { BulkPlcReadRequest plcReadRequest = new BulkPlcReadRequest(); - ArrayList<ReadResponseItem> responseItems = new ArrayList<>(); + List<ReadResponseItem<?>> responseItems = new ArrayList<>(); MockAddress address = new MockAddress("mock:/DATA"); ReadRequestItem<Byte> readRequestItem = new ReadRequestItem<>(Byte.class, address, 1); ReadResponseItem<Byte> readResponseItem = new ReadResponseItem<>(readRequestItem, ResponseCode.OK, Collections.emptyList()); @@ -172,8 +173,8 @@ class APIMessageTests { PlcWriteRequest plcWriteRequest = new SinglePlcWriteRequest<>(Byte.class, address, (byte) 0x33); assertTrue(plcWriteRequest.getRequestItems().size() == 1, "Expected no request item"); assertTrue(plcWriteRequest.getNumberOfItems() == 1, "Expected one request item"); - Object[] values = plcWriteRequest.getRequestItems().get(0).getValues(); - assertTrue((byte) values[0] == (byte) 0x33, "Expected value 0x33"); + List values = plcWriteRequest.getRequestItems().get(0).getValues(); + assertTrue((byte) values.get(0) == (byte) 0x33, "Expected value 0x33"); } @Test @@ -184,16 +185,16 @@ class APIMessageTests { PlcWriteRequest plcWriteRequest = new SinglePlcWriteRequest<>(Byte.class, address, data); assertTrue(plcWriteRequest.getRequestItems().size() == 1, "Expected one request item"); assertTrue(plcWriteRequest.getNumberOfItems() == 1, "Expected one request item"); - Byte[] values = (Byte[]) plcWriteRequest.getRequestItems().get(0).getValues(); - assertTrue(values[0] == (byte) 0x22, "Expected value 0x22"); - assertTrue(values[1] == (byte) 0x66, "Expected value 0x66"); + List values = plcWriteRequest.getRequestItems().get(0).getValues(); + assertTrue((Byte) values.get(0) == (byte) 0x22, "Expected value 0x22"); + assertTrue((Byte) values.get(1) == (byte) 0x66, "Expected value 0x66"); } @Test @Tag("fast") void plcWriteResponse() { BulkPlcWriteRequest plcWriteRequest = new BulkPlcWriteRequest(); - ArrayList<WriteResponseItem> responseItems = new ArrayList<>(); + List<WriteResponseItem<?>> responseItems = new ArrayList<>(); MockAddress address = new MockAddress("mock:/DATA"); WriteRequestItem<Byte> writeRequestItem = new WriteRequestItem<>(Byte.class, address, (byte) 1); WriteResponseItem<Byte> writeResponseItem = new WriteResponseItem<>(writeRequestItem, ResponseCode.OK); @@ -209,7 +210,7 @@ class APIMessageTests { @Tag("fast") void bulkPlcWriteResponseGetValue() { BulkPlcWriteRequest plcWriteRequest = new BulkPlcWriteRequest(); - ArrayList<WriteResponseItem> responseItems = new ArrayList<>(); + List<WriteResponseItem<?>> responseItems = new ArrayList<>(); MockAddress address = new MockAddress("mock:/DATA"); WriteRequestItem<Byte> writeRequestItem1 = new WriteRequestItem<>(Byte.class, address, (byte) 1); WriteRequestItem<Byte> writeRequestItem2 = new WriteRequestItem<>(Byte.class, address, (byte) 1); @@ -228,7 +229,7 @@ class APIMessageTests { @Tag("fast") void nonExistingItemBulkPlcWriteResponseGetValue() { BulkPlcWriteRequest plcWriteRequest = new BulkPlcWriteRequest(); - ArrayList<WriteResponseItem> responseItems = new ArrayList<>(); + List<WriteResponseItem<?>> responseItems = new ArrayList<>(); MockAddress address = new MockAddress("mock:/DATA"); WriteRequestItem<Byte> nonExistingWriteRequestItem = new WriteRequestItem<>(Byte.class, address, (byte) 1); BulkPlcWriteResponse plcWriteResponse = new BulkPlcWriteResponse(plcWriteRequest, responseItems); @@ -240,7 +241,7 @@ class APIMessageTests { @Tag("fast") void bulkPlcReadResponseGetValue() { BulkPlcReadRequest plcReadRequest = new BulkPlcReadRequest(); - ArrayList<ReadResponseItem> responseItems = new ArrayList<>(); + List<ReadResponseItem<?>> responseItems = new ArrayList<>(); MockAddress address = new MockAddress("mock:/DATA"); ReadRequestItem<Byte> readRequestItem1 = new ReadRequestItem<>(Byte.class, address, 1); ReadRequestItem<Byte> readRequestItem2 = new ReadRequestItem<>(Byte.class, address, 1); @@ -259,7 +260,7 @@ class APIMessageTests { @Tag("fast") void nonExistingItemBulkPlcReadResponseGetValue() { BulkPlcReadRequest plcReadRequest = new BulkPlcReadRequest(); - ArrayList<ReadResponseItem> responseItems = new ArrayList<>(); + List<ReadResponseItem<?>> responseItems = new ArrayList<>(); MockAddress address = new MockAddress("mock:/DATA"); ReadRequestItem<Byte> nonExistingReadRequestItem = new ReadRequestItem<>(Byte.class, address, 1); BulkPlcReadResponse plcReadResponse = new BulkPlcReadResponse(plcReadRequest, responseItems); 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 cc1faf1..6233801 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 @@ -22,7 +22,10 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageCodec; import org.apache.plc4x.java.api.exceptions.PlcException; 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.PlcRequestContainer; +import org.apache.plc4x.java.api.messages.PlcResponse; +import org.apache.plc4x.java.api.messages.PlcWriteRequest; import org.apache.plc4x.java.api.messages.items.ReadRequestItem; import org.apache.plc4x.java.api.messages.items.ReadResponseItem; import org.apache.plc4x.java.api.messages.items.WriteRequestItem; @@ -99,7 +102,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest // Depending on the address type, generate the corresponding type of request item. VarParameterItem varParameterItem = encodeVarParameterItem( - requestItem.getAddress(), transportSize, requestItem.getValues().length); + requestItem.getAddress(), transportSize, requestItem.getValues().size()); parameterItems.add(varParameterItem); DataTransportSize dataTransportSize = encodeDataTransportSize(requestItem.getDatatype()); @@ -108,7 +111,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest } VarPayloadItem varPayloadItem = new VarPayloadItem( - DataTransportErrorCode.RESERVED, dataTransportSize, encodeData(requestItem.getValues())); + DataTransportErrorCode.RESERVED, dataTransportSize, encodeData(requestItem.getValues().toArray())); payloadItems.add(varPayloadItem); } @@ -141,7 +144,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest if (requestContainer.getRequest() instanceof PlcReadRequest) { PlcReadRequest plcReadRequest = (PlcReadRequest) requestContainer.getRequest(); - List<ReadResponseItem> responseItems = new LinkedList<>(); + List<ReadResponseItem<?>> responseItems = new LinkedList<>(); VarPayload payload = responseMessage.getPayload(VarPayload.class); // If the numbers of items don't match, we're in big trouble as the only // way to know how to interpret the responses is by aligning them with the @@ -186,7 +189,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest // Handle the response to a write request. else if (requestContainer.getRequest() instanceof PlcWriteRequest) { PlcWriteRequest plcWriteRequest = (PlcWriteRequest) requestContainer.getRequest(); - List<WriteResponseItem> responseItems = new LinkedList<>(); + List<WriteResponseItem<?>> responseItems = new LinkedList<>(); VarPayload payload = responseMessage.getPayload(VarPayload.class); // If the numbers of items don't match, we're in big trouble as the only // way to know how to interpret the responses is by aligning them with the @@ -297,7 +300,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest } private byte[] encodeData(Object[] values) { - final int length =values.length; + final int length = values.length; if (length == 0) { return new byte[]{}; } @@ -380,10 +383,13 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest } } - @SuppressWarnings("unchecked")private <T>List<T> decodeData(Class<T> datatype, byte[] s7Data) throws PlcProtocolException { + @SuppressWarnings("unchecked") + private <T> List<T> decodeData(Class<T> datatype, byte[] s7Data) throws PlcProtocolException { List<Object> result = new LinkedList<>(); - int i = 0; final int length = s7Data.length;while (i < length) { + int i = 0; + final int length = s7Data.length; + while (i < length) { if (datatype == Boolean.class) { result.add((s7Data[i] & 0x01) == 0x01); i += 1; @@ -408,7 +414,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest } else if (datatype == String.class) { StringBuilder builder = new StringBuilder(); while (s7Data[i] != (byte) 0x0 && i < length) { - builder.append((char)s7Data[i]); + builder.append((char) s7Data[i]); i++; } i++; // skip terminating character -- To stop receiving notification emails like this one, please contact "commits@plc4x.apache.org" <commits@plc4x.apache.org>.