You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by ke...@apache.org on 2018/01/07 22:38:13 UTC

[incubator-plc4x] 02/03: fixed firstType builder bug; added getValue to bulk; added getValue tests

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

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

commit b3869ebee63feb825bfbee2f6f21a7bace8c53ca
Author: Mark Keinhörster <ma...@codecentric.de>
AuthorDate: Sun Jan 7 23:37:28 2018 +0100

    fixed firstType builder bug; added getValue to bulk; added getValue tests
---
 .../plc4x/java/api/messages/PlcReadRequest.java    |  2 +-
 .../api/messages/specific/BulkPlcReadResponse.java |  8 +++
 .../messages/specific/BulkPlcWriteResponse.java    | 10 ++++
 .../plc4x/java/api/messages/APIMessageTests.java   | 70 +++++++++++++++++++++-
 pom.xml                                            |  4 +-
 5 files changed, 88 insertions(+), 6 deletions(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadRequest.java
index e712c04..07267a3 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadRequest.java
@@ -72,7 +72,7 @@ public interface PlcReadRequest extends PlcRequest {
         }
 
         private void checkType(Class dataType) {
-            if (firstType != null) {
+            if (firstType == null) {
                 firstType = dataType;
             }
             if (firstType != dataType) {
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 44de427..24a8142 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
@@ -20,9 +20,11 @@ package org.apache.plc4x.java.api.messages.specific;
 
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.PlcReadResponse;
+import org.apache.plc4x.java.api.messages.items.ReadRequestItem;
 import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
 
 import java.util.List;
+import java.util.Optional;
 
 public class BulkPlcReadResponse implements PlcReadResponse {
 
@@ -42,4 +44,10 @@ public class BulkPlcReadResponse implements PlcReadResponse {
         return responseItems;
     }
 
+    public <T> Optional<ReadResponseItem<T>> getValue(ReadRequestItem<T> item){
+        return responseItems.stream()
+            .filter(x -> x.getRequestItem().equals(item))
+            .map(e -> (ReadResponseItem<T>) e)
+            .findAny();
+    }
 }
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..c15b648 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
@@ -19,9 +19,13 @@ 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.ReadRequestItem;
+import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
+import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
 import org.apache.plc4x.java.api.messages.items.WriteResponseItem;
 
 import java.util.List;
+import java.util.Optional;
 
 public class BulkPlcWriteResponse implements PlcWriteResponse {
 
@@ -41,4 +45,10 @@ public class BulkPlcWriteResponse implements PlcWriteResponse {
         return responseItems;
     }
 
+    public <T> Optional<WriteResponseItem<T>> getValue(WriteRequestItem<T> item){
+        return responseItems.stream()
+            .filter(x -> x.getRequestItem().equals(item))
+            .map(e -> (WriteResponseItem<T>) e)
+            .findAny();
+    }
 }
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 7c28cd2..5999ac4 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,8 +31,10 @@ import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Optional;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 class APIMessageTests {
 
@@ -120,7 +122,7 @@ class APIMessageTests {
     @Tag("fast")
     void plcReadRequestSize() {
         MockAddress address = new MockAddress("mock:/DATA");
-        PlcReadRequest plcReadRequest = PlcReadRequest.builder().addItem(Byte.class, address, 1).build(Byte.class);
+        PlcReadRequest plcReadRequest = PlcReadRequest.builder().addItem(Byte.class, address, (byte) 1).build(Byte.class);
         assertTrue(plcReadRequest.getReadRequestItems().size() == 1, "Expected one request item");
         assertTrue(plcReadRequest.getNumberOfItems() == 1, "Expected one request item");
     }
@@ -132,7 +134,7 @@ class APIMessageTests {
         assertTrue(plcReadRequest.getReadRequestItems().isEmpty(), "Request items not empty");
         assertTrue(plcReadRequest.getNumberOfItems() == 0, "Expected request items to be zero");
         MockAddress address = new MockAddress("mock:/DATA");
-        ReadRequestItem readRequestItem = new ReadRequestItem(Byte.class, address, 1);
+        ReadRequestItem readRequestItem = new ReadRequestItem(Byte.class, address, (byte) 1);
         plcReadRequest.addItem(readRequestItem);
         assertTrue(plcReadRequest.getReadRequestItems().size() == 1, "Expected one request item");
         assertTrue(plcReadRequest.getNumberOfItems() == 1, "Expected one request item");
@@ -203,7 +205,7 @@ class APIMessageTests {
         BulkPlcWriteRequest plcWriteRequest = new BulkPlcWriteRequest();
         ArrayList<WriteResponseItem> responseItems  = new ArrayList<>();
         MockAddress address = new MockAddress("mock:/DATA");
-        WriteRequestItem writeRequestItem = new WriteRequestItem(Byte.class, address, 1);
+        WriteRequestItem writeRequestItem = new WriteRequestItem(Byte.class, address, (byte) 1);
         WriteResponseItem writeResponseItem = new WriteResponseItem(writeRequestItem, ResponseCode.OK);
         responseItems.add(writeResponseItem);
         PlcWriteResponse plcReadResponse = new BulkPlcWriteResponse(plcWriteRequest, responseItems);
@@ -212,4 +214,66 @@ class APIMessageTests {
         assertTrue(plcReadResponse.getResponseItems().size() == 1, "Unexpected number of response items");
         assertTrue(plcReadResponse.getResponseItems().containsAll(responseItems), "Unexpected items in response items");
     }
+
+    @Test
+    @Tag("fast")
+    void bulkPlcWriteResponseGetValue() {
+        BulkPlcWriteRequest plcWriteRequest = new BulkPlcWriteRequest();
+        ArrayList<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);
+        WriteResponseItem writeResponseItem1 = new WriteResponseItem(writeRequestItem1, ResponseCode.OK);
+        WriteResponseItem writeResponseItem2 = new WriteResponseItem(writeRequestItem2, ResponseCode.OK);
+        responseItems.add(writeResponseItem1);
+        responseItems.add(writeResponseItem2);
+        BulkPlcWriteResponse plcWriteResponse = new BulkPlcWriteResponse(plcWriteRequest, responseItems);
+        Optional<WriteResponseItem<Byte>> responseValue1 = plcWriteResponse.getValue(writeRequestItem1);
+        Optional<WriteResponseItem<Byte>> responseValue2 = plcWriteResponse.getValue(writeRequestItem2);
+        assertEquals(Optional.of(writeResponseItem1), responseValue1, "Unexpected items in response items");
+        assertEquals(Optional.of(writeResponseItem2), responseValue2, "Unexpected items in response items");
+    }
+
+    @Test
+    @Tag("fast")
+    void nonExistingItemBulkPlcWriteResponseGetValue() {
+        BulkPlcWriteRequest plcWriteRequest = new BulkPlcWriteRequest();
+        ArrayList<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);
+        Optional<WriteResponseItem<Byte>> responseValue1 = plcWriteResponse.getValue(nonExistingWriteRequestItem);
+        assertEquals(Optional.empty(), responseValue1, "Unexpected items in response items");
+    }
+
+    @Test
+    @Tag("fast")
+    void bulkPlcReadResponseGetValue() {
+        BulkPlcReadRequest plcReadRequest = new BulkPlcReadRequest();
+        ArrayList<ReadResponseItem> responseItems  = new ArrayList<>();
+        MockAddress address = new MockAddress("mock:/DATA");
+        ReadRequestItem readRequestItem1 = new ReadRequestItem(Byte.class, address, 1);
+        ReadRequestItem readRequestItem2 = new ReadRequestItem(Byte.class, address, 1);
+        ReadResponseItem readResponseItem1 = new  ReadResponseItem(readRequestItem1, ResponseCode.OK, Collections.emptyList());
+        ReadResponseItem readResponseItem2 = new  ReadResponseItem(readRequestItem2, ResponseCode.OK, Collections.emptyList());
+        responseItems.add(readResponseItem1);
+        responseItems.add(readResponseItem2);
+        BulkPlcReadResponse plcReadResponse = new BulkPlcReadResponse(plcReadRequest, responseItems);
+        Optional<WriteResponseItem<Byte>> responseValue1 = plcReadResponse.getValue(readRequestItem1);
+        Optional<WriteResponseItem<Byte>> responseValue2 = plcReadResponse.getValue(readRequestItem2);
+        assertEquals(Optional.of(readResponseItem1), responseValue1, "Unexpected items in response items");
+        assertEquals(Optional.of(readResponseItem2), responseValue2, "Unexpected items in response items");
+    }
+
+    @Test
+    @Tag("fast")
+    void nonExistingItemBulkPlcReadResponseGetValue() {
+        BulkPlcReadRequest plcReadRequest = new BulkPlcReadRequest();
+        ArrayList<ReadResponseItem> responseItems  = new ArrayList<>();
+        MockAddress address = new MockAddress("mock:/DATA");
+        ReadRequestItem nonExistingReadRequestItem = new ReadRequestItem(Byte.class, address, 1);
+        BulkPlcReadResponse plcReadResponse = new BulkPlcReadResponse(plcReadRequest, responseItems);
+        Optional<WriteResponseItem<Byte>> responseValue1 = plcReadResponse.getValue(nonExistingReadRequestItem);
+        assertEquals(Optional.empty(), responseValue1, "Unexpected items in response items");
+    }
 }
diff --git a/pom.xml b/pom.xml
index d04ae35..b9ab596 100644
--- a/pom.xml
+++ b/pom.xml
@@ -427,11 +427,11 @@
           </configuration>
         </plugin>
 
-        <plugin>
+        <!--<plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.20</version>
-        </plugin>
+        </plugin>-->
 
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>

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