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 14:40:13 UTC

[incubator-plc4x] 01/12: make single requests/responses extend from checked BulkResponse

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 6fbc8de4b59cba24b3c0fee8054d699bb1f55b77
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 11:32:24 2018 +0100

    make single requests/responses extend from checked BulkResponse
---
 .../java/org/apache/plc4x/edgent/PlcConnectionAdapter.java   |  2 +-
 .../java/org/apache/plc4x/edgent/mock/MockConnection.java    | 11 +++++++----
 .../api/messages/specific/CheckedBulkPlcReadRequest.java     |  5 +----
 .../api/messages/specific/CheckedBulkPlcWriteRequest.java    |  9 +++++----
 .../java/api/messages/specific/SinglePlcReadRequest.java     |  7 +++++--
 .../java/api/messages/specific/SinglePlcReadResponse.java    |  4 ++--
 .../java/api/messages/specific/SinglePlcWriteRequest.java    | 12 +++++-------
 .../java/api/messages/specific/SinglePlcWriteResponse.java   |  4 ++--
 .../java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java |  6 +++---
 9 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java b/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
index 7c104df..a689c92 100644
--- a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
+++ b/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
@@ -181,8 +181,8 @@ public class PlcConnectionAdapter implements AutoCloseable {
         throw new IllegalArgumentException("Not a legal plc data type: " + cls.getSimpleName());
     }
 
+    @SuppressWarnings("unchecked")
     static <T> SinglePlcWriteRequest<T> newPlcWriteRequest(Address address, T value) {
-        @SuppressWarnings("unchecked")
         Class<T> cls = (Class<T>) value.getClass();
         return new SinglePlcWriteRequest<>(cls, address, value);
     }
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 1868046..c31eb2a 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
@@ -25,7 +25,10 @@ import org.apache.plc4x.java.api.connection.PlcWriter;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.exceptions.PlcIoException;
-import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
+import org.apache.plc4x.java.api.messages.PlcReadResponse;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
+import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 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;
@@ -98,10 +101,10 @@ public class MockConnection extends AbstractPlcConnection implements PlcReader,
             responseItems.add(responseItem);
         }
         PlcReadResponse response;
