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 17:04:21 UTC
[incubator-plc4x] branch master updated: refactored much common
code to a abstract class
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
The following commit(s) were added to refs/heads/master by this push:
new 9f6fc95 refactored much common code to a abstract class
9f6fc95 is described below
commit 9f6fc95b43b2ee6e6a5e51ae3e0010ab44c05703
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 18:04:16 2018 +0100
refactored much common code to a abstract class
---
.../plc4x/java/api/messages/PlcReadRequest.java | 66 +-------------------
.../plc4x/java/api/messages/PlcReadResponse.java | 48 ++-------------
.../apache/plc4x/java/api/messages/PlcRequest.java | 70 +++++++++++++++++++++-
.../plc4x/java/api/messages/PlcResponse.java | 54 ++++++++++++++++-
.../plc4x/java/api/messages/PlcWriteRequest.java | 64 +-------------------
.../plc4x/java/api/messages/PlcWriteResponse.java | 47 ++-------------
6 files changed, 137 insertions(+), 212 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 d591201..4c7f2a9 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
@@ -22,85 +22,34 @@ import org.apache.plc4x.java.api.messages.items.ReadRequestItem;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
import org.apache.plc4x.java.api.model.Address;
-import java.util.LinkedList;
import java.util.List;
-import java.util.Optional;
-public class PlcReadRequest implements PlcRequest {
-
- private final List<ReadRequestItem<?>> requestItems;
+public class PlcReadRequest extends PlcRequest<ReadRequestItem<?>> {
public PlcReadRequest() {
- this.requestItems = new LinkedList<>();
}
public PlcReadRequest(ReadRequestItem<?> requestItem) {
- this();
requestItems.add(requestItem);
}
public PlcReadRequest(Class<?> dataType, Address address) {
- this();
addItem(new ReadRequestItem<>(dataType, address));
}
public PlcReadRequest(Class<?> dataType, Address address, int size) {
- this();
addItem(new ReadRequestItem<>(dataType, address, size));
}
public PlcReadRequest(List<ReadRequestItem<?>> requestItems) {
- this.requestItems = requestItems;
- }
-
- public void addItem(ReadRequestItem<?> readRequestItem) {
- getRequestItems().add(readRequestItem);
- }
-
- public List<ReadRequestItem<?>> getRequestItems() {
- return requestItems;
- }
-
- public Optional<? extends ReadRequestItem<?>> getRequestItem() {
- if (isMultiValue()) {
- throw new IllegalStateException("too many items " + getNumberOfItems());
- }
- if (isEmpty()) {
- return Optional.empty();
- }
- 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 getRequestItems().size();
- }
-
- public boolean isMultiValue() {
- return getNumberOfItems() > 1;
- }
-
- public boolean isEmpty() {
- return getNumberOfItems() < 1;
+ super(requestItems);
}
public static Builder builder() {
return new Builder();
}
- public static class Builder {
-
- private Class firstType;
-
- private boolean mixed = false;
-
- private List<ReadRequestItem> requests = new LinkedList<>();
+ public static class Builder extends PlcRequest.Builder<ReadRequestItem<?>> {
public Builder addItem(Class<?> dataType, Address address) {
checkType(dataType);
@@ -120,15 +69,6 @@ public class PlcReadRequest implements PlcRequest {
return this;
}
- private void checkType(Class dataType) {
- if (firstType == null) {
- firstType = dataType;
- }
- if (firstType != dataType) {
- mixed = true;
- }
- }
-
@SuppressWarnings("unchecked")
public PlcReadRequest build() {
if (requests.size() < 1) {
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 c0cd8c4..4edf80a 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
@@ -20,62 +20,24 @@ 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 org.apache.plc4x.java.api.messages.items.WriteResponseItem;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
-public class PlcReadResponse implements PlcResponse {
-
- private final PlcReadRequest request;
-
- private final List<? extends ReadResponseItem<?>> responseItems;
+public class PlcReadResponse extends PlcResponse<PlcReadRequest, ReadResponseItem<?>, ReadRequestItem<?>> {
public PlcReadResponse(PlcReadRequest request, ReadResponseItem<?> responseItems) {
- this.request = request;
- this.responseItems = Collections.singletonList(responseItems);
+ super(request, Collections.singletonList(responseItems));
}
public PlcReadResponse(PlcReadRequest request, List<? extends ReadResponseItem<?>> responseItems) {
- this.request = request;
- this.responseItems = responseItems;
- }
-
- public PlcReadRequest getRequest() {
- return request;
- }
-
- public List<? extends ReadResponseItem<?>> getResponseItems() {
- return responseItems;
- }
-
- public Optional<? extends ReadResponseItem<?>> getResponseItem() {
- if (isMultiValue()) {
- throw new IllegalStateException("too many items " + getNumberOfItems());
- }
- if (isEmpty()) {
- return Optional.empty();
- }
- return Optional.<ReadResponseItem<?>>of(getResponseItems().get(0));
- }
-
- public int getNumberOfItems() {
- return getResponseItems().size();
- }
-
- public boolean isMultiValue() {
- return getNumberOfItems() > 1;
- }
-
- public boolean isEmpty() {
- return getNumberOfItems() < 1;
+ super(request, responseItems);
}
@SuppressWarnings("unchecked")
public <T> Optional<ReadResponseItem<T>> getValue(ReadRequestItem<T> item) {
- return getResponseItems().stream()
- .filter(x -> x.getRequestItem().equals(item))
- .map(e -> (ReadResponseItem<T>) e)
- .findAny();
+ return (Optional) super.getValue(item);
}
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcRequest.java
index f2367f9..04a62ce 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcRequest.java
@@ -18,9 +18,77 @@ under the License.
*/
package org.apache.plc4x.java.api.messages;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Optional;
+
/**
* Base type for all messages sent from the plc4x system to a connected plc.
*/
-public interface PlcRequest extends PlcMessage {
+public abstract class PlcRequest<REQUEST_ITEM> implements PlcMessage {
+
+ protected final List<REQUEST_ITEM> requestItems;
+
+ public PlcRequest() {
+ this.requestItems = new LinkedList<>();
+ }
+
+ public PlcRequest(List<REQUEST_ITEM> requestItems) {
+ this.requestItems = requestItems;
+ }
+
+ public void addItem(REQUEST_ITEM readRequestItem) {
+ getRequestItems().add(readRequestItem);
+ }
+
+ public List<REQUEST_ITEM> getRequestItems() {
+ return requestItems;
+ }
+
+ public Optional<? extends REQUEST_ITEM> getRequestItem() {
+ if (isMultiValue()) {
+ throw new IllegalStateException("too many items " + getNumberOfItems());
+ }
+ if (isEmpty()) {
+ return Optional.empty();
+ }
+ return Optional.of(getRequestItems().get(0));
+ }
+
+ public void setRequestItem(REQUEST_ITEM 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 abstract class Builder<REQUEST_ITEM> {
+
+ Class firstType;
+
+ boolean mixed = false;
+
+ List<REQUEST_ITEM> requests = new LinkedList<>();
+ void checkType(Class dataType) {
+ if (firstType == null) {
+ firstType = dataType;
+ }
+ if (firstType != dataType) {
+ mixed = true;
+ }
+ }
+ }
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcResponse.java
index 6bec32d..5bf0b46 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcResponse.java
@@ -18,10 +18,62 @@ under the License.
*/
package org.apache.plc4x.java.api.messages;
+import org.apache.plc4x.java.api.messages.items.RequestItem;
+import org.apache.plc4x.java.api.messages.items.ResponseItem;
+
+import java.util.List;
+import java.util.Optional;
+
/**
* Base type for all response messages sent as response for a prior request
* from a plc to the plc4x system.
*/
-public interface PlcResponse extends PlcMessage {
+public abstract class PlcResponse<REQUEST, RESPONSE_ITEM extends ResponseItem, REQUEST_ITEM extends RequestItem> implements PlcMessage {
+
+ private final REQUEST request;
+
+ private final List<? extends RESPONSE_ITEM> responseItems;
+
+ public PlcResponse(REQUEST request, List<? extends RESPONSE_ITEM> responseItems) {
+ this.request = request;
+ this.responseItems = responseItems;
+ }
+
+ public REQUEST getRequest() {
+ return request;
+ }
+
+ public List<? extends RESPONSE_ITEM> getResponseItems() {
+ return responseItems;
+ }
+
+ public Optional<? extends RESPONSE_ITEM> getResponseItem() {
+ if (isMultiValue()) {
+ throw new IllegalStateException("too many items " + getNumberOfItems());
+ }
+ if (isEmpty()) {
+ return Optional.empty();
+ }
+ return Optional.of(getResponseItems().get(0));
+ }
+
+ public int getNumberOfItems() {
+ return getResponseItems().size();
+ }
+
+ public boolean isMultiValue() {
+ return getNumberOfItems() > 1;
+ }
+
+ public boolean isEmpty() {
+ return getNumberOfItems() < 1;
+ }
+
+ public Optional<RESPONSE_ITEM> getValue(REQUEST_ITEM item) {
+ return getResponseItems().stream()
+ .filter(x -> x.getRequestItem().equals(item))
+ .map(e -> (RESPONSE_ITEM) e)
+ .findAny();
+ }
}
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 7e52e17..7a6c1a4 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
@@ -22,76 +22,27 @@ import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
import org.apache.plc4x.java.api.model.Address;
-import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
-import java.util.Optional;
-public class PlcWriteRequest implements PlcRequest {
-
- private final List<WriteRequestItem<?>> requestItems;
+public class PlcWriteRequest extends PlcRequest<WriteRequestItem<?>> {
public PlcWriteRequest() {
- this.requestItems = new LinkedList<>();
}
public <T> PlcWriteRequest(Class<T> dataType, Address address, T... values) {
- this();
addItem(new WriteRequestItem<>(dataType, address, values));
}
public PlcWriteRequest(List<WriteRequestItem<?>> requestItems) {
- this.requestItems = requestItems;
- }
-
- public void addItem(WriteRequestItem<?> requestItem) {
- getRequestItems().add(requestItem);
- }
-
- public List<WriteRequestItem<?>> getRequestItems() {
- return requestItems;
- }
-
- public Optional<? extends WriteRequestItem<?>> getRequestItem() {
- if (isMultiValue()) {
- throw new IllegalStateException("too many items " + getNumberOfItems());
- }
- 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;
+ super(requestItems);
}
public static PlcWriteRequest.Builder builder() {
return new Builder();
}
- public static class Builder {
-
- private Class firstType;
-
- private boolean mixed = false;
-
- private List<WriteRequestItem> requests = new LinkedList<>();
+ public static class Builder extends PlcRequest.Builder<WriteRequestItem<?>> {
@SuppressWarnings("unchecked")
public <T> PlcWriteRequest.Builder addItem(Address address, T value) {
@@ -112,15 +63,6 @@ public class PlcWriteRequest implements PlcRequest {
return this;
}
- private void checkType(Class dataType) {
- if (firstType == null) {
- firstType = dataType;
- }
- if (firstType != dataType) {
- mixed = true;
- }
- }
-
@SuppressWarnings("unchecked")
public PlcWriteRequest build() {
if (requests.size() < 1) {
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 ac80b78..39da986 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
@@ -25,57 +25,18 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
-public class PlcWriteResponse implements PlcResponse {
-
- private final PlcWriteRequest request;
-
- private final List<? extends WriteResponseItem<?>> responseItems;
+public class PlcWriteResponse extends PlcResponse<PlcWriteRequest, WriteResponseItem<?>, WriteRequestItem<?>> {
public PlcWriteResponse(PlcWriteRequest request, WriteResponseItem<?> responseItem) {
- this.request = request;
- this.responseItems = Collections.singletonList(responseItem);
+ super(request, Collections.singletonList(responseItem));
}
public PlcWriteResponse(PlcWriteRequest request, List<? extends WriteResponseItem<?>> responseItems) {
- this.request = request;
- this.responseItems = responseItems;
- }
-
- public PlcWriteRequest getRequest() {
- return request;
- }
-
- public List<? extends WriteResponseItem<?>> getResponseItems() {
- return responseItems;
- }
-
- public Optional<? extends WriteResponseItem<?>> getResponseItem() {
- if (isMultiValue()) {
- throw new IllegalStateException("too many items " + getNumberOfItems());
- }
- if (isEmpty()) {
- return Optional.empty();
- }
- return Optional.<WriteResponseItem<?>>of(getResponseItems().get(0));
- }
-
- public int getNumberOfItems() {
- return getResponseItems().size();
- }
-
- public boolean isMultiValue() {
- return getNumberOfItems() > 1;
- }
-
- public boolean isEmpty() {
- return getNumberOfItems() < 1;
+ super(request, responseItems);
}
@SuppressWarnings("unchecked")
public <T> Optional<WriteResponseItem<T>> getValue(WriteRequestItem<T> item) {
- return getResponseItems().stream()
- .filter(x -> x.getRequestItem().equals(item))
- .map(e -> (WriteResponseItem<T>) e)
- .findAny();
+ return (Optional) super.getValue(item);
}
}
--
To stop receiving notification emails like this one, please contact
['"commits@plc4x.apache.org" <co...@plc4x.apache.org>'].