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:19 UTC
[incubator-plc4x] 07/12: get rid of 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 c9b36e90bbe81a6bf0dacb80cb541ae86006faa0
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 13:31:17 2018 +0100
get rid of SinglePlc*
---
.../java/org/apache/plc4x/camel/PLC4XProducer.java | 4 +-
.../apache/plc4x/edgent/PlcConnectionAdapter.java | 14 +++----
.../plc4x/edgent/PlcConnectionAdapterTest.java | 46 ++++++++++-----------
.../apache/plc4x/edgent/mock/MockConnection.java | 16 ++++----
.../plc4x/java/api/connection/PlcReader.java | 14 -------
.../plc4x/java/api/connection/PlcWriter.java | 14 -------
.../messages/specific/SinglePlcReadRequest.java | 45 ---------------------
.../messages/specific/SinglePlcReadResponse.java | 34 ----------------
.../messages/specific/SinglePlcWriteRequest.java | 47 ----------------------
.../messages/specific/SinglePlcWriteResponse.java | 36 -----------------
.../plc4x/java/api/messages/APIMessageTests.java | 10 ++---
.../plc4x/java/s7/netty/Plc4XS7Protocol.java | 8 ++--
.../apache/plc4x/java/s7/S7PlcReaderSample.java | 6 +--
.../org/apache/plc4x/java/s7/S7PlcScanner.java | 8 ++--
.../org/apache/plc4x/java/s7/S7PlcTestConsole.java | 6 +--
.../apache/plc4x/java/s7/S7PlcWriterSample.java | 8 ++--
.../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java | 12 +++---
17 files changed, 69 insertions(+), 259 deletions(-)
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java b/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java
index 02bdfe2..a6e0735 100644
--- a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java
+++ b/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/PLC4XProducer.java
@@ -27,7 +27,7 @@ import org.apache.plc4x.java.api.connection.PlcWriter;
import org.apache.plc4x.java.api.exceptions.PlcException;
import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.messages.items.WriteRequestItem;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
import org.apache.plc4x.java.api.model.Address;
import java.util.List;
@@ -72,7 +72,7 @@ public class PLC4XProducer extends DefaultAsyncProducer {
} else {
Class<?> datatype = in.getHeader(Constants.DATATYPE_HEADER, Class.class);
Object value = in.getBody(Object.class);
- SinglePlcWriteRequest plcSimpleWriteRequest = new SinglePlcWriteRequest(datatype, address, value);
+ TypeSafePlcWriteRequest plcSimpleWriteRequest = new TypeSafePlcWriteRequest(datatype, address, value);
PlcWriter plcWriter = plcConnection.getWriter().orElseThrow(() -> new IllegalArgumentException("Writer for driver not found"));
completableFuture = plcWriter.write(plcSimpleWriteRequest);
}
diff --git a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java b/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
index c12f82e..9854500 100644
--- a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
+++ b/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
@@ -28,8 +28,8 @@ import org.apache.plc4x.java.api.connection.PlcReader;
import org.apache.plc4x.java.api.connection.PlcWriter;
import org.apache.plc4x.java.api.exceptions.PlcException;
import org.apache.plc4x.java.api.messages.PlcWriteRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
import org.apache.plc4x.java.api.model.Address;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -111,7 +111,7 @@ public class PlcConnectionAdapter implements AutoCloseable {
connection = getConnection();
address = connection.parseAddress(addressStr);
PlcReader reader = connection.getReader().get();
- SinglePlcReadRequest<T> readRequest = PlcConnectionAdapter.newPlcReadRequest(datatype, address);
+ TypeSafePlcReadRequest<T> readRequest = PlcConnectionAdapter.newPlcReadRequest(datatype, address);
return reader.read(readRequest).get().getResponseItem().get().getValues().get(0);
} catch (Exception e) {
logger.error("reading from plc device {} {} failed", connection, address, e);
@@ -182,13 +182,13 @@ public class PlcConnectionAdapter implements AutoCloseable {
}
@SuppressWarnings("unchecked")
- static <T> SinglePlcWriteRequest<T> newPlcWriteRequest(Address address, T value) {
+ static <T> TypeSafePlcWriteRequest<T> newPlcWriteRequest(Address address, T value) {
Class<T> cls = (Class<T>) value.getClass();
- return new SinglePlcWriteRequest<>(cls, address, value);
+ return new TypeSafePlcWriteRequest<>(cls, address, value);
}
- static <T> SinglePlcReadRequest<T> newPlcReadRequest(Class<T> datatype, Address address) {
- return new SinglePlcReadRequest<>(datatype, address);
+ static <T> TypeSafePlcReadRequest<T> newPlcReadRequest(Class<T> datatype, Address address) {
+ return new TypeSafePlcReadRequest<>(datatype, address);
}
}
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
index ead9699..187d773 100644
--- a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
+++ b/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
@@ -29,10 +29,10 @@ import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
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.WriteRequestItem;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadResponse;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteResponse;
import org.apache.plc4x.java.api.model.Address;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Tag;
@@ -114,25 +114,25 @@ public class PlcConnectionAdapterTest {
() -> PlcConnectionAdapter.checkDatatype(Double.class));
}
- private <T> void checkRead(MockConnection connection, SinglePlcReadRequest<T> request, T value) throws InterruptedException, ExecutionException {
+ private <T> void checkRead(MockConnection connection, TypeSafePlcReadRequest<T> request, T value) throws InterruptedException, ExecutionException {
// this is really a tests of our mock tooling but knowing it's behaving as expected
// will help identify problems in the adapter/supplier/consumer
connection.setDataValue(request.getCheckedReadRequestItems().get(0).getAddress(), value);
- CompletableFuture<SinglePlcReadResponse<T>> cf = connection.read(request);
+ CompletableFuture<TypeSafePlcReadResponse<T>> cf = connection.read(request);
Assertions.assertTrue(cf.isDone());
- SinglePlcReadResponse<T> response = cf.get();
+ TypeSafePlcReadResponse<T> response = cf.get();
Assertions.assertEquals(value, response.getResponseItems().get(0).getValues().get(0));
}
@SuppressWarnings("unchecked")
- private <T> void checkWrite(MockConnection connection, SinglePlcWriteRequest<T> request, T value) throws InterruptedException, ExecutionException {
+ private <T> void checkWrite(MockConnection connection, TypeSafePlcWriteRequest<T> request, T value) throws InterruptedException, ExecutionException {
// this is really a tests of our mock tooling but knowing it's behaving as expected
// will help identify problems in the adapter/supplier/consumer
connection.setDataValue(request.getRequestItems().get(0).getAddress(), value);
- CompletableFuture<SinglePlcWriteResponse<T>> cf = connection.write(request);
+ CompletableFuture<TypeSafePlcWriteResponse<T>> cf = connection.write(request);
Assertions.assertTrue(cf.isDone());
PlcWriteResponse response = cf.get();
@@ -160,7 +160,7 @@ public class PlcConnectionAdapterTest {
MockConnection connection = (MockConnection) adapter.getConnection();
{
- SinglePlcReadRequest<Boolean> request = PlcConnectionAdapter.newPlcReadRequest(Boolean.class, address);
+ TypeSafePlcReadRequest<Boolean> request = PlcConnectionAdapter.newPlcReadRequest(Boolean.class, address);
ReadRequestItem<Boolean> requestItem = request.getCheckedReadRequestItems().get(0);
Class<Boolean> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == Boolean.class, "class:" + request.getClass());
@@ -169,7 +169,7 @@ public class PlcConnectionAdapterTest {
checkRead(connection, request, false);
}
{
- SinglePlcReadRequest<Byte> request = PlcConnectionAdapter.newPlcReadRequest(Byte.class, address);
+ TypeSafePlcReadRequest<Byte> request = PlcConnectionAdapter.newPlcReadRequest(Byte.class, address);
ReadRequestItem<Byte> requestItem = request.getCheckedReadRequestItems().get(0);
Class<Byte> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == Byte.class, "class:" + request.getClass());
@@ -178,7 +178,7 @@ public class PlcConnectionAdapterTest {
checkRead(connection, request, (byte) 0x23);
}
{
- SinglePlcReadRequest<Short> request = PlcConnectionAdapter.newPlcReadRequest(Short.class, address);
+ TypeSafePlcReadRequest<Short> request = PlcConnectionAdapter.newPlcReadRequest(Short.class, address);
ReadRequestItem<Short> requestItem = request.getCheckedReadRequestItems().get(0);
Class<Short> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == Short.class, "class:" + request.getClass());
@@ -187,7 +187,7 @@ public class PlcConnectionAdapterTest {
checkRead(connection, request, (short) 23);
}
{
- SinglePlcReadRequest<Integer> request = PlcConnectionAdapter.newPlcReadRequest(Integer.class, address);
+ TypeSafePlcReadRequest<Integer> request = PlcConnectionAdapter.newPlcReadRequest(Integer.class, address);
ReadRequestItem<Integer> requestItem = request.getCheckedReadRequestItems().get(0);
Class<Integer> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == Integer.class, "class:" + request.getClass());
@@ -196,7 +196,7 @@ public class PlcConnectionAdapterTest {
checkRead(connection, request, -133);
}
{
- SinglePlcReadRequest<Float> request = PlcConnectionAdapter.newPlcReadRequest(Float.class, address);
+ TypeSafePlcReadRequest<Float> request = PlcConnectionAdapter.newPlcReadRequest(Float.class, address);
ReadRequestItem<Float> requestItem = request.getCheckedReadRequestItems().get(0);
Class<Float> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == Float.class, "class:" + request.getClass());
@@ -205,7 +205,7 @@ public class PlcConnectionAdapterTest {
checkRead(connection, request, -143.5f);
}
{
- SinglePlcReadRequest<String> request = PlcConnectionAdapter.newPlcReadRequest(String.class, address);
+ TypeSafePlcReadRequest<String> request = PlcConnectionAdapter.newPlcReadRequest(String.class, address);
ReadRequestItem<String> requestItem = request.getCheckedReadRequestItems().get(0);
Class<String> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == String.class, "class:" + request.getClass());
@@ -214,7 +214,7 @@ public class PlcConnectionAdapterTest {
checkRead(connection, request, "OneMoreTime");
}
{
- SinglePlcReadRequest<Calendar> request = PlcConnectionAdapter.newPlcReadRequest(Calendar.class, address);
+ TypeSafePlcReadRequest<Calendar> request = PlcConnectionAdapter.newPlcReadRequest(Calendar.class, address);
ReadRequestItem<Calendar> requestItem = request.getCheckedReadRequestItems().get(0);
Class<Calendar> dataType = requestItem.getDatatype();
Assertions.assertTrue(dataType == Calendar.class, "class:" + request.getClass());
@@ -238,7 +238,7 @@ public class PlcConnectionAdapterTest {
MockConnection connection = (MockConnection) adapter.getConnection();
{
- SinglePlcWriteRequest<Boolean> request = PlcConnectionAdapter.newPlcWriteRequest(address, true);
+ TypeSafePlcWriteRequest<Boolean> request = PlcConnectionAdapter.newPlcWriteRequest(address, true);
WriteRequestItem<Boolean> requestItem = request.getCheckedRequestItems().get(0);
Class<Boolean> dataType = requestItem.getDatatype();
Assertions.assertTrue(Boolean.class.isAssignableFrom(dataType), "class:" + request.getClass());
@@ -246,7 +246,7 @@ public class PlcConnectionAdapterTest {
checkWrite(connection, request, true);
}
{
- SinglePlcWriteRequest<Byte> request = PlcConnectionAdapter.newPlcWriteRequest(address, (byte) 0x113);
+ TypeSafePlcWriteRequest<Byte> request = PlcConnectionAdapter.newPlcWriteRequest(address, (byte) 0x113);
WriteRequestItem<Byte> requestItem = request.getCheckedRequestItems().get(0);
Class<Byte> dataType = requestItem.getDatatype();
Assertions.assertTrue(Byte.class.isAssignableFrom(dataType), "class:" + request.getClass());
@@ -254,7 +254,7 @@ public class PlcConnectionAdapterTest {
checkWrite(connection, request, (byte) 0x113);
}
{
- SinglePlcWriteRequest<Short> request = PlcConnectionAdapter.newPlcWriteRequest(address, (short) 113);
+ TypeSafePlcWriteRequest<Short> request = PlcConnectionAdapter.newPlcWriteRequest(address, (short) 113);
WriteRequestItem<Short> requestItem = request.getCheckedRequestItems().get(0);
Class<Short> dataType = requestItem.getDatatype();
Assertions.assertTrue(Short.class.isAssignableFrom(dataType), "class:" + request.getClass());
@@ -262,7 +262,7 @@ public class PlcConnectionAdapterTest {
checkWrite(connection, request, (short) 113);
}
{
- SinglePlcWriteRequest<Integer> request = PlcConnectionAdapter.newPlcWriteRequest(address, 1033);
+ TypeSafePlcWriteRequest<Integer> request = PlcConnectionAdapter.newPlcWriteRequest(address, 1033);
WriteRequestItem<Integer> requestItem = request.getCheckedRequestItems().get(0);
Class<Integer> dataType = requestItem.getDatatype();
Assertions.assertTrue(Integer.class.isAssignableFrom(dataType), "class:" + request.getClass());
@@ -270,7 +270,7 @@ public class PlcConnectionAdapterTest {
checkWrite(connection, request, 1033);
}
{
- SinglePlcWriteRequest<Float> request = PlcConnectionAdapter.newPlcWriteRequest(address, 1043.5f);
+ TypeSafePlcWriteRequest<Float> request = PlcConnectionAdapter.newPlcWriteRequest(address, 1043.5f);
WriteRequestItem<Float> requestItem = request.getCheckedRequestItems().get(0);
Class<Float> dataType = requestItem.getDatatype();
Assertions.assertTrue(Float.class.isAssignableFrom(dataType), "class:" + request.getClass());
@@ -278,7 +278,7 @@ public class PlcConnectionAdapterTest {
checkWrite(connection, request, 1043.5f);
}
{
- SinglePlcWriteRequest<String> request = PlcConnectionAdapter.newPlcWriteRequest(address, "A written value");
+ TypeSafePlcWriteRequest<String> request = PlcConnectionAdapter.newPlcWriteRequest(address, "A written value");
WriteRequestItem<String> requestItem = request.getCheckedRequestItems().get(0);
Class<String> dataType = requestItem.getDatatype();
Assertions.assertTrue(String.class.isAssignableFrom(dataType), "class:" + request.getClass());
@@ -287,7 +287,7 @@ public class PlcConnectionAdapterTest {
}
{
Calendar calValue = Calendar.getInstance();
- SinglePlcWriteRequest<Calendar> request = PlcConnectionAdapter.newPlcWriteRequest(address, calValue);
+ TypeSafePlcWriteRequest<Calendar> request = PlcConnectionAdapter.newPlcWriteRequest(address, calValue);
WriteRequestItem<Calendar> requestItem = request.getCheckedRequestItems().get(0);
Class<Calendar> dataType = requestItem.getDatatype();
Assertions.assertTrue(Calendar.class.isAssignableFrom(dataType), "class:" + request.getClass());
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 798c481..78bb6b1 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
@@ -33,10 +33,10 @@ 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 org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadResponse;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteResponse;
import org.apache.plc4x.java.api.model.Address;
import org.apache.plc4x.java.api.types.ResponseCode;
@@ -104,8 +104,8 @@ public class MockConnection extends AbstractPlcConnection implements PlcReader,
responseItems.add(responseItem);
}
PlcReadResponse response;
- if (readRequest instanceof SinglePlcReadRequest) {
- response = new SinglePlcReadResponse((SinglePlcReadRequest) readRequest, responseItems.isEmpty() ? null : responseItems.get(0));
+ if (readRequest instanceof TypeSafePlcReadRequest) {
+ response = new TypeSafePlcReadResponse((TypeSafePlcReadRequest) readRequest, responseItems.isEmpty() ? null : responseItems.get(0));
} else {
response = new PlcReadResponse(readRequest, responseItems);
}
@@ -129,8 +129,8 @@ public class MockConnection extends AbstractPlcConnection implements PlcReader,
responseItems.add(responseItem);
}
PlcWriteResponse response;
- if (writeRequest instanceof SinglePlcWriteRequest) {
- response = new SinglePlcWriteResponse((SinglePlcWriteRequest) writeRequest, responseItems.isEmpty() ? null : responseItems.get(0));
+ if (writeRequest instanceof TypeSafePlcWriteRequest) {
+ response = new TypeSafePlcWriteResponse((TypeSafePlcWriteRequest) writeRequest, responseItems.isEmpty() ? null : responseItems.get(0));
} else {
response = new PlcWriteResponse(writeRequest, responseItems);
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
index f6569fb..339540c 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
@@ -22,8 +22,6 @@ import org.apache.plc4x.java.api.messages.PlcReadRequest;
import org.apache.plc4x.java.api.messages.PlcReadResponse;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadResponse;
import java.util.concurrent.CompletableFuture;
@@ -48,18 +46,6 @@ public interface PlcReader {
* @return a {@link CompletableFuture} giving async access to the returned value.
*/
@SuppressWarnings("unchecked")
- default <T> CompletableFuture<SinglePlcReadResponse<T>> read(SinglePlcReadRequest<T> readRequest) {
- return (CompletableFuture<SinglePlcReadResponse<T>>) read((PlcReadRequest) readRequest);
- }
-
- /**
- * Reads a requested value from a PLC.
- *
- * @param readRequest object describing the type and location of the value.
- * @param <T> type that is being requested.
- * @return a {@link CompletableFuture} giving async access to the returned value.
- */
- @SuppressWarnings("unchecked")
default <T> CompletableFuture<TypeSafePlcReadResponse<T>> read(TypeSafePlcReadRequest<T> readRequest) {
return (CompletableFuture<TypeSafePlcReadResponse<T>>) read((PlcReadRequest) readRequest);
}
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
index 071bd3b..cf1140a 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
@@ -23,8 +23,6 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.messages.PlcWriteResponse;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteResponse;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteResponse;
import java.util.concurrent.CompletableFuture;
@@ -49,18 +47,6 @@ public interface PlcWriter {
* @return a {@link CompletableFuture} giving async access to the response of the write operation.
*/
@SuppressWarnings("unchecked")
- default <T> CompletableFuture<SinglePlcWriteResponse<T>> write(SinglePlcWriteRequest<T> writeRequest) {
- return (CompletableFuture<SinglePlcWriteResponse<T>>) write((PlcWriteRequest) writeRequest);
- }
-
- /**
- * Writes a given value to a PLC.
- *
- * @param writeRequest object describing the type, location and value that whould be written.
- * @param <T> type that is being requested.
- * @return a {@link CompletableFuture} giving async access to the response of the write operation.
- */
- @SuppressWarnings("unchecked")
default <T> CompletableFuture<TypeSafePlcWriteResponse<T>> write(TypeSafePlcWriteRequest<T> writeRequest) {
return (CompletableFuture<TypeSafePlcWriteResponse<T>>) write((PlcWriteRequest) writeRequest);
}
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
deleted file mode 100644
index 604f9ae..0000000
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadRequest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-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;
-
-/**
- * @deprecated methods integrated into super type
- */
-@Deprecated
-public class SinglePlcReadRequest<T> extends TypeSafePlcReadRequest<T> {
-
- public SinglePlcReadRequest(Class<T> dataType) {
- super(dataType);
- }
-
- public SinglePlcReadRequest(Class<T> dataType, ReadRequestItem<T> readRequestItem) {
- super(dataType, readRequestItem);
- }
-
- public SinglePlcReadRequest(Class<T> dataType, Address address) {
- super(dataType, address);
- }
-
- public SinglePlcReadRequest(Class<T> dataType, Address address, int size) {
- 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
deleted file mode 100644
index 401d830..0000000
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcReadResponse.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-package org.apache.plc4x.java.api.messages.specific;
-
-import org.apache.plc4x.java.api.messages.items.ReadResponseItem;
-
-import java.util.Collections;
-
-/**
- * @deprecated methods integrated into super type
- */
-@Deprecated
-public class SinglePlcReadResponse<T> extends TypeSafePlcReadResponse<T> {
-
- 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
deleted file mode 100644
index 9db1587..0000000
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteRequest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-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.List;
-
-/**
- * @deprecated methods integrated into super type
- */
-@Deprecated
-public class SinglePlcWriteRequest<T> extends TypeSafePlcWriteRequest<T> {
-
- public SinglePlcWriteRequest(Class<T> type) {
- super(type);
- }
-
- public SinglePlcWriteRequest(Class<T> dataType, Address address, T... values) {
- super(dataType, address, values);
- }
-
- public SinglePlcWriteRequest(Class<T> dataType, WriteRequestItem<T> requestItem) {
- super(dataType, requestItem);
- }
-
- 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
deleted file mode 100644
index 4340965..0000000
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/specific/SinglePlcWriteResponse.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-package org.apache.plc4x.java.api.messages.specific;
-
-import org.apache.plc4x.java.api.messages.items.WriteResponseItem;
-
-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> {
-
- public SinglePlcWriteResponse(TypeSafePlcWriteRequest<T> request, WriteResponseItem<T> writeResponseItem) {
- super(request, Collections.singletonList(writeResponseItem));
- }
-}
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 b8b9d34..534bb05 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,8 +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.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
import org.apache.plc4x.java.api.types.ResponseCode;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@@ -116,7 +116,7 @@ class APIMessageTests {
@Tag("fast")
void plcReadRequestAddress() {
MockAddress address = new MockAddress("mock:/DATA");
- PlcReadRequest plcReadRequest = new SinglePlcReadRequest<>(Byte.class, address);
+ PlcReadRequest plcReadRequest = new TypeSafePlcReadRequest<>(Byte.class, address);
assertTrue(plcReadRequest.getRequestItems().size() == 1, "Expected one request item");
assertTrue(plcReadRequest.getNumberOfItems() == 1, "Expected one request item");
}
@@ -171,7 +171,7 @@ class APIMessageTests {
@Tag("fast")
void plcWriteRequestObject() {
MockAddress address = new MockAddress("mock:/DATA");
- PlcWriteRequest plcWriteRequest = new SinglePlcWriteRequest<>(Byte.class, address, (byte) 0x33);
+ PlcWriteRequest plcWriteRequest = new TypeSafePlcWriteRequest<>(Byte.class, address, (byte) 0x33);
assertTrue(plcWriteRequest.getRequestItems().size() == 1, "Expected no request item");
assertTrue(plcWriteRequest.getNumberOfItems() == 1, "Expected one request item");
List values = plcWriteRequest.getRequestItems().get(0).getValues();
@@ -183,7 +183,7 @@ class APIMessageTests {
void plcWriteRequestObjects() {
MockAddress address = new MockAddress("mock:/DATA");
Byte[] data = {(byte) 0x22, (byte) 0x66};
- PlcWriteRequest plcWriteRequest = new SinglePlcWriteRequest<>(Byte.class, address, data);
+ PlcWriteRequest plcWriteRequest = new TypeSafePlcWriteRequest<>(Byte.class, address, data);
assertTrue(plcWriteRequest.getRequestItems().size() == 1, "Expected one request item");
assertTrue(plcWriteRequest.getNumberOfItems() == 1, "Expected one request item");
List values = plcWriteRequest.getRequestItems().get(0).getValues();
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 dcd9195..eb1eeb3 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
@@ -174,8 +174,8 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
}
responseItems.add(responseItem);
}
- if (plcReadRequest instanceof SinglePlcReadRequest) {
- response = new SinglePlcReadResponse((SinglePlcReadRequest) plcReadRequest, responseItems.isEmpty() ? null : responseItems.get(0));
+ if (plcReadRequest instanceof TypeSafePlcReadRequest) {
+ response = new TypeSafePlcReadResponse((TypeSafePlcReadRequest) plcReadRequest, responseItems.isEmpty() ? null : responseItems.get(0));
} else if (plcReadRequest instanceof PlcReadRequest) {
response = new PlcReadResponse(plcReadRequest, responseItems);
} else {
@@ -212,8 +212,8 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
if (plcWriteRequest instanceof PlcWriteRequest) {
response = new PlcWriteResponse(plcWriteRequest, responseItems);
- } else if (plcWriteRequest instanceof SinglePlcWriteRequest) {
- response = new SinglePlcWriteResponse((SinglePlcWriteRequest) plcWriteRequest, responseItems.isEmpty() ? null : responseItems.get(0));
+ } else if (plcWriteRequest instanceof TypeSafePlcWriteRequest) {
+ response = new TypeSafePlcWriteResponse((TypeSafePlcWriteRequest) plcWriteRequest, responseItems.isEmpty() ? null : responseItems.get(0));
} else {
response = null;
}
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcReaderSample.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcReaderSample.java
index bc5aed8..86a659c 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcReaderSample.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcReaderSample.java
@@ -21,8 +21,8 @@ package org.apache.plc4x.java.s7;
import org.apache.plc4x.java.PlcDriverManager;
import org.apache.plc4x.java.api.connection.PlcConnection;
import org.apache.plc4x.java.api.connection.PlcReader;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
import org.apache.plc4x.java.api.model.Address;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -61,7 +61,7 @@ public class S7PlcReaderSample {
// Read synchronously ...
// NOTICE: the ".get()" immediately lets this thread pause till
// the response is processed and available.
- SinglePlcReadResponse<Byte> plcReadResponse = plcReader.read(new SinglePlcReadRequest<>(Byte.class, inputs)).get();
+ TypeSafePlcReadResponse<Byte> plcReadResponse = plcReader.read(new TypeSafePlcReadRequest<>(Byte.class, inputs)).get();
System.out.println("Inputs: " + plcReadResponse.getResponseItem().get().getValues().get(0));
//////////////////////////////////////////////////////////
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcScanner.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcScanner.java
index df6d270..d78d307 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcScanner.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcScanner.java
@@ -21,8 +21,8 @@ package org.apache.plc4x.java.s7;
import org.apache.plc4x.java.PlcDriverManager;
import org.apache.plc4x.java.api.connection.PlcConnection;
import org.apache.plc4x.java.api.connection.PlcReader;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
import org.apache.plc4x.java.api.model.Address;
import org.apache.plc4x.java.s7.netty.model.types.MemoryArea;
import org.slf4j.Logger;
@@ -62,8 +62,8 @@ public class S7PlcScanner {
} else {
address = plcConnection.parseAddress(memoryArea.name() + "/" + i);
}
- SinglePlcReadResponse<Byte> plcReadResponse = plcReader.read(
- new SinglePlcReadRequest<>(Byte.class, address)).get();
+ TypeSafePlcReadResponse<Byte> plcReadResponse = plcReader.read(
+ new TypeSafePlcReadRequest<>(Byte.class, address)).get();
Byte data = plcReadResponse.getResponseItem().get().getValues().get(0);
if (data != null && data != 0) {
System.out.println(String.format(
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcTestConsole.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcTestConsole.java
index 52465b7..2c7b65a 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcTestConsole.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcTestConsole.java
@@ -21,8 +21,8 @@ package org.apache.plc4x.java.s7;
import org.apache.plc4x.java.PlcDriverManager;
import org.apache.plc4x.java.api.connection.PlcConnection;
import org.apache.plc4x.java.api.connection.PlcReader;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
import org.apache.plc4x.java.api.model.Address;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,7 +57,7 @@ public class S7PlcTestConsole {
while (!"exit".equalsIgnoreCase(line = scanner.next())) {
try {
Address address = plcConnection.parseAddress(line);
- SinglePlcReadResponse<Byte> plcReadResponse = plcReader.read(new SinglePlcReadRequest<>(Byte.class, address)).get();
+ TypeSafePlcReadResponse<Byte> plcReadResponse = plcReader.read(new TypeSafePlcReadRequest<>(Byte.class, address)).get();
List<Byte> data = plcReadResponse.getResponseItem().get().getValues();
System.out.println("Response: " + data.get(0));
} catch (Exception e) {
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcWriterSample.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcWriterSample.java
index 4ed5077..966a7c1 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcWriterSample.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/S7PlcWriterSample.java
@@ -21,8 +21,8 @@ package org.apache.plc4x.java.s7;
import org.apache.plc4x.java.PlcDriverManager;
import org.apache.plc4x.java.api.connection.PlcConnection;
import org.apache.plc4x.java.api.connection.PlcWriter;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteResponse;
import org.apache.plc4x.java.api.model.Address;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,8 +54,8 @@ public class S7PlcWriterSample {
// Write synchronously ...
// NOTICE: the ".get()" immediately lets this thread pause till
// the response is processed and available.
- SinglePlcWriteResponse<Float> plcWriteResponse = plcWriter.write(
- new SinglePlcWriteRequest<>(Float.class, inputs, 2.0f)).get();
+ TypeSafePlcWriteResponse<Float> plcWriteResponse = plcWriter.write(
+ new TypeSafePlcWriteRequest<>(Float.class, inputs, 2.0f)).get();
System.out.println("Written: " + plcWriteResponse.getResponseItem().get().getResponseCode().name());
}
}
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/Plc4XS7ProtocolTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/Plc4XS7ProtocolTest.java
index 6c819ba..6a9dc62 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/Plc4XS7ProtocolTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/Plc4XS7ProtocolTest.java
@@ -19,8 +19,8 @@ under the License.
package org.apache.plc4x.java.s7.netty;
import org.apache.plc4x.java.api.messages.*;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcReadRequest;
-import org.apache.plc4x.java.api.messages.specific.SinglePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
import org.apache.plc4x.java.netty.NettyTestBase;
import org.apache.plc4x.java.s7.model.S7Address;
import org.apache.plc4x.java.s7.model.S7BitAddress;
@@ -66,14 +66,14 @@ public class Plc4XS7ProtocolTest extends NettyTestBase {
// Read Request Tests
{
LinkedList<Object> out = new LinkedList<>();
- SUT.encode(null, createMockedContainer(new SinglePlcReadRequest(type, address)), out);
+ SUT.encode(null, createMockedContainer(new TypeSafePlcReadRequest(type, address)), out);
// TODO: finish the asserts
assertThat(out).hasSize(1);
}
// Write Request Tests
{
LinkedList<Object> out = new LinkedList<>();
- SUT.encode(null, createMockedContainer(new SinglePlcWriteRequest(type, address, fakeValueFor(type))), out);
+ SUT.encode(null, createMockedContainer(new TypeSafePlcWriteRequest(type, address, fakeValueFor(type))), out);
// TODO: finish the asserts
assertThat(out).hasSize(1);
}
@@ -91,7 +91,7 @@ public class Plc4XS7ProtocolTest extends NettyTestBase {
Field requests = Plc4XS7Protocol.class.getDeclaredField("requests");
requests.setAccessible(true);
Map<Short, PlcRequestContainer> requestContainerMap = (Map<Short, PlcRequestContainer>) requests.get(SUT);
- requestContainerMap.put(fakeTpduReference, createMockedContainer(new SinglePlcReadRequest(type, address)));
+ requestContainerMap.put(fakeTpduReference, createMockedContainer(new TypeSafePlcReadRequest(type, address)));
}
S7ResponseMessage msg = new S7ResponseMessage(
MessageType.ACK,
@@ -113,7 +113,7 @@ public class Plc4XS7ProtocolTest extends NettyTestBase {
Field requests = Plc4XS7Protocol.class.getDeclaredField("requests");
requests.setAccessible(true);
Map<Short, PlcRequestContainer> requestContainerMap = (Map<Short, PlcRequestContainer>) requests.get(SUT);
- requestContainerMap.put(fakeTpduReference, createMockedContainer(new SinglePlcWriteRequest(type, address, fakeValueFor(type))));
+ requestContainerMap.put(fakeTpduReference, createMockedContainer(new TypeSafePlcWriteRequest(type, address, fakeValueFor(type))));
}
S7ResponseMessage msg = new S7ResponseMessage(
MessageType.ACK,
--
To stop receiving notification emails like this one, please contact
"commits@plc4x.apache.org" <co...@plc4x.apache.org>.