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>.