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
The following commit(s) were added to refs/heads/refactoring/java_generify by this push: new c28c5ee Deprecated SinglePlc* c28c5ee is described below commit c28c5ee0b5db5d31a2c896d1e2408a8bfa401c14 Author: Sebastian Rühl <sru...@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" <commits@plc4x.apache.org>'].