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:18 UTC
[incubator-plc4x] 06/12: Deprecated SinglePlc*
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 c28c5ee0b5db5d31a2c896d1e2408a8bfa401c14
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 13:23:36 2018 +0100
Deprecated SinglePlc*
---
.../apache/plc4x/edgent/mock/MockConnection.java | 2 +-
.../plc4x/java/api/messages/PlcReadRequest.java | 74 ++++++++++------------
.../plc4x/java/api/messages/PlcReadResponse.java | 6 ++
.../plc4x/java/api/messages/PlcWriteRequest.java | 47 ++++++--------
.../plc4x/java/api/messages/PlcWriteResponse.java | 6 ++
.../messages/specific/SinglePlcReadRequest.java | 56 +++-------------
.../messages/specific/SinglePlcReadResponse.java | 29 ++-------
.../messages/specific/SinglePlcWriteRequest.java | 50 ++++-----------
.../messages/specific/SinglePlcWriteResponse.java | 28 ++------
.../messages/specific/TypeSafePlcReadRequest.java | 26 ++++----
.../messages/specific/TypeSafePlcReadResponse.java | 27 +++++---
.../messages/specific/TypeSafePlcWriteRequest.java | 22 +++----
.../specific/TypeSafePlcWriteResponse.java | 25 +++++---
.../plc4x/java/api/messages/APIMessageTests.java | 19 +++---
.../plc4x/java/s7/netty/Plc4XS7Protocol.java | 6 +-
15 files changed, 167 insertions(+), 256 deletions(-)
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 29faf15..798c481 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
@@ -98,7 +98,7 @@ public class MockConnection extends AbstractPlcConnection implements PlcReader,
return cf;
}
List<ReadResponseItem<?>> responseItems = new LinkedList<>();
- for (ReadRequestItem requestItem : readRequest.getReadRequestItems()) {
+ for (ReadRequestItem requestItem : readRequest.getRequestItems()) {
ReadResponseItem responseItem = new ReadResponseItem(requestItem, ResponseCode.OK,
Collections.singletonList(getDataValue(requestItem.getAddress())));
responseItems.add(responseItem);
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 4714d6d..6821efa 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
@@ -20,7 +20,6 @@ package org.apache.plc4x.java.api.messages;
import org.apache.plc4x.java.api.messages.items.ReadRequestItem;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
import org.apache.plc4x.java.api.model.Address;
import java.util.LinkedList;
@@ -29,10 +28,15 @@ import java.util.Optional;
public class PlcReadRequest implements PlcRequest {
- private final List<ReadRequestItem<?>> readRequestItems;
+ private final List<ReadRequestItem<?>> requestItems;
public PlcReadRequest() {
- this.readRequestItems = new LinkedList<>();
+ this.requestItems = new LinkedList<>();
+ }
+
+ public PlcReadRequest(ReadRequestItem<?> requestItem) {
+ this();
+ requestItems.add(requestItem);
}
public PlcReadRequest(Class<?> dataType, Address address) {
@@ -45,30 +49,45 @@ public class PlcReadRequest implements PlcRequest {
addItem(new ReadRequestItem<>(dataType, address, size));
}
- public PlcReadRequest(List<ReadRequestItem<?>> readRequestItems) {
- this.readRequestItems = readRequestItems;
+ public PlcReadRequest(List<ReadRequestItem<?>> requestItems) {
+ this.requestItems = requestItems;
}
public void addItem(ReadRequestItem<?> readRequestItem) {
- getReadRequestItems().add(readRequestItem);
+ getRequestItems().add(readRequestItem);
}
- public List<ReadRequestItem<?>> getReadRequestItems() {
- return readRequestItems;
+ public List<ReadRequestItem<?>> getRequestItems() {
+ return requestItems;
}
public Optional<? extends ReadRequestItem<?>> getRequestItem() {
- if (getNumberOfItems() > 1) {
+ if (isMultiValue()) {
throw new IllegalStateException("too many items " + getNumberOfItems());
}
- if (getNumberOfItems() < 1) {
+ if (isEmpty()) {
return Optional.empty();
}
- return Optional.<ReadRequestItem<?>>of(getReadRequestItems().get(0));
+ return Optional.<ReadRequestItem<?>>of(getRequestItems().get(0));
+ }
+
+ public void setRequestItem(ReadRequestItem<?> requestItem) {
+ if (isMultiValue()) {
+ throw new IllegalStateException("too many items " + getNumberOfItems());
+ }
+ addItem(requestItem);
}
public int getNumberOfItems() {
- return getReadRequestItems().size();
+ return getRequestItems().size();
+ }
+
+ public boolean isMultiValue() {
+ return getNumberOfItems() > 1;
+ }
+
+ public boolean isEmpty() {
+ return getNumberOfItems() < 1;
}
public static Builder builder() {
@@ -83,13 +102,13 @@ public class PlcReadRequest implements PlcRequest {
private List<ReadRequestItem> requests = new LinkedList<>();
- public <T> Builder addItem(Class<T> dataType, Address address) {
+ public Builder addItem(Class<?> dataType, Address address) {
checkType(dataType);
requests.add(new ReadRequestItem<>(dataType, address));
return this;
}
- public <T> Builder addItem(Class<T> dataType, Address address, int size) {
+ public Builder addItem(Class<?> dataType, Address address, int size) {
checkType(dataType);
requests.add(new ReadRequestItem<>(dataType, address, size));
return this;
@@ -109,9 +128,6 @@ public class PlcReadRequest implements PlcRequest {
if (requests.size() < 1) {
throw new IllegalStateException("No requests added");
}
- if (requests.size() < 2) {
- return new SinglePlcReadRequest<>(requests.get(0));
- }
PlcReadRequest plcReadRequest;
if (mixed) {
plcReadRequest = new PlcReadRequest();
@@ -125,29 +141,7 @@ public class PlcReadRequest implements PlcRequest {
}
@SuppressWarnings("unchecked")
- public PlcReadRequest buildBulk() {
- if (requests.size() < 2) {
- throw new IllegalStateException("Bulk request needs more than one request");
- }
- return build();
- }
-
- @SuppressWarnings("unchecked")
- public <T> SinglePlcReadRequest<T> build(Class<T> type) {
- if (requests.size() != 1) {
- throw new IllegalStateException("Checked request needs exactly one request");
- }
- if (firstType != type) {
- throw new ClassCastException("Incompatible type " + type + ". Required " + firstType);
- }
- return (SinglePlcReadRequest<T>) build();
- }
-
- @SuppressWarnings("unchecked")
- public <T> TypeSafePlcReadRequest<T> buildBulk(Class<T> type) {
- if (requests.size() < 2) {
- throw new IllegalStateException("Checked bulk request needs more than one request");
- }
+ public <T> TypeSafePlcReadRequest<T> build(Class<T> type) {
if (firstType != type) {
throw new ClassCastException("Incompatible type " + type + ". Required " + firstType);
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java
index 7224365..2bfd942 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.api.messages;
import org.apache.plc4x.java.api.messages.items.ReadRequestItem;
import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -29,6 +30,11 @@ public class PlcReadResponse implements PlcResponse {
private final PlcReadRequest request;
private final List<ReadResponseItem<?>> responseItems;
+ public PlcReadResponse(PlcReadRequest request, ReadResponseItem<?> responseItems) {
+ this.request = request;
+ this.responseItems = Collections.singletonList(responseItems);
+ }
+
public PlcReadResponse(PlcReadRequest request, List<ReadResponseItem<?>> responseItems) {
this.request = request;
this.responseItems = responseItems;
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java
index 71251b2..1755018 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java
@@ -20,7 +20,6 @@ package org.apache.plc4x.java.api.messages;
import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
import org.apache.plc4x.java.api.model.Address;
import java.util.LinkedList;
@@ -53,19 +52,34 @@ public class PlcWriteRequest implements PlcRequest {
}
public Optional<? extends WriteRequestItem<?>> getRequestItem() {
- if (getNumberOfItems() > 1) {
+ if (isMultiValue()) {
throw new IllegalStateException("too many items " + getNumberOfItems());
}
- if (getNumberOfItems() < 1) {
+ if (isEmpty()) {
return Optional.empty();
}
return Optional.<WriteRequestItem<?>>of(getRequestItems().get(0));
}
+ public void setRequestItem(WriteRequestItem<?> requestItem) {
+ if (isMultiValue()) {
+ throw new IllegalStateException("too many items " + getNumberOfItems());
+ }
+ addItem(requestItem);
+ }
+
public int getNumberOfItems() {
return getRequestItems().size();
}
+ public boolean isMultiValue() {
+ return getNumberOfItems() > 1;
+ }
+
+ public boolean isEmpty() {
+ return getNumberOfItems() < 1;
+ }
+
public static PlcWriteRequest.Builder builder() {
return new Builder();
}
@@ -98,9 +112,6 @@ public class PlcWriteRequest implements PlcRequest {
if (requests.size() < 1) {
throw new IllegalStateException("No requests added");
}
- if (requests.size() < 2) {
- return new SinglePlcWriteRequest<>(requests.get(0));
- }
PlcWriteRequest plcWriteRequest;
if (mixed) {
plcWriteRequest = new PlcWriteRequest();
@@ -114,29 +125,7 @@ public class PlcWriteRequest implements PlcRequest {
}
@SuppressWarnings("unchecked")
- public PlcWriteRequest buildBulk() {
- if (requests.size() < 2) {
- throw new IllegalStateException("Bulk request needs more than one request");
- }
- return build();
- }
-
- @SuppressWarnings("unchecked")
- public <T> SinglePlcWriteRequest<T> build(Class<T> type) {
- if (requests.size() != 1) {
- throw new IllegalStateException("Checked request needs exactly one request");
- }
- if (firstType != type) {
- throw new ClassCastException("Incompatible type " + type + ". Required " + firstType);
- }
- return (SinglePlcWriteRequest<T>) build();
- }
-
- @SuppressWarnings("unchecked")
- public <T> TypeSafePlcWriteRequest<T> buildBulk(Class<T> type) {
- if (requests.size() < 2) {
- throw new IllegalStateException("Checked bulk request needs more than one request");
- }
+ public <T> TypeSafePlcWriteRequest<T> build(Class<T> type) {
if (firstType != type) {
throw new ClassCastException("Incompatible type " + type + ". Required " + firstType);
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteResponse.java
index ef50a86..1bc7b83 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteResponse.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.api.messages;
import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
import org.apache.plc4x.java.api.messages.items.WriteResponseItem;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -30,6 +31,11 @@ public class PlcWriteResponse implements PlcResponse {
private final List<WriteResponseItem<?>> responseItems;
+ public PlcWriteResponse(PlcWriteRequest request, WriteResponseItem<?> responseItem) {
+ this.request = request;
+ this.responseItems = Collections.singletonList(responseItem);
+ }
+
public PlcWriteResponse(PlcWriteRequest request, List<WriteResponseItem<?>> responseItems) {
this.request = request;
this.responseItems = responseItems;
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 a8226c2..604f9ae 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
@@ -21,61 +21,25 @@ package org.apache.plc4x.java.api.messages.specific;
import org.apache.plc4x.java.api.messages.items.ReadRequestItem;
import org.apache.plc4x.java.api.model.Address;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
+/**
+ * @deprecated methods integrated into super type
+ */
+@Deprecated
public class SinglePlcReadRequest<T> extends TypeSafePlcReadRequest<T> {
- private ReadRequestItem<T> requestItem;
-
- public SinglePlcReadRequest() {
- super(null);
+ public SinglePlcReadRequest(Class<T> dataType) {
+ super(dataType);
}
- public SinglePlcReadRequest(ReadRequestItem<T> requestItem) {
- super(null);
- this.requestItem = requestItem;
+ public SinglePlcReadRequest(Class<T> dataType, ReadRequestItem<T> readRequestItem) {
+ super(dataType, readRequestItem);
}
public SinglePlcReadRequest(Class<T> dataType, Address address) {
- super(null);
- requestItem = new ReadRequestItem<>(dataType, address);
+ super(dataType, address);
}
public SinglePlcReadRequest(Class<T> dataType, Address address, int size) {
- super(null);
- requestItem = new ReadRequestItem<>(dataType, address, size);
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public void addItem(ReadRequestItem<?> readRequestItem) {
- if (this.requestItem != null && readRequestItem != null) {
- throw new IllegalStateException(SinglePlcReadRequest.class.getName() + " can only contain on requestItem");
- }
- this.requestItem = (ReadRequestItem<T>) readRequestItem;
- }
-
- @Override
- public List<ReadRequestItem<T>> getCheckedReadRequestItems() {
- return requestItem != null ? Collections.singletonList(requestItem) : Collections.emptyList();
- }
-
- @Override
- public List<ReadRequestItem<?>> getReadRequestItems() {
- return (List) getCheckedReadRequestItems();
- }
-
- public Optional<ReadRequestItem<T>> getRequestItem() {
- return Optional.of(requestItem);
- }
-
- public void setRequestItem(ReadRequestItem<T> requestItem) {
- this.requestItem = requestItem;
- }
-
- public int getNumberOfItems() {
- return requestItem != null ? 1 : 0;
+ super(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 c835998..401d830 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
@@ -21,31 +21,14 @@ package org.apache.plc4x.java.api.messages.specific;
import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
+/**
+ * @deprecated methods integrated into super type
+ */
+@Deprecated
public class SinglePlcReadResponse<T> extends TypeSafePlcReadResponse<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;
- }
-
- @Override
- public SinglePlcReadRequest<T> getRequest() {
- return request;
- }
-
- @Override
- public List<ReadResponseItem<T>> getResponseItems() {
- return responseItem != null ? Collections.singletonList(responseItem) : Collections.emptyList();
- }
-
- public Optional<ReadResponseItem<T>> getResponseItem() {
- return Optional.ofNullable(responseItem);
+ public SinglePlcReadResponse(TypeSafePlcReadRequest<T> request, ReadResponseItem<T> readResponseItem) {
+ super(request, Collections.singletonList(readResponseItem));
}
}
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 35ac219..9db1587 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
@@ -21,55 +21,27 @@ package org.apache.plc4x.java.api.messages.specific;
import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
import org.apache.plc4x.java.api.model.Address;
-import java.util.Collections;
import java.util.List;
-import java.util.Optional;
+/**
+ * @deprecated methods integrated into super type
+ */
+@Deprecated
public class SinglePlcWriteRequest<T> extends TypeSafePlcWriteRequest<T> {
- private WriteRequestItem<T> requestItem;
-
- public SinglePlcWriteRequest() {
- super(null);
- }
-
- public SinglePlcWriteRequest(WriteRequestItem<T> requestItem) {
- super(null);
- this.requestItem = requestItem;
+ public SinglePlcWriteRequest(Class<T> type) {
+ super(type);
}
public SinglePlcWriteRequest(Class<T> dataType, Address address, T... values) {
- super(null);
- addItem(new WriteRequestItem<>(dataType, address, values));
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public void addItem(WriteRequestItem<?> requestItem) {
- if (this.requestItem != null && requestItem != null) {
- throw new IllegalStateException(SinglePlcReadRequest.class.getName() + " can only contain on readRequestItem");
- }
- this.requestItem = (WriteRequestItem<T>) requestItem;
- }
-
- public List<WriteRequestItem<T>> getCheckedRequestItems() {
- return (requestItem != null) ? Collections.singletonList(requestItem) : Collections.emptyList();
- }
-
- @Override
- public List<WriteRequestItem<?>> getRequestItems() {
- return (List) getCheckedRequestItems();
- }
-
- public Optional<WriteRequestItem<T>> getRequestItem() {
- return Optional.ofNullable(requestItem);
+ super(dataType, address, values);
}
- public void setRequestItem(WriteRequestItem<T> requestItem) {
- this.requestItem = requestItem;
+ public SinglePlcWriteRequest(Class<T> dataType, WriteRequestItem<T> requestItem) {
+ super(dataType, requestItem);
}
- public int getNumberOfItems() {
- return requestItem != null ? 1 : 0;
+ public SinglePlcWriteRequest(Class<T> dataType, List<WriteRequestItem<T>> writeRequestItems) {
+ super(dataType, writeRequestItems);
}
}
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 eb9b52a..4340965 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
@@ -24,29 +24,13 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
+/**
+ * @deprecated methods integrated into super type
+ */
+@Deprecated
public class SinglePlcWriteResponse<T> extends TypeSafePlcWriteResponse<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;
- }
-
- @Override
- public SinglePlcWriteRequest<T> getRequest() {
- return request;
- }
-
- @Override
- public List<WriteResponseItem<T>> getResponseItems() {
- return responseItem != null ? Collections.singletonList(responseItem) : Collections.emptyList();
- }
-
- public Optional<WriteResponseItem<T>> getResponseItem() {
- return Optional.ofNullable(responseItem);
+ public SinglePlcWriteResponse(TypeSafePlcWriteRequest<T> request, WriteResponseItem<T> writeResponseItem) {
+ super(request, Collections.singletonList(writeResponseItem));
}
-
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequest.java
index 58ff74e..9739022 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequest.java
@@ -22,18 +22,19 @@ 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;
-import java.util.LinkedList;
import java.util.List;
+import java.util.Optional;
public class TypeSafePlcReadRequest<T> extends PlcReadRequest {
- private final List<ReadRequestItem<T>> readRequestItems;
-
private Class<T> datatype;
- public TypeSafePlcReadRequest(Class<T> type) {
- this.datatype = type;
- this.readRequestItems = new LinkedList<>();
+ public TypeSafePlcReadRequest(Class<T> dataType) {
+ this.datatype = dataType;
+ }
+
+ public TypeSafePlcReadRequest(Class<T> dataType, ReadRequestItem<T> readRequestItem) {
+ this(dataType);
}
public TypeSafePlcReadRequest(Class<T> dataType, Address address) {
@@ -46,10 +47,6 @@ public class TypeSafePlcReadRequest<T> extends PlcReadRequest {
addItem(new ReadRequestItem<>(dataType, address, size));
}
- public void addCheckedItem(ReadRequestItem<T> readRequestItem) {
- addItem(readRequestItem);
- }
-
@SuppressWarnings("unchecked")
public void addItem(ReadRequestItem<?> readRequestItem) {
if (readRequestItem == null) {
@@ -61,13 +58,14 @@ public class TypeSafePlcReadRequest<T> extends PlcReadRequest {
super.addItem(readRequestItem);
}
+ @SuppressWarnings("unchecked")
public List<ReadRequestItem<T>> getCheckedReadRequestItems() {
- return readRequestItems;
+ return (List) getRequestItems();
}
@SuppressWarnings("unchecked")
- public List<ReadRequestItem<?>> getReadRequestItems() {
- return (List) getCheckedReadRequestItems();
+ @Override
+ public Optional<ReadRequestItem<T>> getRequestItem() {
+ return (Optional<ReadRequestItem<T>>) super.getRequestItem();
}
-
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadResponse.java
index c6b0d33..f76271a 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadResponse.java
@@ -18,29 +18,38 @@ 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.PlcReadResponse;
import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
import java.util.List;
+import java.util.Optional;
public class TypeSafePlcReadResponse<T> extends PlcReadResponse {
- private final TypeSafePlcReadRequest<T> request;
- private final List<ReadResponseItem<T>> responseItems;
+ public TypeSafePlcReadResponse(TypeSafePlcReadRequest<T> request, ReadResponseItem<T> responseItem) {
+ // TODO: use checked list.
+ super(request, responseItem);
+ }
+ @SuppressWarnings("unchecked")
public TypeSafePlcReadResponse(TypeSafePlcReadRequest<T> request, List<ReadResponseItem<T>> responseItems) {
- super(null, null);
- this.request = request;
- this.responseItems = responseItems;
+ // TODO: use checked list.
+ super(request, (List) responseItems);
}
- public PlcReadRequest getRequest() {
- return request;
+ @SuppressWarnings("unchecked")
+ public TypeSafePlcReadRequest<T> getRequest() {
+ return (TypeSafePlcReadRequest<T>) super.getRequest();
}
+ @SuppressWarnings("unchecked")
public List<ReadResponseItem<T>> getResponseItems() {
- return responseItems;
+ return (List<ReadResponseItem<T>>) super.getResponseItems();
}
+ @SuppressWarnings("unchecked")
+ @Override
+ public Optional<ReadResponseItem<T>> getResponseItem() {
+ return (Optional<ReadResponseItem<T>>) super.getResponseItem();
+ }
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequest.java
index 8979cf5..2ebf88f 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequest.java
@@ -22,18 +22,15 @@ 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;
-import java.util.LinkedList;
import java.util.List;
+import java.util.Optional;
public class TypeSafePlcWriteRequest<T> extends PlcWriteRequest {
- private final List<WriteRequestItem<T>> requestItems;
-
private final Class<T> datatype;
public TypeSafePlcWriteRequest(Class<T> type) {
this.datatype = type;
- this.requestItems = new LinkedList<>();
}
public TypeSafePlcWriteRequest(Class<T> dataType, Address address, T... values) {
@@ -41,13 +38,14 @@ public class TypeSafePlcWriteRequest<T> extends PlcWriteRequest {
addItem(new WriteRequestItem<>(dataType, address, values));
}
- public TypeSafePlcWriteRequest(Class<T> dataType, List<WriteRequestItem<T>> requestItems) {
+ public TypeSafePlcWriteRequest(Class<T> dataType, WriteRequestItem<T> requestItem) {
this(dataType);
- this.requestItems.addAll(requestItems);
+ this.getRequestItems().add(requestItem);
}
- public void addCheckedItem(WriteRequestItem<T> writeRequestItem) {
- addItem(writeRequestItem);
+ public TypeSafePlcWriteRequest(Class<T> dataType, List<WriteRequestItem<T>> requestItems) {
+ this(dataType);
+ this.getRequestItems().addAll(requestItems);
}
@SuppressWarnings("unchecked")
@@ -61,14 +59,14 @@ public class TypeSafePlcWriteRequest<T> extends PlcWriteRequest {
super.addItem(writeRequestItem);
}
+ @SuppressWarnings("unchecked")
public List<WriteRequestItem<T>> getCheckedRequestItems() {
- return requestItems;
+ return (List) getRequestItems();
}
@SuppressWarnings("unchecked")
@Override
- public List<WriteRequestItem<?>> getRequestItems() {
- return (List) getCheckedRequestItems();
+ public Optional<WriteRequestItem<T>> getRequestItem() {
+ return (Optional<WriteRequestItem<T>>) super.getRequestItem();
}
-
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteResponse.java
index 2b9e164..fa485cf 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteResponse.java
@@ -18,29 +18,36 @@ 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.PlcWriteResponse;
import org.apache.plc4x.java.api.messages.items.WriteResponseItem;
import java.util.List;
+import java.util.Optional;
public class TypeSafePlcWriteResponse<T> extends PlcWriteResponse {
- private final TypeSafePlcWriteRequest<T> request;
- private final List<WriteResponseItem<T>> responseItems;
+ public TypeSafePlcWriteResponse(TypeSafePlcWriteRequest<T> request, WriteResponseItem<T> responseItem) {
+ // TODO: use checked type.
+ super(request, responseItem);
+ }
+ @SuppressWarnings("unchecked")
public TypeSafePlcWriteResponse(TypeSafePlcWriteRequest<T> request, List<WriteResponseItem<T>> responseItems) {
- super(null, null);
- this.request = request;
- this.responseItems = responseItems;
+ // TODO: use checked list.
+ super(request, (List) responseItems);
}
- public PlcWriteRequest getRequest() {
- return request;
+ public TypeSafePlcWriteRequest<T> getRequest() {
+ return (TypeSafePlcWriteRequest<T>) super.getRequest();
}
public List<WriteResponseItem<T>> getResponseItems() {
- return responseItems;
+ return (List<WriteResponseItem<T>>) super.getResponseItems();
}
+ @SuppressWarnings("unchecked")
+ @Override
+ public Optional<WriteResponseItem<T>> getResponseItem() {
+ return (Optional<WriteResponseItem<T>>) super.getResponseItem();
+ }
}
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 a623c81..b8b9d34 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
@@ -24,7 +24,8 @@ 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 org.apache.plc4x.java.api.messages.mock.MockAddress;
-import org.apache.plc4x.java.api.messages.specific.*;
+import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
import org.apache.plc4x.java.api.types.ResponseCode;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@@ -106,8 +107,8 @@ class APIMessageTests {
@Test
@Tag("fast")
void plcReadRequestEmpty() {
- PlcReadRequest plcReadRequest = new SinglePlcReadRequest();
- assertTrue(plcReadRequest.getReadRequestItems().isEmpty(), "Request items not empty");
+ PlcReadRequest plcReadRequest = new PlcReadRequest();
+ assertTrue(plcReadRequest.getRequestItems().isEmpty(), "Request items not empty");
assertTrue(plcReadRequest.getNumberOfItems() == 0, "Expected request items to be zero");
}
@@ -116,7 +117,7 @@ class APIMessageTests {
void plcReadRequestAddress() {
MockAddress address = new MockAddress("mock:/DATA");
PlcReadRequest plcReadRequest = new SinglePlcReadRequest<>(Byte.class, address);
- assertTrue(plcReadRequest.getReadRequestItems().size() == 1, "Expected one request item");
+ assertTrue(plcReadRequest.getRequestItems().size() == 1, "Expected one request item");
assertTrue(plcReadRequest.getNumberOfItems() == 1, "Expected one request item");
}
@@ -125,20 +126,20 @@ class APIMessageTests {
void plcReadRequestSize() {
MockAddress address = new MockAddress("mock:/DATA");
PlcReadRequest plcReadRequest = PlcReadRequest.builder().addItem(Byte.class, address, (byte) 1).build(Byte.class);
- assertTrue(plcReadRequest.getReadRequestItems().size() == 1, "Expected one request item");
+ assertTrue(plcReadRequest.getRequestItems().size() == 1, "Expected one request item");
assertTrue(plcReadRequest.getNumberOfItems() == 1, "Expected one request item");
}
@Test
@Tag("fast")
void plcReadRequestAddItem() {
- PlcReadRequest plcReadRequest = new SinglePlcReadRequest();
- assertTrue(plcReadRequest.getReadRequestItems().isEmpty(), "Request items not empty");
+ PlcReadRequest plcReadRequest = new PlcReadRequest();
+ assertTrue(plcReadRequest.getRequestItems().isEmpty(), "Request items not empty");
assertTrue(plcReadRequest.getNumberOfItems() == 0, "Expected request items to be zero");
MockAddress address = new MockAddress("mock:/DATA");
ReadRequestItem<Byte> readRequestItem = new ReadRequestItem<>(Byte.class, address, (byte) 1);
plcReadRequest.addItem(readRequestItem);
- assertTrue(plcReadRequest.getReadRequestItems().size() == 1, "Expected one request item");
+ assertTrue(plcReadRequest.getRequestItems().size() == 1, "Expected one request item");
assertTrue(plcReadRequest.getNumberOfItems() == 1, "Expected one request item");
}
@@ -161,7 +162,7 @@ class APIMessageTests {
@Test
@Tag("fast")
void plcWriteRequestEmpty() {
- PlcWriteRequest plcWriteRequest = new SinglePlcWriteRequest();
+ PlcWriteRequest plcWriteRequest = new PlcWriteRequest();
assertTrue(plcWriteRequest.getRequestItems().isEmpty(), "Request items not empty");
assertTrue(plcWriteRequest.getNumberOfItems() == 0, "Expected request items to be zero");
}
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 0abdb47..dcd9195 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
@@ -62,7 +62,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
List<VarParameterItem> parameterItems = new LinkedList<>();
PlcReadRequest readRequest = (PlcReadRequest) msg.getRequest();
- for (ReadRequestItem requestItem : readRequest.getReadRequestItems()) {
+ for (ReadRequestItem requestItem : readRequest.getRequestItems()) {
// Try to get the correct S7 transport size for the given data type.
// (Map PLC4X data type to S7 data type)
TransportSize transportSize = encodeTransportSize(requestItem.getDatatype());
@@ -146,7 +146,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
// If the numbers of items don't match, we're in big trouble as the only
// way to know how to interpret the responses is by aligning them with the
// items from the request as this information is not returned by the PLC.
- if (plcReadRequest.getReadRequestItems().size() != payload.getPayloadItems().size()) {
+ if (plcReadRequest.getRequestItems().size() != payload.getPayloadItems().size()) {
throw new PlcProtocolException(
"The number of requested items doesn't match the number of returned items");
}
@@ -156,7 +156,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
VarPayloadItem payloadItem = payloadItems.get(i);
// Get the request item for this payload item
- ReadRequestItem requestItem = plcReadRequest.getReadRequestItems().get(i);
+ ReadRequestItem requestItem = plcReadRequest.getRequestItems().get(i);
ResponseCode responseCode = decodeResponseCode(payloadItem.getReturnCode());
--
To stop receiving notification emails like this one, please contact
"commits@plc4x.apache.org" <co...@plc4x.apache.org>.