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/05 10:58:33 UTC

[incubator-plc4x] branch refactoring/java_generify updated: added a checked variant of bulk requests/responses.

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


The following commit(s) were added to refs/heads/refactoring/java_generify by this push:
     new 1eb41f8  added a checked variant of bulk requests/responses.
1eb41f8 is described below

commit 1eb41f86070da5789a59be8d7d50b49921d7d1b4
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Jan 5 11:58:28 2018 +0100

    added a checked variant of bulk requests/responses.
---
 .../java/api/messages/BulkPlcReadRequest.java      |  2 +-
 .../java/api/messages/BulkPlcReadResponse.java     |  2 +-
 .../java/api/messages/BulkPlcWriteRequest.java     |  2 +-
 .../java/api/messages/BulkPlcWriteResponse.java    |  2 +-
 ...Request.java => CheckedBulkPlcReadRequest.java} | 35 +++++++++++++-------
 ...sponse.java => CheckedBulkPlcReadResponse.java} | 11 ++++---
 ...equest.java => CheckedBulkPlcWriteRequest.java} | 37 ++++++++++++++--------
 ...ponse.java => CheckedBulkPlcWriteResponse.java} | 11 ++++---
 8 files changed, 63 insertions(+), 39 deletions(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java
index 631a99d..58f68a2 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java
@@ -47,7 +47,7 @@ public class BulkPlcReadRequest implements PlcReadRequest {
         readRequestItems.add(readRequestItem);
     }
 
-    public List<ReadRequestItem> getReadRequestItems() {
+    public List<? extends ReadRequestItem> getReadRequestItems() {
         return readRequestItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java
index 420d325..209ae5e 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java
@@ -36,7 +36,7 @@ public class BulkPlcReadResponse implements PlcReadResponse {
         return request;
     }
 
-    public List<ReadResponseItem> getResponseItems() {
+    public List<? extends ReadResponseItem> getResponseItems() {
         return responseItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java
index ff64054..c1cbf10 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java
@@ -51,7 +51,7 @@ public class BulkPlcWriteRequest implements PlcWriteRequest {
         requestItems.add(requestItem);
     }
 
-    public List<WriteRequestItem> getRequestItems() {
+    public List<? extends WriteRequestItem> getRequestItems() {
         return requestItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java
index 8e51652..25f2a71 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java
@@ -36,7 +36,7 @@ public class BulkPlcWriteResponse implements PlcWriteResponse {
         return request;
     }
 
-    public List<WriteResponseItem> getResponseItems() {
+    public List<? extends WriteResponseItem> getResponseItems() {
         return responseItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcReadRequest.java
similarity index 55%
copy from plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java
copy to plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcReadRequest.java
index 631a99d..72ec1a0 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcReadRequest.java
@@ -24,30 +24,43 @@ import org.apache.plc4x.java.api.model.Address;
 import java.util.LinkedList;
 import java.util.List;
 
-@SuppressWarnings("unchecked")
-public class BulkPlcReadRequest implements PlcReadRequest {
+public class CheckedBulkPlcReadRequest<T> extends BulkPlcReadRequest {
 
-    private final List<ReadRequestItem> readRequestItems;
+    private final List<ReadRequestItem<T>> readRequestItems;
 
-    public BulkPlcReadRequest() {
+    private Class<T> datatype;
+
+    public CheckedBulkPlcReadRequest(Class<T> type) {
+        this.datatype = type;
         this.readRequestItems = new LinkedList<>();
     }
 
-    public BulkPlcReadRequest(Class dataType, Address address) {
-        this();
-        addItem(new ReadRequestItem(dataType, address));
+    public CheckedBulkPlcReadRequest(Class<T> dataType, Address address) {
+        this(dataType);
+        addItem(new ReadRequestItem<>(dataType, address));
+    }
+
+    public CheckedBulkPlcReadRequest(Class<T> dataType, Address address, int size) {
+        this(dataType);
+        addItem(new ReadRequestItem<>(dataType, address, size));
     }
 
-    public BulkPlcReadRequest(Class dataType, Address address, int size) {
-        this();
-        addItem(new ReadRequestItem(dataType, address, size));
+    public void addCheckedItem(ReadRequestItem<T> readRequestItem) {
+        readRequestItems.add(readRequestItem);
     }
 
+    @SuppressWarnings("unchecked")
     public void addItem(ReadRequestItem readRequestItem) {
+        if (readRequestItem == null) {
+            return;
+        }
+        if (readRequestItem.getDatatype() != datatype) {
+            throw new IllegalArgumentException("Incompatible datatype " + readRequestItem.getDatatype());
+        }
         readRequestItems.add(readRequestItem);
     }
 
-    public List<ReadRequestItem> getReadRequestItems() {
+    public List<? extends ReadRequestItem> getReadRequestItems() {
         return readRequestItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcReadResponse.java
similarity index 73%
copy from plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java
copy to plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcReadResponse.java
index 420d325..ff9976d 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcReadResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcReadResponse.java
@@ -22,12 +22,13 @@ import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
 
 import java.util.List;
 
-public class BulkPlcReadResponse implements PlcReadResponse {
+public class CheckedBulkPlcReadResponse<T> extends BulkPlcReadResponse {
 
-    private final BulkPlcReadRequest request;
-    private final List<ReadResponseItem> responseItems;
+    private final CheckedBulkPlcReadRequest<T> request;
+    private final List<ReadResponseItem<T>> responseItems;
 
-    public BulkPlcReadResponse(BulkPlcReadRequest request, List<ReadResponseItem> responseItems) {
+    public CheckedBulkPlcReadResponse(CheckedBulkPlcReadRequest<T> request, List<ReadResponseItem<T>> responseItems) {
+        super(null, null);
         this.request = request;
         this.responseItems = responseItems;
     }
@@ -36,7 +37,7 @@ public class BulkPlcReadResponse implements PlcReadResponse {
         return request;
     }
 
-    public List<ReadResponseItem> getResponseItems() {
+    public List<ReadResponseItem<T>> getResponseItems() {
         return responseItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcWriteRequest.java
similarity index 51%
copy from plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java
copy to plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcWriteRequest.java
index ff64054..e51e225 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcWriteRequest.java
@@ -24,34 +24,43 @@ import org.apache.plc4x.java.api.model.Address;
 import java.util.LinkedList;
 import java.util.List;
 
-@SuppressWarnings("unchecked")
-public class BulkPlcWriteRequest implements PlcWriteRequest {
+public class CheckedBulkPlcWriteRequest<T> extends BulkPlcWriteRequest {
 
-    private final List<WriteRequestItem> requestItems;
+    private final List<WriteRequestItem<T>> requestItems;
 
-    public BulkPlcWriteRequest() {
+    private Class<T> datatype;
+
+    public CheckedBulkPlcWriteRequest(Class<T> type) {
+        this.datatype = type;
         this.requestItems = new LinkedList<>();
     }
 
-    public BulkPlcWriteRequest(Class dataType, Address address, Object value) {
-        this();
-        addItem(new WriteRequestItem(dataType, address, value));
+    public CheckedBulkPlcWriteRequest(Class<T> dataType, Address address, T value) {
+        this(dataType);
+        addItem(new WriteRequestItem<>(dataType, address, value));
     }
 
-    public BulkPlcWriteRequest(Class dataType, Address address, Object[] values) {
-        this();
-        addItem(new WriteRequestItem(dataType, address, values));
+    public CheckedBulkPlcWriteRequest(Class<T> dataType, Address address, T[] values) {
+        this(dataType);
+        addItem(new WriteRequestItem<>(dataType, address, values));
     }
 
-    public BulkPlcWriteRequest(List<WriteRequestItem> requestItems) {
+    public CheckedBulkPlcWriteRequest(List<WriteRequestItem<T>> requestItems) {
         this.requestItems = requestItems;
     }
 
-    public void addItem(WriteRequestItem requestItem) {
-        requestItems.add(requestItem);
+    @SuppressWarnings("unchecked")
+    public void addItem(WriteRequestItem writeRequestItem) {
+        if (writeRequestItem == null) {
+            return;
+        }
+        if (writeRequestItem.getDatatype() != datatype) {
+            throw new IllegalArgumentException("Incompatible datatype " + writeRequestItem.getDatatype());
+        }
+        requestItems.add(writeRequestItem);
     }
 
-    public List<WriteRequestItem> getRequestItems() {
+    public List<? extends WriteRequestItem> getRequestItems() {
         return requestItems;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcWriteResponse.java
similarity index 73%
copy from plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java
copy to plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcWriteResponse.java
index 8e51652..c76175b 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/BulkPlcWriteResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/CheckedBulkPlcWriteResponse.java
@@ -22,12 +22,13 @@ import org.apache.plc4x.java.api.messages.items.WriteResponseItem;
 
 import java.util.List;
 
-public class BulkPlcWriteResponse implements PlcWriteResponse {
+public class CheckedBulkPlcWriteResponse<T> extends BulkPlcWriteResponse {
 
-    private final BulkPlcWriteRequest request;
-    private final List<WriteResponseItem> responseItems;
+    private final CheckedBulkPlcWriteRequest<T> request;
+    private final List<WriteResponseItem<T>> responseItems;
 
-    public BulkPlcWriteResponse(BulkPlcWriteRequest request, List<WriteResponseItem> responseItems) {
+    public CheckedBulkPlcWriteResponse(CheckedBulkPlcWriteRequest<T> request, List<WriteResponseItem<T>> responseItems) {
+        super(null, null);
         this.request = request;
         this.responseItems = responseItems;
     }
@@ -36,7 +37,7 @@ public class BulkPlcWriteResponse implements PlcWriteResponse {
         return request;
     }
 
-    public List<WriteResponseItem> getResponseItems() {
+    public List<WriteResponseItem<T>> getResponseItems() {
         return responseItems;
     }
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@plc4x.apache.org" <co...@plc4x.apache.org>'].