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 08:27:47 UTC

[incubator-plc4x] 03/03: link response into request to retrieve a typed response.

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 d6497dc7fa7dc0b34bf7169318fe241e4341a084
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 09:27:21 2018 +0100

    link response into request to retrieve a typed response.
---
 .../plc4x/java/api/messages/items/ReadRequestItem.java      | 13 +++++++++++++
 .../plc4x/java/api/messages/items/ReadResponseItem.java     |  3 ++-
 .../plc4x/java/api/messages/items/WriteRequestItem.java     | 12 ++++++++++++
 .../plc4x/java/api/messages/items/WriteResponseItem.java    |  1 +
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java
index 6086959..fe3bc25 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java
@@ -20,6 +20,8 @@ package org.apache.plc4x.java.api.messages.items;
 
 import org.apache.plc4x.java.api.model.Address;
 
+import java.util.Optional;
+
 public class ReadRequestItem<T> {
 
     private final Class<T> datatype;
@@ -28,16 +30,20 @@ public class ReadRequestItem<T> {
 
     private final int size;
 
+    private ReadResponseItem<T> responseItem;
+
     public ReadRequestItem(Class<T> datatype, Address address) {
         this.datatype = datatype;
         this.address = address;
         this.size = 1;
+        this.responseItem = null;
     }
 
     public ReadRequestItem(Class<T> datatype, Address address, int size) {
         this.datatype = datatype;
         this.address = address;
         this.size = size;
+        this.responseItem = null;
     }
 
     public Class<T> getDatatype() {
@@ -52,4 +58,11 @@ public class ReadRequestItem<T> {
         return size;
     }
 
+    public Optional<ReadResponseItem<T>> getResponseItem() {
+        return Optional.ofNullable(responseItem);
+    }
+
+    protected void setResponseItem(ReadResponseItem<T> responseItem) {
+        this.responseItem = responseItem;
+    }
 }
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java
index 286fb64..876d4ec 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java
@@ -34,9 +34,10 @@ public class ReadResponseItem<T> {
         this.requestItem = requestItem;
         this.responseCode = responseCode;
         this.values = values;
+        requestItem.setResponseItem(this);
     }
 
-    public ReadRequestItem getRequestItem() {
+    public ReadRequestItem<T> getRequestItem() {
         return requestItem;
     }
 
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 44111ae..33aa544 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
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.api.messages.items;
 import org.apache.plc4x.java.api.model.Address;
 
 import java.lang.reflect.Array;
+import java.util.Optional;
 
 public class WriteRequestItem<T> {
 
@@ -30,18 +31,22 @@ public class WriteRequestItem<T> {
 
     private final T[] values;
 
+    private WriteResponseItem<T> responseItem;
+
     @SuppressWarnings("unchecked")
     public WriteRequestItem(Class<T> datatype, Address address, T value) {
         this.datatype = datatype;
         this.address = address;
         this.values = (T[]) Array.newInstance(datatype, 1);
         this.values[0] = value;
+        responseItem = null;
     }
 
     public WriteRequestItem(Class<T> datatype, Address address, T[] values) {
         this.datatype = datatype;
         this.address = address;
         this.values = values;
+        responseItem = null;
     }
 
     public Class<T> getDatatype() {
@@ -56,4 +61,11 @@ public class WriteRequestItem<T> {
         return values;
     }
 
+    public Optional<WriteResponseItem<T>> getResponseItem() {
+        return Optional.ofNullable(responseItem);
+    }
+
+    protected void setResponseItem(WriteResponseItem<T> responseItem) {
+        this.responseItem = responseItem;
+    }
 }
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java
index 524f68f..1e3995c 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java
@@ -29,6 +29,7 @@ public class WriteResponseItem<T> {
     public WriteResponseItem(WriteRequestItem<T> requestItem, ResponseCode responseCode) {
         this.requestItem = requestItem;
         this.responseCode = responseCode;
+        requestItem.setResponseItem(this);
     }
 
     public WriteRequestItem<T> getRequestItem() {

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