-        if (readRequest instanceof BulkPlcReadRequest) {
-            response = new BulkPlcReadResponse((BulkPlcReadRequest) readRequest, responseItems);
-        } else if (readRequest instanceof SinglePlcReadRequest) {
+        if (readRequest instanceof SinglePlcReadRequest) {
             response = new SinglePlcReadResponse((SinglePlcReadRequest) readRequest, responseItems.isEmpty() ? null : responseItems.get(0));
+        } else if (readRequest instanceof BulkPlcReadRequest) {
+            response = new BulkPlcReadResponse((BulkPlcReadRequest) readRequest, responseItems);
         } else {
             response = null;
         }
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 42fe6eb..9fd1d90 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
@@ -60,11 +60,8 @@ public class CheckedBulkPlcReadRequest<T> extends BulkPlcReadRequest {
         readRequestItems.add((ReadRequestItem<T>) readRequestItem);
     }
 
-    public List<? extends ReadRequestItem<?>> getReadRequestItems() {
+    public List<? extends ReadRequestItem<T>> getReadRequestItems() {
         return readRequestItems;
     }
 
-    public int getNumberOfItems() {
-        return readRequestItems.size();
-    }
 }
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 ff94d8b..32009de 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
@@ -28,7 +28,7 @@ public class CheckedBulkPlcWriteRequest<T> extends BulkPlcWriteRequest {
 
     private final List<WriteRequestItem<T>> requestItems;
 
-    private Class<T> datatype;
+    private final Class<T> datatype;
 
     public CheckedBulkPlcWriteRequest(Class<T> type) {
         this.datatype = type;
@@ -40,8 +40,9 @@ public class CheckedBulkPlcWriteRequest<T> extends BulkPlcWriteRequest {
         addItem(new WriteRequestItem<>(dataType, address, values));
     }
 
-    public CheckedBulkPlcWriteRequest(List<WriteRequestItem<T>> requestItems) {
-        this.requestItems = requestItems;
+    public CheckedBulkPlcWriteRequest(Class<T> dataType, List<WriteRequestItem<T>> requestItems) {
+        this(dataType);
+        this.requestItems.addAll(requestItems);
     }
 
     @SuppressWarnings("unchecked")
@@ -52,7 +53,7 @@ public class CheckedBulkPlcWriteRequest<T> extends BulkPlcWriteRequest {
         if (writeRequestItem.getDatatype() != datatype) {
             throw new IllegalArgumentException("Incompatible datatype " + writeRequestItem.getDatatype());
         }
-        requestItems.add((WriteRequestItem<T>)writeRequestItem);
+        requestItems.add((WriteRequestItem<T>) writeRequestItem);
     }
 
     public List<? extends WriteRequestItem<?>> getRequestItems() {
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 ac5d05f..8c03128 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
@@ -18,7 +18,6 @@ under the License.
 */
 package org.apache.plc4x.java.api.messages.specific;
 
-import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.items.ReadRequestItem;
 import org.apache.plc4x.java.api.model.Address;
 
@@ -26,22 +25,26 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
-public class SinglePlcReadRequest<T> implements PlcReadRequest {
+public class SinglePlcReadRequest<T> extends CheckedBulkPlcReadRequest<T> {
 
     private ReadRequestItem<T> requestItem;
 
     public SinglePlcReadRequest() {
+        super(null);
     }
 
     public SinglePlcReadRequest(ReadRequestItem<T> requestItem) {
+        super(null);
         this.requestItem = requestItem;
     }
 
     public SinglePlcReadRequest(Class<T> dataType, Address address) {
+        super(null);
         requestItem = new ReadRequestItem<>(dataType, address);
     }
 
     public SinglePlcReadRequest(Class<T> dataType, Address address, int size) {
+        super(null);
         requestItem = new ReadRequestItem<>(dataType, address, size);
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadResponse.java
index 1161e47..24acb1c 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadResponse.java
@@ -18,19 +18,19 @@ under the License.
 */
 package org.apache.plc4x.java.api.messages.specific;
 
-import org.apache.plc4x.java.api.messages.PlcReadResponse;
 import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
-public class SinglePlcReadResponse<T> implements PlcReadResponse {
+public class SinglePlcReadResponse<T> extends CheckedBulkPlcReadResponse<T> {
 
     private final SinglePlcReadRequest<T> request;
     private final ReadResponseItem<T> responseItem;
 
     public SinglePlcReadResponse(SinglePlcReadRequest<T> request, ReadResponseItem<T> responseItem) {
+        super(request, Collections.singletonList(responseItem));
         this.request = request;
         this.responseItem = responseItem;
     }
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 3beca8b..4da59b7 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
@@ -18,7 +18,6 @@ under the License.
 */
 package org.apache.plc4x.java.api.messages.specific;
 
-import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
 import org.apache.plc4x.java.api.model.Address;
 
@@ -26,22 +25,21 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
-public class SinglePlcWriteRequest<T> implements PlcWriteRequest {
+public class SinglePlcWriteRequest<T> extends CheckedBulkPlcWriteRequest<T> {
 
     private WriteRequestItem<T> requestItem;
 
     public SinglePlcWriteRequest() {
+        super(null);
     }
 
     public SinglePlcWriteRequest(WriteRequestItem<T> requestItem) {
+        super(null);
         this.requestItem = requestItem;
     }
 
-    public SinglePlcWriteRequest(Class<T> dataType, Address address, T value) {
-        addItem(new WriteRequestItem<>(dataType, address, value));
-    }
-
-    public SinglePlcWriteRequest(Class<T> dataType, Address address, T[] values) {
+    public SinglePlcWriteRequest(Class<T> dataType, Address address, T... values) {
+        super(null);
         addItem(new WriteRequestItem<>(dataType, address, values));
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteResponse.java
index 6c2c498..7b7abe1 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteResponse.java
@@ -18,19 +18,19 @@ under the License.
 */
 package org.apache.plc4x.java.api.messages.specific;
 
-import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 import org.apache.plc4x.java.api.messages.items.WriteResponseItem;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
-public class SinglePlcWriteResponse<T> implements PlcWriteResponse {
+public class SinglePlcWriteResponse<T> extends CheckedBulkPlcWriteResponse<T> {
 
     private final SinglePlcWriteRequest<T> request;
     private final WriteResponseItem<T> responseItem;
 
     public SinglePlcWriteResponse(SinglePlcWriteRequest<T> request, WriteResponseItem<T> responseItem) {
+        super(request, Collections.singletonList(responseItem));
         this.request = request;
         this.responseItem = responseItem;
     }
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 6233801..f8ccf3d 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
@@ -177,10 +177,10 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
                         }
                         responseItems.add(responseItem);
                     }
-                    if (plcReadRequest instanceof BulkPlcReadRequest) {
-                        response = new BulkPlcReadResponse((BulkPlcReadRequest) plcReadRequest, responseItems);
-                    } else if (plcReadRequest instanceof SinglePlcReadRequest) {
+                    if (plcReadRequest instanceof SinglePlcReadRequest) {
                         response = new SinglePlcReadResponse((SinglePlcReadRequest) plcReadRequest, responseItems.isEmpty() ? null : responseItems.get(0));
+                    } else if (plcReadRequest instanceof BulkPlcReadRequest) {
+                        response = new BulkPlcReadResponse((BulkPlcReadRequest) plcReadRequest, responseItems);
                     } else {
                         response = null;
                     }

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