You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/01/11 09:58:55 UTC

[incubator-plc4x] 01/01: use list instead of array and get rid of some more suppress warnings

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 <sr...@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" <co...@plc4x.apache.org>.