You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by na...@apache.org on 2020/01/28 23:08:11 UTC

[plc4x] branch develop updated (6984ce1 -> d45f748)

This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git.


    from 6984ce1  - Created a README to explain how to use the Example
     new ae46fff  Merge branches 'PLC4X-157OPC-UADisablediscovery' and 'develop' of https://github.com/apache/plc4x into develop
     new 3d5ef14  Merge remote-tracking branch 'origin/develop' into develop
     new 3cd9d99  Merge remote-tracking branch 'origin/develop' into develop
     new e51558c  [fix] changed OPC UA to new structure of refactoring
     new 7257d14  [added] added first Milo ExampleServer inside of the manual tests
     new 7702f91  [added] added test case for reading a full set of variables
     new d45f748  [fix] changed write of opc variant and included cast from BigInteger

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4j/drivers/opcua/pom.xml                        |   6 ++
 .../apache/plc4x/java/opcua/OpcuaPlcDriver.java    |  17 +---
 .../opcua/connection/OpcuaTcpPlcConnection.java    |  14 ++-
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java  |  18 ++--
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  |  59 +++++++-----
 .../plc4x/java/opcua/OpcuaPlcDriverTest.java       | 105 +++++++++++++++++++++
 plc4j/drivers/pom.xml                              |   4 +-
 7 files changed, 170 insertions(+), 53 deletions(-)


[plc4x] 01/07: Merge branches 'PLC4X-157OPC-UADisablediscovery' and 'develop' of https://github.com/apache/plc4x into develop

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit ae46fff55a395637aae04bdb421505438aa730b6
Merge: d3ebc94 77c0b4b
Author: Matthias Milan Strljic <Ma...@googlemail.com>
AuthorDate: Sat Dec 7 17:17:38 2019 +0100

    Merge branches 'PLC4X-157OPC-UADisablediscovery' and 'develop' of https://github.com/apache/plc4x into develop

 plc4j/drivers/opcua/pom.xml                        |   3 +-
 .../apache/plc4x/java/opcua/OpcuaPlcDriver.java    |  10 +-
 .../opcua/connection/BaseOpcuaPlcConnection.java   |  15 +-
 .../opcua/connection/OpcuaConnectionFactory.java   |   5 +-
 .../opcua/connection/OpcuaTcpPlcConnection.java    | 307 ++++++++++++---------
 .../plc4x/java/opcua/protocol/OpcuaField.java      |   9 +-
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java  |  28 +-
 .../opcua/protocol/OpcuaSubsriptionHandle.java     |  44 +--
 .../java/opcua/protocol/model/OpcuaDataTypes.java  |   5 +-
 .../opcua/protocol/model/OpcuaIdentifierType.java  |  12 +-
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  |  93 +++++--
 .../plc4x/java/opcua/OpcuaPlcDriverTest.java       |   5 +-
 .../org/apache/plc4x/java/opcua/UtilsTest.java     |   5 +-
 .../connection/OpcuaTcpPlcConnectionTest.java      |  59 +++-
 .../plc4x/java/opcua/protocol/OpcuaFieldTest.java  |   5 +-
 .../opcua/protocol/OpcuaPlcFieldHandlerTest.java   |   5 +-
 .../protocol/OpcuaSubscriptionHandleTest.java      |   5 +-
 17 files changed, 400 insertions(+), 215 deletions(-)


[plc4x] 04/07: [fix] changed OPC UA to new structure of refactoring

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit e51558cbce20403ea59e37e7d6bcee6d9573c8f1
Author: Matthias Milan Strljic <ma...@gmail.com>
AuthorDate: Tue Jan 28 21:39:24 2020 +0100

    [fix] changed OPC UA to new structure of refactoring
---
 plc4j/drivers/opcua/pom.xml                            |  6 ++++++
 .../org/apache/plc4x/java/opcua/OpcuaPlcDriver.java    | 17 +++++------------
 .../java/opcua/connection/OpcuaTcpPlcConnection.java   |  4 ++--
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java      | 18 +++++++++---------
 plc4j/drivers/pom.xml                                  |  4 ++--
 5 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/plc4j/drivers/opcua/pom.xml b/plc4j/drivers/opcua/pom.xml
index 9c8dce4..658e813 100644
--- a/plc4j/drivers/opcua/pom.xml
+++ b/plc4j/drivers/opcua/pom.xml
@@ -61,6 +61,12 @@
     </dependency>
 
     <dependency>
+      <groupId>org.eclipse.milo</groupId>
+      <artifactId>server-examples</artifactId>
+      <version>0.3.6</version>
+    </dependency>
+
+    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/OpcuaPlcDriver.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/OpcuaPlcDriver.java
index 61bf3ab..7e0d3a5 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/OpcuaPlcDriver.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/OpcuaPlcDriver.java
@@ -20,10 +20,10 @@ package org.apache.plc4x.java.opcua;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.PlcDriver;
 import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.opcua.connection.OpcuaConnectionFactory;
-import org.apache.plc4x.java.api.PlcDriver;
 import org.osgi.service.component.annotations.Component;
 
 import java.net.InetAddress;
@@ -46,15 +46,7 @@ public class OpcuaPlcDriver implements PlcDriver {
     public static final Pattern OPCUA_URI_PARAM_PATTERN = Pattern.compile("(?<param>[(\\?|\\&)([^=]+)\\=([^&]+)]+)?"); //later used for regex filtering of the params
     public static final Pattern OPCUA_URI_PATTERN = Pattern.compile("^opcua:(" + INET_ADDRESS_PATTERN + ")?" + "(?<params>[\\w/=?&]+)?");
     private static final int requestTimeout = 10000;
-    private OpcuaConnectionFactory opcuaConnectionFactory;
-
-    public OpcuaPlcDriver() {
-        this.opcuaConnectionFactory = new OpcuaConnectionFactory();
-    }
-
-    public OpcuaPlcDriver(OpcuaConnectionFactory opcuaConnectionFactory) {
-        this.opcuaConnectionFactory = opcuaConnectionFactory;
-    }
+    private OpcuaConnectionFactory opcuaConnectionFactory = new OpcuaConnectionFactory();
 
     @Override
     public String getProtocolCode() {
@@ -67,7 +59,7 @@ public class OpcuaPlcDriver implements PlcDriver {
     }
 
     @Override
-    public PlcConnection connect(String url) throws PlcConnectionException {
+    public PlcConnection getConnection(String url) throws PlcConnectionException {
         Matcher matcher = OPCUA_URI_PATTERN.matcher(url);
 
         if (!matcher.matches()) {
@@ -88,8 +80,9 @@ public class OpcuaPlcDriver implements PlcDriver {
     }
 
     @Override
-    public PlcConnection connect(String url, PlcAuthentication authentication) throws PlcConnectionException {
+    public PlcConnection getConnection(String url, PlcAuthentication authentication) throws PlcConnectionException {
         throw new PlcConnectionException("opcua does not support Auth at this state");
     }
 
+
 }
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
index ada500c..952c7fc 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
@@ -167,13 +167,13 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
         EndpointDescription endpoint = null;
 
         try {
-            endpoints = DiscoveryClient.getEndpoints(getEndpointUrl(address, port, params)).get();
+            endpoints = DiscoveryClient.getEndpoints(getEndpointUrl(address, port, params.split("\\?")[0])).get();
             //TODO Exception should be handeled better when the Discovery-API of Milo is stable
         } catch (Exception ex) {
             logger.info("Failed to discover Endpoint with enabled discovery. If the endpoint does not allow a correct discovery disable this option with the nDiscovery=true option. Failed Endpoint: {}", getEndpointUrl(address, port, params));
 
             // try the explicit discovery endpoint as well
-            String discoveryUrl = getEndpointUrl(address, port, params);
+            String discoveryUrl = getEndpointUrl(address, port, params.split("\\?")[0]);
 
             if (!discoveryUrl.endsWith("/")) {
                 discoveryUrl += "/";
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java
index 289ba0a..8ed1b50 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java
@@ -42,7 +42,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeString(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<String> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add(item.toString());
@@ -56,7 +56,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeBoolean(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Boolean> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Boolean) item);
@@ -70,7 +70,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeByte(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Byte> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Byte) item);
@@ -84,7 +84,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeShort(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Short> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Short) item);
@@ -98,7 +98,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeInteger(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Integer> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Integer) item);
@@ -112,7 +112,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeBigInteger(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<BigInteger> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((BigInteger) item);
@@ -126,7 +126,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeLong(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Long> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Long) item);
@@ -140,7 +140,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeFloat(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Float> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Float) item);
@@ -155,7 +155,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeDouble(PlcField field, Object[] values) {
-        OpcuaField adsField = (OpcuaField) field;
+        OpcuaField opcField = (OpcuaField) field;
         ArrayList<Double> resultSet = new ArrayList<>();
         for (Object item : values) {
             resultSet.add((Double) item);
diff --git a/plc4j/drivers/pom.xml b/plc4j/drivers/pom.xml
index 5fc0404..ccec7bc 100644
--- a/plc4j/drivers/pom.xml
+++ b/plc4j/drivers/pom.xml
@@ -40,8 +40,8 @@
     <module>knxnetip</module>
     <module>mock</module>
     <!--module>modbus</module>
-    <module>s7</module>
-	  <module>opcua</module-->
+    <module>s7</module-->
+    <module>opcua</module>
     <module>simulated</module>
   </modules>
 


[plc4x] 02/07: Merge remote-tracking branch 'origin/develop' into develop

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 3d5ef14cb1cc82ff73193b5df324b17f1ac5c15c
Merge: ae46fff f689ba8
Author: Matthias Milan Strljic <Ma...@googlemail.com>
AuthorDate: Mon Jan 27 22:15:17 2020 +0100

    Merge remote-tracking branch 'origin/develop' into develop

 .gitignore                                         |    5 +-
 Jenkinsfile                                        |    6 +-
 README.md                                          |    2 +-
 RELEASE_NOTES                                      |    2 +-
 Sometimes-Failling-Tests.md                        |   11 +-
 build-utils/language-base-freemarker/pom.xml       |    2 +-
 .../freemarker/FreemarkerLanguageOutput.java       |  116 ++-
 build-utils/language-java/pom.xml                  |    4 +-
 .../plc4x/language/java/JavaLanguageOutput.java    |   15 +
 .../language/java/JavaLanguageTemplateHelper.java  |  385 +++++--
 .../resources/templates/java/data-io-template.ftlh |  278 ++++++
 .../templates/java/enum-package-info-template.ftlh |   39 +
 .../resources/templates/java/enum-template.ftlh    |  115 +--
 .../main/resources/templates/java/io-template.ftlh |  226 +++--
 .../resources/templates/java/pojo-template.ftlh    |  169 +++-
 build-utils/pom.xml                                |    2 +-
 build-utils/protocol-base-mspec/pom.xml            |   39 +-
 .../plugins/codegenerator/language/mspec/MSpec.g4  |  103 +-
 .../language/mspec/expression/Expression.g4        |    3 +
 .../mspec/expression/ExpressionStringListener.java |   65 +-
 .../mspec/expression/ExpressionStringParser.java   |   14 +-
 .../definitions/DefaultComplexTypeDefinition.java  |    8 +-
 .../definitions/DefaultDataIoTypeDefinition.java   |   38 +
 .../DefaultDiscriminatedComplexTypeDefinition.java |    2 +-
 .../definitions/DefaultEnumTypeDefinition.java     |    2 +-
 .../mspec/model/fields/DefaultAbstractField.java   |   52 +
 .../mspec/model/fields/DefaultImplicitField.java   |   10 +-
 .../model/fields/DefaultManualArrayField.java      |   18 +-
 .../mspec/model/fields/DefaultManualField.java     |   18 +-
 .../references/DefaultFloatTypeReference.java      |   45 +
 .../references/DefaultIntegerTypeReference.java    |   30 +
 .../references/DefaultSimpleTypeReference.java     |   12 +-
 .../DefaultSimpleVarLengthTypeReference.java       |    2 +-
 .../references/DefaultStringTypeReference.java     |   38 +
 .../references/DefaultTemporalTypeReference.java   |   30 +
 .../mspec/parser/MessageFormatListener.java        |  203 ++--
 .../language/mspec/parser/MessageFormatParser.java |   17 +-
 .../expression/ExpressionStringParserTest.java     |  177 ++++
 .../mspec/parser/MessageFormatParserTest.java      |   43 +
 .../src/test/resources/mspec.example               |  358 +++++++
 build-utils/protocol-test/pom.xml                  |    6 +-
 .../src/main/resources/protocols/test/test.mspec   |    2 +-
 jenkins.pom                                        |   18 +-
 plc4j/api/pom.xml                                  |   42 +-
 .../org/apache/plc4x/java/PlcDriverManager.java    |   50 +-
 .../org/apache/plc4x/java/api/Experimental.java    |   26 +
 .../org/apache/plc4x/java/api/PlcConnection.java   |   35 +-
 .../plc4x/java/api/PlcConnectionExtension.java     |   82 ++
 .../java/org/apache/plc4x/java/api/PlcDriver.java  |   60 ++
 .../java/api/authentication/PlcAuthentication.java |   34 +-
 .../PlcUsernamePasswordAuthentication.java         |   34 +-
 .../api/exceptions/PlcConnectionException.java     |   34 +-
 .../plc4x/java/api/exceptions/PlcException.java    |   34 +-
 .../api/exceptions/PlcFieldRangeException.java     |   32 +-
 .../PlcIncompatibleDatatypeException.java          |   39 +-
 .../api/exceptions/PlcInvalidFieldException.java   |   32 +-
 .../plc4x/java/api/exceptions/PlcIoException.java  |   34 +-
 .../api/exceptions/PlcNotImplementedException.java |   32 +-
 .../java/api/exceptions/PlcProtocolException.java  |   34 +-
 .../PlcProtocolPayloadTooBigException.java         |   34 +-
 .../exceptions/PlcProtocolTimeoutException.java    |   39 +
 .../java/api/exceptions/PlcRuntimeException.java   |   34 +-
 .../java/api/exceptions/PlcTimeoutException.java   |   32 +-
 .../PlcUnsupportedDataTypeException.java           |   32 +-
 .../PlcUnsupportedOperationException.java          |   34 +-
 .../PlcUnsupportedProtocolException.java           |   32 +-
 .../plc4x/java/api/messages/PlcFieldRequest.java   |   34 +-
 .../plc4x/java/api/messages/PlcFieldResponse.java  |   34 +-
 .../apache/plc4x/java/api/messages/PlcMessage.java |   34 +-
 .../plc4x/java/api/messages/PlcReadRequest.java    |   34 +-
 .../plc4x/java/api/messages/PlcReadResponse.java   |   50 +-
 .../apache/plc4x/java/api/messages/PlcRequest.java |   34 +-
 .../plc4x/java/api/messages/PlcRequestBuilder.java |   34 +-
 .../plc4x/java/api/messages/PlcResponse.java       |   34 +-
 .../java/api/messages/PlcSubscriptionEvent.java    |   34 +-
 .../java/api/messages/PlcSubscriptionRequest.java  |   34 +-
 .../java/api/messages/PlcSubscriptionResponse.java |   34 +-
 .../api/messages/PlcUnsubscriptionRequest.java     |   34 +-
 .../api/messages/PlcUnsubscriptionResponse.java    |   34 +-
 .../plc4x/java/api/messages/PlcWriteRequest.java   |   38 +-
 .../plc4x/java/api/messages/PlcWriteResponse.java  |   34 +-
 .../java/api/metadata/PlcConnectionMetadata.java   |   34 +-
 .../java/api/model/PlcConsumerRegistration.java    |   32 +-
 .../org/apache/plc4x/java/api/model/PlcField.java  |   34 +-
 .../java/api/model/PlcSubscriptionHandle.java      |   34 +-
 .../plc4x/java/api/types/PlcClientDatatype.java    |   34 +-
 .../plc4x/java/api/types/PlcResponseCode.java      |   34 +-
 .../plc4x/java/api/types/PlcSubscriptionType.java  |   34 +-
 .../apache/plc4x/java/api/value/PlcBigDecimal.java |  136 +++
 .../apache/plc4x/java/api/value/PlcBigInteger.java |  136 +++
 .../apache/plc4x/java/api/value/PlcBoolean.java    |  130 +++
 .../org/apache/plc4x/java/api/value/PlcDate.java   |   55 +
 .../apache/plc4x/java/api/value/PlcDateTime.java   |   77 ++
 .../org/apache/plc4x/java/api/value/PlcDouble.java |  140 +++
 .../org/apache/plc4x/java/api/value/PlcFloat.java  |  140 +++
 .../apache/plc4x/java/api/value/PlcInteger.java    |  156 +++
 .../org/apache/plc4x/java/api/value/PlcList.java   |   72 ++
 .../org/apache/plc4x/java/api/value/PlcLong.java   |  140 +++
 .../plc4x/java/api/value/PlcSimpleValue.java       |   57 ++
 .../org/apache/plc4x/java/api/value/PlcString.java |   68 ++
 .../org/apache/plc4x/java/api/value/PlcStruct.java |   70 ++
 .../org/apache/plc4x/java/api/value/PlcTime.java   |   55 +
 .../org/apache/plc4x/java/api/value/PlcValue.java  |  142 +++
 .../plc4x/java/api/value/PlcValueAdapter.java      |  248 +++++
 .../org/apache/plc4x/java/api/value/PlcValues.java |  382 +++++++
 .../java/org/apache/plc4x/java/spi/PlcDriver.java  |   61 --
 .../apache/plc4x/java/PlcDriverManagerTest.java    |   47 +-
 .../PlcUsernamePasswordAuthenticationTest.java     |   39 +-
 .../plc4x/java/api/connection/PlcReaderTest.java   |   32 +-
 .../plc4x/java/api/connection/PlcWriterTest.java   |   32 +-
 .../api/exceptions/PlcConnectionExceptionTest.java |   32 +-
 .../java/api/exceptions/PlcExceptionTest.java      |   32 +-
 .../api/exceptions/PlcFieldRangeExceptionTest.java |   32 +-
 .../PlcIncompatibleDatatypeExceptionTest.java      |   32 +-
 .../exceptions/PlcInvalidFieldExceptionTest.java   |   32 +-
 .../java/api/exceptions/PlcIoExceptionTest.java    |   32 +-
 .../exceptions/PlcNotImplementedExceptionTest.java |   32 +-
 .../api/exceptions/PlcProtocolExceptionTest.java   |   32 +-
 .../PlcProtocolPayloadTooBigExceptionTest.java     |   32 +-
 .../api/exceptions/PlcRuntimeExceptionTest.java    |   32 +-
 .../api/exceptions/PlcTimeoutExceptionTest.java    |   32 +-
 .../PlcUnsupportedDataTypeExceptionTest.java       |   32 +-
 .../PlcUnsupportedOperationExceptionTest.java      |   32 +-
 .../plc4x/java/api/messages/APIMessageTests.java   |   34 +-
 .../api/messages/PlcProprietaryRequestTest.java    |   32 +-
 .../api/messages/PlcProprietaryResponseTest.java   |   32 +-
 .../java/api/messages/PlcReadRequestTest.java      |   32 +-
 .../java/api/messages/PlcReadResponseTest.java     |   32 +-
 .../plc4x/java/api/messages/PlcRequestTest.java    |   32 +-
 .../plc4x/java/api/messages/PlcResponseTest.java   |   32 +-
 .../api/messages/PlcSubscriptionEventTest.java     |   32 +-
 .../api/messages/PlcSubscriptionRequestTest.java   |   32 +-
 .../api/messages/PlcSubscriptionResponseTest.java  |   32 +-
 .../api/messages/PlcUnsubscriptionRequestTest.java |   32 +-
 .../messages/PlcUnsubscriptionResponseTest.java    |   32 +-
 .../java/api/messages/PlcWriteRequestTest.java     |   32 +-
 .../java/api/messages/PlcWriteResponseTest.java    |   32 +-
 .../plc4x/java/api/messages/mock/MockField.java    |   34 +-
 .../specific/TypeSafePlcReadRequestTest.java       |   32 +-
 .../specific/TypeSafePlcReadResponseTest.java      |   32 +-
 .../specific/TypeSafePlcWriteRequestTest.java      |   32 +-
 .../specific/TypeSafePlcWriteResponseTest.java     |   32 +-
 .../java/api/types/PlcClientDatatypeTest.java      |   32 +-
 .../plc4x/java/api/types/PlcResponseCodeTest.java  |   32 +-
 .../java/api/types/PlcSubscriptionTypeTest.java    |   32 +-
 .../apache/plc4x/java/api/types/PlcValueTest.java  |   53 +
 .../apache/plc4x/java/api/value/PlcValuesTest.java |   52 +
 .../org/apache/plc4x/java/mock/ApiMockDriver.java  |   55 +
 .../plc4x/java/mock/DuplicateMockDriver.java       |   34 +-
 .../org/apache/plc4x/java/mock/MockDriver.java     |   55 -
 .../apache/plc4x/java/mock/MockPlcConnection.java  |   32 +-
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 plc4j/drivers/ab-eth/pom.xml                       |   38 +-
 .../org/apache/plc4x/java/abeth/AbEthDriver.java   |   61 +-
 .../abeth/configuration/AbEthConfiguration.java    |   44 +
 .../java/abeth/connection/AbEthFieldHandler.java   |   36 -
 .../java/abeth/connection/AbEthPlcConnection.java  |  159 ---
 .../apache/plc4x/java/abeth/field/AbEthField.java  |  105 ++
 .../plc4x/java/abeth/field/AbEthFieldHandler.java  |   35 +
 .../apache/plc4x/java/abeth/model/AbEthField.java  |  105 --
 .../plc4x/java/abeth/model/types/FileType.java     |   65 --
 .../plc4x/java/abeth/protocol/AbEthProtocol.java   |   61 --
 .../java/abeth/protocol/AbEthProtocolLogic.java    |  221 +++++
 .../java/abeth/protocol/Plc4xAbEthProtocol.java    |   51 +-
 .../apache/plc4x/java/abeth/types/FileType.java    |   65 ++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/protocol/abeth/AbEthTest.java |    2 +-
 .../test/resources/testsuite/AbEthTestsuite.xml    |    2 +-
 plc4j/drivers/ads/pom.xml                          |   31 +-
 .../org/apache/plc4x/java/ads/AdsPlcDriver.java    |    2 +-
 .../ads/connection/AdsAbstractPlcConnection.java   |   39 +-
 .../ads/connection/AdsSerialPlcConnection.java     |    4 +-
 .../java/ads/connection/AdsTcpPlcConnection.java   |   23 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/ads/adslib/AmsRequest.java   |    4 +-
 .../apache/plc4x/java/ads/adslib/AmsRouter.java    |    4 +-
 .../connection/AdsAbstractPlcConnectionTest.java   |   16 +-
 .../ads/connection/AdsConnectionFactoryTest.java   |    6 +-
 .../ads/connection/AdsSerialPlcConnectionTest.java |    6 +-
 .../ads/connection/AdsTcpPlcConnectionTests.java   |    6 +-
 plc4j/drivers/ethernet-ip/pom.xml                  |   19 +-
 .../plc4x/java/ethernetip/EtherNetIpPlcDriver.java |    2 +-
 .../connection/BaseEtherNetIpPlcConnection.java    |    6 +-
 .../connection/EtherNetIpTcpPlcConnection.java     |    9 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/drivers/knxnetip/README.adoc                 |   48 +
 plc4j/drivers/knxnetip/pom.xml                     |  148 +++
 .../apache/plc4x/java/knxnetip/KnxNetIpDriver.java |   97 ++
 .../configuration/KnxNetIpConfiguration.java       |   65 ++
 .../plc4x/java/knxnetip/ets5/Ets5Parser.java       |  166 ++++
 .../java/knxnetip/ets5/model/AddressType.java      |   96 ++
 .../plc4x/java/knxnetip/ets5/model/Ets5Model.java  |  114 +++
 .../plc4x/java/knxnetip/ets5/model/Function.java   |   96 ++
 .../java/knxnetip/ets5/model/GroupAddress.java     |   96 ++
 .../plc4x/java/knxnetip/field/KnxNetIpField.java   |   86 ++
 .../java/knxnetip/field/KnxNetIpFieldHandler.java  |   35 +
 .../knxnetip/protocol/KnxNetIpProtocolLogic.java   |  370 +++++++
 .../plc4x/java/knxnetip/utils/KnxHelper.java       |   65 ++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |  102 ++
 .../apache/plc4x/java/knxnetip/KNXNetIpTest.java   |   30 +
 .../apache/plc4x/java/knxnetip/ManualKnxNetIp.java |   72 ++
 .../java/knxnetip/ManualKnxNetIpWithEts5.java      |  149 +++
 .../knxnetip/src/test}/resources/logback.xml       |    0
 .../test/resources/testsuite/KNXNetIPTestsuite.xml |  402 ++++++++
 plc4j/drivers/mock/pom.xml                         |   74 ++
 .../org/apache/plc4x/java/mock/MockDriver.java     |   63 ++
 .../plc4x/java/mock/connection/MockConnection.java |  207 ++++
 .../plc4x/java/mock/connection/MockDevice.java     |   51 +
 .../java/mock/connection/tcp/TcpHexDumper.java     |    0
 .../apache/plc4x/java/mock/field/MockField.java    |   62 ++
 .../plc4x/java/mock/field/MockFieldHandler.java    |   98 ++
 .../apache/plc4x/java/mock/field/MockPlcValue.java |   36 +
 .../mock/protocol/Plc4XSupportedDataTypes.java     |    0
 .../org/apache/plc4x/java/mock/util/Assert.java    |    0
 .../org/apache/plc4x/java/mock/util/HexUtil.java   |    0
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 plc4j/drivers/modbus/pom.xml                       |   31 +-
 .../apache/plc4x/java/modbus/ModbusPlcDriver.java  |    2 +-
 .../modbus/connection/BaseModbusPlcConnection.java |   14 +-
 .../connection/ModbusSerialPlcConnection.java      |    2 +-
 .../modbus/connection/ModbusTcpPlcConnection.java  |    7 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../connection/BaseModbusPlcConnectionTest.java    |    6 +-
 .../connection/ModbusConnectionFactoryTest.java    |    6 +-
 .../connection/ModbusSerialPlcConnectionTest.java  |    6 +-
 plc4j/drivers/opcua/pom.xml                        |   61 +-
 .../apache/plc4x/java/opcua/OpcuaPlcDriver.java    |    7 +-
 .../opcua/connection/BaseOpcuaPlcConnection.java   |    9 +-
 .../opcua/connection/OpcuaConnectionFactory.java   |    1 -
 .../opcua/connection/OpcuaTcpPlcConnection.java    |   60 +-
 .../plc4x/java/opcua/protocol/OpcuaField.java      |    1 -
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java  |   95 +-
 .../opcua/protocol/OpcuaSubsriptionHandle.java     |   13 +-
 .../java/opcua/protocol/model/OpcuaDataTypes.java  |    1 -
 .../opcua/protocol/model/OpcuaIdentifierType.java  |    1 -
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  |   19 +-
 .../plc4x/java/opcua/OpcuaPlcDriverTest.java       |    3 +-
 .../org/apache/plc4x/java/opcua/UtilsTest.java     |    1 -
 .../connection/OpcuaTcpPlcConnectionTest.java      |    6 +-
 .../plc4x/java/opcua/protocol/OpcuaFieldTest.java  |    1 -
 .../opcua/protocol/OpcuaPlcFieldHandlerTest.java   |    1 -
 .../protocol/OpcuaSubscriptionHandleTest.java      |    1 -
 plc4j/drivers/pom.xml                              |   12 +-
 plc4j/drivers/s7/pom.xml                           |   35 +-
 .../java/org/apache/plc4x/java/s7/S7PlcDriver.java |    2 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  |   33 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../java/org/apache/plc4x/java/s7/BenchmarkS7.java |    5 +-
 .../java/s7/connection/S7PlcTestConnection.java    |    2 +-
 plc4j/drivers/simulated/pom.xml                    |   16 +-
 .../plc4x/java/simulated/SimulatedDriver.java      |   65 ++
 .../plc4x/java/simulated/SimulatedPlcDriver.java   |   65 --
 .../simulated/connection/SimulatedConnection.java  |  254 +++++
 .../java/simulated/connection/SimulatedDevice.java |  194 ++++
 .../connection/SimulatedPlcConnection.java         |  219 ----
 .../java/simulated/connection/TestDevice.java      |  199 ----
 .../plc4x/java/simulated/connection/TestField.java |  128 ---
 .../simulated/connection/TestFieldHandler.java     |  174 ----
 .../java/simulated/connection/TestFieldItem.java   |   35 -
 .../plc4x/java/simulated/connection/TestType.java  |   28 -
 .../plc4x/java/simulated/field/SimulatedField.java |  129 +++
 .../simulated/field/SimulatedFieldHandler.java     |  214 ++++
 .../java/simulated/types/SimulatedFieldType.java   |   28 +
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   38 -
 .../plc4x/java/simulated/SimulatedDriverTest.java  |   58 ++
 .../java/simulated/SimulatedPlcDriverTest.java     |   57 --
 .../connection/SimulatedConnectionTest.java        |  245 +++++
 .../simulated/connection/SimulatedDeviceTest.java  |   57 ++
 .../connection/SimulatedPlcConnectionTest.java     |  245 -----
 .../java/simulated/connection/TestDeviceTest.java  |   56 --
 .../simulated/connection/TestFieldHandlerTest.java |  133 ---
 .../simulated/connection/TestFieldItemTest.java    |   31 -
 .../java/simulated/connection/TestFieldTest.java   |   61 --
 .../simulated/field/SimularedFieldHandlerTest.java |  128 +++
 .../java/simulated/field/SimulatedFieldTest.java   |   62 ++
 plc4j/examples/dummy-driver/pom.xml                |   13 +-
 .../java/examples/dummydriver/DummyDriver.java     |    2 +-
 .../dummydriver/connection/DummyConnection.java    |   14 +-
 .../examples/dummydriver/netty/DummyProtocol.java  |    2 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/examples/hello-cloud-azure/pom.xml           |   24 +-
 plc4j/examples/hello-cloud-google/pom.xml          |   24 +-
 plc4j/examples/hello-connectivity-kafka/pom.xml    |   26 +-
 plc4j/examples/hello-connectivity-mqtt/pom.xml     |   24 +-
 plc4j/examples/hello-integration-edgent/pom.xml    |   24 +-
 plc4j/examples/hello-integration-iotdb/pom.xml     |   24 +-
 .../java/examples/integration/iotdb/PlcLogger.java |    2 +-
 plc4j/examples/hello-opm/pom.xml                   |   26 +-
 plc4j/examples/hello-storage-elasticsearch/pom.xml |   26 +-
 plc4j/examples/hello-webapp/client/pom.xml         |    2 +-
 plc4j/examples/hello-webapp/pom.xml                |    2 +-
 plc4j/examples/hello-webapp/service/pom.xml        |   24 +-
 plc4j/examples/hello-webapp/webapp/pom.xml         |    6 +-
 plc4j/examples/hello-world-plc4x/pom.xml           |   33 +-
 .../plc4x/java/examples/helloplc4x/HelloPlc4x.java |   13 +-
 .../src/main/resources/logback.xml                 |    2 +-
 plc4j/examples/pom.xml                             |    4 +-
 plc4j/integrations/apache-calcite/pom.xml          |    9 +-
 .../java/org/apache/plc4x/DriverManagerTest.java   |    1 -
 .../java/org/apache/plc4x/Plc4XBaseTableTest.java  |    2 +-
 .../apache-calcite/src/test/resources/example.yml  |    4 +-
 plc4j/integrations/apache-camel/pom.xml            |   14 +-
 .../java/org/apache/plc4x/camel/MockDriver.java    |   15 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/integrations/apache-edgent/pom.xml           |   29 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |    4 +-
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  551 ++++++++++
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  144 +++
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  552 -----------
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  144 ---
 .../apache/plc4x/edgent/mock/MockConnection.java   |  155 ---
 .../org/apache/plc4x/edgent/mock/MockDriver.java   |   48 -
 .../org/apache/plc4x/edgent/mock/MockField.java    |   62 --
 .../apache/plc4x/edgent/mock/MockFieldHandler.java |  104 --
 .../apache/plc4x/edgent/mock/MockFieldItem.java    |   34 -
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 plc4j/integrations/apache-kafka/README.md          |    2 +-
 plc4j/integrations/apache-kafka/pom.xml            |   28 +-
 .../apache-nifi/nifi-plc4x-nar/pom.xml             |   24 +-
 .../apache-nifi/nifi-plc4x-processors/pom.xml      |    4 +-
 plc4j/integrations/apache-nifi/pom.xml             |    2 +-
 plc4j/integrations/logstash-plugin/pom.xml         |   36 +-
 plc4j/integrations/pom.xml                         |    2 +-
 plc4j/karaf-features/karaf-itest/pom.xml           |    6 +-
 plc4j/karaf-features/pom.xml                       |    6 +-
 plc4j/karaf-features/s7/pom.xml                    |    2 +-
 .../karaf-features/s7/src/main/feature/feature.xml |    5 +-
 .../java/org/apache/plc4x/karaf/FeatureTest.java   |   91 --
 plc4j/pom.xml                                      |   11 +-
 plc4j/protocols/ads/pom.xml                        |   17 +-
 .../plc4x/java/ads/api/serial/AmsSerialFrame.java  |    2 +-
 .../plc4x/java/ads/model/AdsPlcFieldHandler.java   |  168 ++--
 .../java/ads/model/AdsSubscriptionHandle.java      |    4 +-
 .../java/ads/protocol/Ads2PayloadProtocol.java     |  107 +-
 .../java/ads/protocol/Payload2TcpProtocol.java     |   30 +-
 .../plc4x/java/ads/protocol/Plc4x2AdsProtocol.java |   29 +-
 .../ads/protocol/util/LittleEndianDecoder.java     |  206 +++-
 .../protocol/util/SingleMessageRateLimiter.java    |    2 +-
 .../protocol/util/LittleEndianDecoderSpec.groovy   |   99 --
 .../util/LittleEndianDecoderSpecHurz.groovy        |   99 ++
 .../protocol/util/LittleEndianEncoderSpec.groovy   |   53 -
 .../util/LittleEndianEncoderSpecHurz.groovy        |   53 +
 .../java/ads/model/AdsPlcFieldHandlerTest.java     |    5 +-
 ...load2SerialProtocolExampleConversationTest.java |    8 +-
 .../java/ads/protocol/Payload2TcpProtocolTest.java |   20 +
 .../java/ads/protocol/Plc4x2AdsProtocolTest.java   |    4 +-
 .../java/ads/protocol/util/DigestUtilTest.java     |    5 +-
 plc4j/protocols/benchmarks/pom.xml                 |    4 +-
 plc4j/protocols/delta-v/pom.xml                    |    2 +-
 plc4j/protocols/driver-bases/base/pom.xml          |  101 --
 .../base/GeneratedDriverByteToMessageCodec.java    |   79 --
 .../plc4x/java/base/PlcByteToMessageCodec.java     |   59 --
 .../plc4x/java/base/PlcMessageToMessageCodec.java  |   60 --
 .../base/connection/AbstractPlcConnection.java     |  105 --
 .../plc4x/java/base/connection/ChannelFactory.java |   33 -
 .../base/connection/DefaultPlcFieldHandler.java    |  101 --
 .../java/base/connection/NettyPlcConnection.java   |  132 ---
 .../java/base/connection/PlcFieldHandler.java      |   60 --
 .../plc4x/java/base/events/ConnectEvent.java       |   22 -
 .../plc4x/java/base/events/ConnectedEvent.java     |   22 -
 .../messages/DefaultPlcProprietaryRequest.java     |   43 -
 .../messages/DefaultPlcProprietaryResponse.java    |   42 -
 .../java/base/messages/DefaultPlcReadRequest.java  |  113 ---
 .../java/base/messages/DefaultPlcReadResponse.java |  583 -----------
 .../base/messages/DefaultPlcSubscriptionEvent.java |   55 -
 .../messages/DefaultPlcSubscriptionRequest.java    |  168 ----
 .../messages/DefaultPlcSubscriptionResponse.java   |   90 --
 .../messages/DefaultPlcUnsubscriptionRequest.java  |   90 --
 .../messages/DefaultPlcUnsubscriptionResponse.java |   36 -
 .../java/base/messages/DefaultPlcWriteRequest.java |  275 -----
 .../base/messages/DefaultPlcWriteResponse.java     |   62 --
 .../base/messages/InternalPlcFieldRequest.java     |   31 -
 .../base/messages/InternalPlcFieldResponse.java    |   26 -
 .../java/base/messages/InternalPlcMessage.java     |   23 -
 .../messages/InternalPlcProprietaryRequest.java    |   22 -
 .../messages/InternalPlcProprietaryResponse.java   |   22 -
 .../java/base/messages/InternalPlcReadRequest.java |   26 -
 .../base/messages/InternalPlcReadResponse.java     |   31 -
 .../java/base/messages/InternalPlcRequest.java     |   24 -
 .../java/base/messages/InternalPlcResponse.java    |   25 -
 .../messages/InternalPlcSubscriptionEvent.java     |   25 -
 .../messages/InternalPlcSubscriptionRequest.java   |   36 -
 .../messages/InternalPlcSubscriptionResponse.java  |   30 -
 .../messages/InternalPlcUnsubscriptionRequest.java |   29 -
 .../InternalPlcUnsubscriptionResponse.java         |   25 -
 .../base/messages/InternalPlcWriteRequest.java     |   36 -
 .../base/messages/InternalPlcWriteResponse.java    |   28 -
 .../java/base/messages/PlcProprietaryRequest.java  |   25 -
 .../java/base/messages/PlcProprietaryResponse.java |   25 -
 .../java/base/messages/PlcProprietarySender.java   |   25 -
 .../java/base/messages/PlcProtocolMessage.java     |   25 -
 .../plc4x/java/base/messages/PlcRawMessage.java    |   46 -
 .../apache/plc4x/java/base/messages/PlcReader.java |   40 -
 .../java/base/messages/PlcRequestContainer.java    |   85 --
 .../plc4x/java/base/messages/PlcSubscriber.java    |   63 --
 .../apache/plc4x/java/base/messages/PlcWriter.java |   40 -
 .../base/messages/items/BaseDefaultFieldItem.java  |  193 ----
 .../messages/items/DefaultBigDecimalFieldItem.java |  171 ----
 .../messages/items/DefaultBigIntegerFieldItem.java |  171 ----
 .../messages/items/DefaultBooleanFieldItem.java    |  184 ----
 .../messages/items/DefaultByteArrayFieldItem.java  |   58 --
 .../base/messages/items/DefaultByteFieldItem.java  |  151 ---
 .../messages/items/DefaultDoubleFieldItem.java     |  158 ---
 .../base/messages/items/DefaultFloatFieldItem.java |  156 ---
 .../messages/items/DefaultIntegerFieldItem.java    |  153 ---
 .../messages/items/DefaultLocalDateFieldItem.java  |   50 -
 .../items/DefaultLocalDateTimeFieldItem.java       |   78 --
 .../messages/items/DefaultLocalTimeFieldItem.java  |   50 -
 .../base/messages/items/DefaultLongFieldItem.java  |  154 ---
 .../base/messages/items/DefaultShortFieldItem.java |  151 ---
 .../messages/items/DefaultStringFieldItem.java     |   48 -
 .../base/model/DefaultPlcConsumerRegistration.java |   85 --
 .../base/model/DefaultPlcSubscriptionHandle.java   |   62 --
 .../model/InternalPlcConsumerRegistration.java     |   32 -
 .../base/model/InternalPlcSubscriptionHandle.java  |   25 -
 .../java/base/model/SubscriptionPlcField.java      |   55 -
 .../SingleItemToSingleRequestProtocol.java         |  645 ------------
 .../messages/DefaultPlcReadResponseSpec.groovy     |   86 --
 .../base/messages/items/DefaultItemsSpec.groovy    |  217 ----
 .../base/connection/AbstractPlcConnectionTest.java |  101 --
 .../base/connection/NettyPlcConnectionTest.java    |   92 --
 .../messages/DefaultPlcProprietaryRequestTest.java |   48 -
 .../DefaultPlcProprietaryResponseTest.java         |   50 -
 .../base/messages/DefaultPlcReadRequestTest.java   |  116 ---
 .../base/messages/DefaultPlcReadResponseTest.java  |  120 ---
 .../messages/DefaultPlcSubscriptionEventTest.java  |   68 --
 .../DefaultPlcSubscriptionRequestTest.java         |  157 ---
 .../DefaultPlcSubscriptionResponseTest.java        |  124 ---
 .../DefaultPlcUnsubscriptionRequestTest.java       |   91 --
 .../DefaultPlcUnsubscriptionResponseTest.java      |   48 -
 .../base/messages/DefaultPlcWriteRequestTest.java  |   70 --
 .../base/messages/DefaultPlcWriteResponseTest.java |   91 --
 .../java/base/messages/PlcRawMessageTest.java      |   57 --
 .../base/messages/PlcRequestContainerTest.java     |   82 --
 .../messages/items/DefaultLongFieldItemTest.java   |  114 ---
 .../model/DefaultPlcConsumerRegistrationTest.java  |   88 --
 .../model/DefaultPlcSubscriptionHandleTest.java    |   73 --
 .../java/base/model/SubscriptionPlcFieldTest.java  |   68 --
 .../SingleItemToSingleRequestProtocolTest.java     |  729 --------------
 ...spockframework.report.IReportCreator.properties |   66 --
 plc4j/protocols/driver-bases/pcap-socket/pom.xml   |   67 --
 .../java/base/connection/PcapChannelFactory.java   |  101 --
 plc4j/protocols/driver-bases/pom.xml               |   46 -
 plc4j/protocols/driver-bases/raw-socket/pom.xml    |   67 --
 .../base/connection/RawSocketChannelFactory.java   |  110 --
 plc4j/protocols/driver-bases/serial/pom.xml        |   81 --
 .../connection/connection/SerialChannel.java       |  635 ------------
 .../connection/SerialChannelFactory.java           |   83 --
 .../connection/SerialChannelHandler.java           |  172 ----
 .../connection/SerialPollingSelector.java          |  176 ----
 .../connection/connection/SerialSelectionKey.java  |   80 --
 .../connection/SerialSelectorProvider.java         |   68 --
 .../connection/connection/SerialSocketAddress.java |   47 -
 .../connection/connection/SerialSocketChannel.java |  158 ---
 .../base/connection/SerialChannelFactoryTest.java  |  111 ---
 plc4j/protocols/driver-bases/tcp/pom.xml           |   62 --
 .../tcp/connection/TcpSocketChannelFactory.java    |  112 ---
 plc4j/protocols/driver-bases/test/pom.xml          |   97 --
 .../org/apache/plc4x/java/mock/MockDevice.java     |   50 -
 .../java/org/apache/plc4x/java/mock/MockField.java |   49 -
 .../apache/plc4x/java/mock/MockFieldHandler.java   |  103 --
 .../org/apache/plc4x/java/mock/MockFieldItem.java  |   34 -
 .../apache/plc4x/java/mock/PlcMockConnection.java  |  193 ----
 .../org/apache/plc4x/java/mock/PlcMockDriver.java  |   62 --
 .../plc4x/java/mock/connection/MockConnection.java |   41 -
 .../java/mock/connection/TestChannelFactory.java   |   45 -
 .../plc4x/java/mock/MockFieldHandlerTest.java      |  111 ---
 .../apache/plc4x/java/mock/MockFieldItemTest.java  |   31 -
 .../org/apache/plc4x/java/mock/MockFieldTest.java  |   48 -
 .../plc4x/java/mock/PlcMockConnectionTest.java     |  164 ---
 .../apache/plc4x/java/mock/PlcMockDriverTest.java  |   96 --
 plc4j/protocols/driver-bases/udp/pom.xml           |   62 --
 .../base/connection/UdpSocketChannelFactory.java   |  110 --
 plc4j/protocols/ethernet-ip/pom.xml                |    8 +-
 .../ethernetip/netty/Plc4XEtherNetIpProtocol.java  |   16 +-
 .../ethernetip/netty/util/EnipPlcFieldHandler.java |   28 +-
 plc4j/protocols/iso-on-tcp/pom.xml                 |   14 +-
 .../java/isoontcp/protocol/IsoOnTcpProtocol.java   |    4 +-
 .../isoontcp/protocol/model/IsoOnTcpMessage.java   |    2 +-
 plc4j/protocols/iso-tp/pom.xml                     |   13 +-
 .../plc4x/java/isotp/protocol/IsoTPProtocol.java   |    4 +-
 .../java/isotp/protocol/model/IsoTPMessage.java    |    2 +-
 .../java/isotp/protocol/model/tpdus/DataTpdu.java  |    2 +-
 .../java/isotp/protocol/model/tpdus/Tpdu.java      |    4 +-
 plc4j/protocols/modbus/pom.xml                     |   17 +-
 .../items/DefaultModbusByteArrayFieldItem.java     |  220 ----
 .../items/DefaultModbusByteArrayPlcList.java       |  218 ++++
 .../java/modbus/netty/Plc4XModbusProtocol.java     |   82 +-
 .../java/modbus/util/ModbusPlcFieldHandler.java    |   33 +-
 .../plc4x/java/modbus/ManualPlc4XModbusTest.java   |    6 +-
 .../items/DefaultModbusByteArrayFieldItemTest.java |  136 ---
 .../items/DefaultModbusByteArrayPlcValueTest.java  |  170 ++++
 .../java/modbus/netty/Plc4XModbusProtocolTest.java |   57 +-
 plc4j/protocols/pom.xml                            |    7 +-
 plc4j/protocols/s7/pom.xml                         |   13 +-
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  337 ++++---
 .../java/s7/netty/model/messages/S7Message.java    |    4 +-
 .../s7/netty/model/messages/S7RequestMessage.java  |    2 +-
 .../messages/SetupCommunicationRequestMessage.java |    2 +-
 .../strategies/DefaultS7MessageProcessor.java      |    2 +-
 .../java/s7/netty/util/S7PlcFieldHandler.java      |  142 +--
 .../plc4x/java/s7/netty/Plc4XS7ProtocolSpec.groovy |   14 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |    2 +-
 .../java/s7/netty/util/S7PlcFieldHandlerTest.java  |   44 +-
 plc4j/spi/pom.xml                                  |   86 ++
 .../apache/plc4x/java/spi/ConversationContext.java |  102 ++
 .../spi/GeneratedDriverByteToMessageCodec.java     |   98 ++
 .../apache/plc4x/java/spi/Plc4xNettyWrapper.java   |  224 +++++
 .../apache/plc4x/java/spi/Plc4xProtocolBase.java   |   80 ++
 .../plc4x/java/spi/PlcMessageToMessageCodec.java   |   60 ++
 .../java/spi/configuration/Configuration.java      |   23 +
 .../spi/configuration/ConfigurationFactory.java    |  241 +++++
 .../java/spi/configuration/HasConfiguration.java   |   38 +
 .../annotations/ConfigurationParameter.java        |   33 +
 .../spi/configuration/annotations/Required.java    |   30 +
 .../annotations/defaults/BooleanDefaultValue.java  |   33 +
 .../annotations/defaults/DoubleDefaultValue.java   |   33 +
 .../annotations/defaults/IntDefaultValue.java      |   33 +
 .../annotations/defaults/LongDefaultValue.java     |   33 +
 .../annotations/defaults/StringDefaultValue.java   |   33 +
 .../java/spi/connection/AbstractPlcConnection.java |  193 ++++
 .../plc4x/java/spi/connection/ChannelFactory.java  |   37 +
 .../spi/connection/DefaultNettyPlcConnection.java  |  187 ++++
 .../spi/connection/DefaultPlcFieldHandler.java     |   97 ++
 .../java/spi/connection/GeneratedDriverBase.java   |  131 +++
 .../connection/GeneratedProtocolMessageCodec.java  |   62 ++
 .../java/spi/connection/NettyChannelFactory.java   |  157 +++
 .../plc4x/java/spi/connection/PlcFieldHandler.java |   58 ++
 .../spi/connection/ProtocolStackConfigurer.java    |   31 +
 .../connection/SingleProtocolStackConfigurer.java  |  156 +++
 .../java/spi/events/CloseConnectionEvent.java      |   23 +
 .../apache/plc4x/java/spi/events/ConnectEvent.java |   22 +
 .../plc4x/java/spi/events/ConnectedEvent.java      |   22 +
 .../plc4x/java/spi/events/DisconnectEvent.java     |   39 +
 .../plc4x/java/spi/events/DisconnectedEvent.java   |   22 +
 .../exceptions/InternalPlcRuntimeException.java    |   41 +
 .../java/spi/generation/EvaluationHelper.java      |   58 ++
 .../apache/plc4x/java/spi/generation/Message.java  |   30 +
 .../plc4x/java/spi/generation/MessageIO.java       |   23 +
 .../plc4x/java/spi/generation/MessageInput.java    |   25 +
 .../plc4x/java/spi/generation/MessageOutput.java   |   25 +
 .../plc4x/java/spi/generation/ParseException.java  |   32 +
 .../plc4x/java/spi/generation/ReadBuffer.java      |  272 +++++
 .../plc4x/java/spi/generation/StaticHelper.java    |  139 +++
 .../plc4x/java/spi/generation/WriteBuffer.java     |  222 +++++
 .../java/spi/generation/io/MyDefaultBitInput.java  |   38 +
 .../java/spi/generation/io/MyDefaultBitOutput.java |   37 +
 .../spi/internal/DefaultExpectRequestContext.java  |  128 +++
 .../spi/internal/DefaultSendRequestContext.java    |  138 +++
 .../java/spi/internal/HandlerRegistration.java     |   86 ++
 .../spi/messages/DefaultPlcProprietaryRequest.java |   43 +
 .../messages/DefaultPlcProprietaryResponse.java    |   42 +
 .../java/spi/messages/DefaultPlcReadRequest.java   |  118 +++
 .../java/spi/messages/DefaultPlcReadResponse.java  |  616 ++++++++++++
 .../spi/messages/DefaultPlcSubscriptionEvent.java  |   55 +
 .../messages/DefaultPlcSubscriptionRequest.java    |  173 ++++
 .../messages/DefaultPlcSubscriptionResponse.java   |   90 ++
 .../messages/DefaultPlcUnsubscriptionRequest.java  |   90 ++
 .../messages/DefaultPlcUnsubscriptionResponse.java |   36 +
 .../java/spi/messages/DefaultPlcWriteRequest.java  |  276 ++++++
 .../java/spi/messages/DefaultPlcWriteResponse.java |   62 ++
 .../java/spi/messages/InternalPlcFieldRequest.java |   31 +
 .../spi/messages/InternalPlcFieldResponse.java     |   26 +
 .../java/spi/messages/InternalPlcMessage.java      |   23 +
 .../messages/InternalPlcProprietaryRequest.java    |   22 +
 .../messages/InternalPlcProprietaryResponse.java   |   22 +
 .../java/spi/messages/InternalPlcReadRequest.java  |   26 +
 .../java/spi/messages/InternalPlcReadResponse.java |   32 +
 .../java/spi/messages/InternalPlcRequest.java      |   24 +
 .../java/spi/messages/InternalPlcResponse.java     |   25 +
 .../spi/messages/InternalPlcSubscriptionEvent.java |   25 +
 .../messages/InternalPlcSubscriptionRequest.java   |   36 +
 .../messages/InternalPlcSubscriptionResponse.java  |   30 +
 .../messages/InternalPlcUnsubscriptionRequest.java |   29 +
 .../InternalPlcUnsubscriptionResponse.java         |   25 +
 .../java/spi/messages/InternalPlcWriteRequest.java |   36 +
 .../spi/messages/InternalPlcWriteResponse.java     |   28 +
 .../java/spi/messages/PlcProprietaryRequest.java   |   25 +
 .../java/spi/messages/PlcProprietaryResponse.java  |   25 +
 .../java/spi/messages/PlcProprietarySender.java    |   25 +
 .../java/spi/messages/PlcProtocolMessage.java      |   25 +
 .../plc4x/java/spi/messages/PlcRawMessage.java     |   46 +
 .../apache/plc4x/java/spi/messages/PlcReader.java  |   40 +
 .../java/spi/messages/PlcRequestContainer.java     |   85 ++
 .../plc4x/java/spi/messages/PlcSubscriber.java     |   63 ++
 .../apache/plc4x/java/spi/messages/PlcWriter.java  |   40 +
 .../spi/model/DefaultPlcConsumerRegistration.java  |   85 ++
 .../spi/model/DefaultPlcSubscriptionHandle.java    |   62 ++
 .../spi/model/InternalPlcConsumerRegistration.java |   32 +
 .../spi/model/InternalPlcSubscriptionHandle.java   |   25 +
 .../plc4x/java/spi/model/SubscriptionPlcField.java |   55 +
 .../spi/optimizer/RequestTransactionManager.java   |  194 ++++
 .../SingleItemToSingleRequestProtocol.java         |  668 +++++++++++++
 .../apache/plc4x/java/spi/request/PlcRequest.java  |   28 +
 .../apache/plc4x/java/spi/transport/Transport.java |   32 +
 .../java/spi/transport/TransportConfiguration.java |   25 +
 .../org/apache/plc4x/java/spi/types/FieldType.java |   47 +
 .../internal/DefaultSendRequestContextTest.java    |  116 +++
 .../optimizer/RequestTransactionManagerTest.java   |  170 ++++
 .../java/spi/parser/ConnectionParserTest.java      |   72 ++
 plc4j/src/site/asciidoc/index.adoc                 |  100 --
 plc4j/tools/connection-pool/pom.xml                |   52 +
 .../plc4x/java/utils/connectionpool/PoolKey.java   |    0
 .../java/utils/connectionpool/PoolKeyFactory.java  |    0
 .../connectionpool/PooledPlcConnectionFactory.java |    0
 .../connectionpool/PooledPlcDriverManager.java     |    0
 .../utils/connectionpool/PoolKeyFactoryTest.java   |    0
 .../utils/connectionpool/PooledDummyDriver.java    |   52 +
 .../connectionpool/PooledPlcDriverManagerTest.java |  367 +++++++
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 .../connection-pool/src/test/resources/logback.xml |    0
 plc4j/tools/interop/pom.xml                        |  217 ++++
 .../interop/src/assembly/assembly.xml              |    0
 .../java/org/apache/plc4x/interop/impl/Client.java |    0
 .../org/apache/plc4x/interop/impl/Handler.java     |  163 +++
 .../java/org/apache/plc4x/interop/impl/Server.java |   97 ++
 plc4j/tools/opm/pom.xml                            |   94 ++
 .../org/apache/plc4x/java/opm/AliasRegistry.java   |    0
 .../org/apache/plc4x/java/opm/OPMException.java    |    0
 .../java/org/apache/plc4x/java/opm/OpmUtils.java   |    0
 .../java/org/apache/plc4x/java/opm/PlcEntity.java  |    0
 .../plc4x/java/opm/PlcEntityInterceptor.java       |  565 +++++++++++
 .../apache/plc4x/java/opm/PlcEntityManager.java    |    0
 .../java/org/apache/plc4x/java/opm/PlcField.java   |    0
 .../apache/plc4x/java/opm/SimpleAliasRegistry.java |    0
 .../opm/src/site/asciidoc/opm/using-opm.adoc       |    0
 plc4j/{utils => tools}/opm/src/site/site.xml       |    0
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  119 +++
 .../apache/plc4x/java/opm/OPMExceptionTest.java    |    0
 .../org/apache/plc4x/java/opm/OpmUtilsTest.java    |    0
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  233 +++++
 .../java/opm/PlcEntityManagerComplexTest.java      |  470 +++++++++
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  318 ++++++
 .../plc4x/java/opm/SimpleAliasRegistryTest.java    |    0
 .../opm/src/test/resources/logback.xml             |    0
 plc4j/tools/pom.xml                                |   52 +
 plc4j/{utils => tools}/scraper/README.md           |    0
 plc4j/tools/scraper/pom.xml                        |  133 +++
 .../apache/plc4x/java/scraper/ResultHandler.java   |    0
 .../org/apache/plc4x/java/scraper/ScrapeJob.java   |    0
 .../apache/plc4x/java/scraper/ScrapeJobImpl.java   |    0
 .../org/apache/plc4x/java/scraper/Scraper.java     |    0
 .../org/apache/plc4x/java/scraper/ScraperImpl.java |    0
 .../org/apache/plc4x/java/scraper/ScraperTask.java |    0
 .../apache/plc4x/java/scraper/ScraperTaskImpl.java |    0
 .../java/scraper/config/JobConfiguration.java      |    0
 .../config/JobConfigurationClassicImpl.java        |    0
 .../config/JobConfigurationClassicImplBuilder.java |    0
 .../java/scraper/config/JobConfigurationImpl.java  |    0
 .../java/scraper/config/ScraperConfiguration.java  |    0
 .../config/ScraperConfigurationClassicImpl.java    |    0
 .../ScraperConfigurationClassicImplBuilder.java    |    0
 .../JobConfigurationTriggeredImpl.java             |    0
 .../JobConfigurationTriggeredImplBuilder.java      |    0
 .../ScraperConfigurationTriggeredImpl.java         |    0
 .../ScraperConfigurationTriggeredImplBuilder.java  |    0
 .../exception/ScraperConfigurationException.java   |    0
 .../java/scraper/exception/ScraperException.java   |    0
 .../triggeredscraper/TriggeredScrapeJobImpl.java   |    0
 .../triggeredscraper/TriggeredScraperImpl.java     |  366 +++++++
 .../triggeredscraper/TriggeredScraperMBean.java    |    0
 .../triggeredscraper/TriggeredScraperTask.java     |    0
 .../TriggeredScraperTaskMBean.java                 |    0
 .../triggerhandler/TriggerConfiguration.java       |  722 ++++++++++++++
 .../triggerhandler/TriggerHandler.java             |    0
 .../triggerhandler/TriggerHandlerImpl.java         |    0
 .../triggerhandler/collector/TriggerCollector.java |    0
 .../collector/TriggerCollectorImpl.java            |    0
 .../scraper/util/PercentageAboveThreshold.java     |    0
 .../apache/plc4x/java/s7/ManualS7PlcDriverMT.java  |    0
 .../java/scraper/ScraperConfigurationTest.java     |    0
 .../apache/plc4x/java/scraper/ScraperRunner.java   |    0
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  113 +++
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  175 ++++
 .../plc4x/java/scraper/TriggeredScraperRunner.java |    0
 .../java/scraper/TriggeredScraperRunnerModbus.java |   62 ++
 .../config/ScraperConfigurationBuilderTest.java    |    0
 .../triggeredscraper/TriggeredScraperImplTest.java |  118 +++
 .../triggerhandler/TriggerConfigurationTest.java   |  150 +++
 .../scraper/src/test/resources/config.json         |    0
 .../scraper/src/test/resources/config.yml          |    0
 .../scraper/src/test/resources/example.yml         |    0
 .../test/resources/example_triggered_scraper.yml   |    0
 .../resources/example_triggered_scraper_modbus.yml |    0
 .../src/test/resources/example_with_strings.yml    |    0
 .../scraper/src/test/resources/logback-test.xml    |    0
 .../scraper/src/test/resources/logback.xml         |    0
 .../src/test/resources/mock-scraper-config.yml     |    0
 plc4j/transports/pcap-socket/pom.xml               |   63 ++
 .../java/transport/pcap/PcapChannelFactory.java    |   68 ++
 .../plc4x/java/transport/pcap/PcapTransport.java   |   50 +
 .../transport/pcap/PcapTransportConfiguration.java |   34 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/pom.xml                           |   45 +
 plc4j/transports/raw-socket/pom.xml                |   58 ++
 .../rawsocket/RawSocketChannelFactory.java         |   57 ++
 .../transport/rawsocket/RawSocketTransport.java    |   43 +
 .../rawsocket/RawSocketTransportConfiguration.java |   27 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/serial/pom.xml                    |   83 ++
 .../plc4x/java/transport/serial/SerialChannel.java |  636 ++++++++++++
 .../transport/serial/SerialChannelFactory.java     |   65 ++
 .../transport/serial/SerialChannelHandler.java     |  181 ++++
 .../transport/serial/SerialPollingSelector.java    |  176 ++++
 .../java/transport/serial/SerialSelectionKey.java  |   86 ++
 .../transport/serial/SerialSelectorProvider.java   |   68 ++
 .../java/transport/serial/SerialSocketAddress.java |   50 +
 .../java/transport/serial/SerialSocketChannel.java |  158 +++
 .../java/transport/serial/SerialTransport.java     |   42 +
 .../serial/SerialTransportConfiguration.java       |   25 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 .../base/connection/SerialChannelFactoryTest.java  |  116 +++
 plc4j/transports/tcp/pom.xml                       |   58 ++
 .../java/transport/tcp/TcpChannelFactory.java      |   62 ++
 .../plc4x/java/transport/tcp/TcpTransport.java     |   81 ++
 .../transport/tcp/TcpTransportConfiguration.java   |   49 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/test/pom.xml                      |   84 ++
 .../java/transport/test/TestChannelFactory.java    |   58 ++
 .../java/transport/test/TestSocketAddress.java     |   29 +
 .../plc4x/java/transport/test/TestTransport.java   |   42 +
 .../transport/test/TestTransportConfiguration.java |   25 +
 ...spockframework.report.IReportCreator.properties |    0
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/udp/pom.xml                       |   66 ++
 .../java/transport/udp/UdpChannelFactory.java      |   65 ++
 .../plc4x/java/transport/udp/UdpTransport.java     |   81 ++
 .../transport/udp/UdpTransportConfiguration.java   |   31 +
 .../udp/protocol/DatagramUnpackingHandler.java     |   39 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/utils/connection-pool/pom.xml                |   51 -
 .../utils/connectionpool/PooledDummyDriver.java    |   52 -
 .../connectionpool/PooledPlcDriverManagerTest.java |  367 -------
 plc4j/utils/driver-base-java/pom.xml               |   42 -
 .../github/jinahya/bit/io/MyDefaultBitInput.java   |   35 -
 .../apache/plc4x/java/utils/EvaluationHelper.java  |   53 -
 .../java/org/apache/plc4x/java/utils/Message.java  |   26 -
 .../org/apache/plc4x/java/utils/MessageIO.java     |   23 -
 .../org/apache/plc4x/java/utils/MessageInput.java  |   25 -
 .../org/apache/plc4x/java/utils/MessageOutput.java |   25 -
 .../apache/plc4x/java/utils/ParseException.java    |   32 -
 .../org/apache/plc4x/java/utils/ReadBuffer.java    |  219 ----
 .../org/apache/plc4x/java/utils/WriteBuffer.java   |  208 ----
 plc4j/utils/interop/pom.xml                        |  216 ----
 .../org/apache/plc4x/interop/impl/Handler.java     |  160 ---
 .../java/org/apache/plc4x/interop/impl/Server.java |   91 --
 plc4j/utils/opm/pom.xml                            |  103 --
 .../plc4x/java/opm/PlcEntityInterceptor.java       |  569 -----------
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  119 ---
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  214 ----
 .../java/opm/PlcEntityManagerComplexTest.java      |  460 ---------
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  318 ------
 plc4j/utils/pcap-sockets/pom.xml                   |    2 +-
 .../utils/pcapsockets/netty/PacketHandler.java     |   27 -
 .../utils/pcapsockets/netty/PcapSocketAddress.java |   21 +-
 .../utils/pcapsockets/netty/PcapSocketChannel.java |   20 +-
 .../pcapsockets/netty/PcapSocketChannelConfig.java |   52 +-
 .../pcapsockets/netty/PcapSocketChannelOption.java |   21 +-
 .../pcapsockets/netty/TcpIpPacketHandler.java      |   41 -
 .../pcapsockets/netty/UdpIpPacketHandler.java      |   41 -
 .../pcapsockets/netty/handlers/PacketHandler.java  |   27 +
 .../netty/handlers/TcpIpPacketHandler.java         |   41 +
 .../netty/handlers/UdpIpPacketHandler.java         |   41 +
 plc4j/utils/pom.xml                                |   22 +-
 plc4j/utils/protocol-test-utils/pom.xml            |   72 --
 .../protocol/test/ProtocolTestsuiteRunner.java     |  175 ----
 .../exceptions/ProtocolTestsuiteException.java     |   32 -
 .../protocol/test/model/ProtocolTestsuite.java     |   48 -
 .../apache/plc4x/protocol/test/model/Testcase.java |   61 --
 .../src/main/resources/schemas/testsuite.xsd       |   55 -
 plc4j/utils/raw-sockets/pom.xml                    |    4 +-
 .../utils/rawsockets/netty/RawSocketAddress.java   |    1 +
 .../utils/rawsockets/netty/RawSocketChannel.java   |    3 +-
 plc4j/utils/scraper/pom.xml                        |  145 ---
 .../triggeredscraper/TriggeredScraperImpl.java     |  367 -------
 .../triggerhandler/TriggerConfiguration.java       |  722 --------------
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  113 ---
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  175 ----
 .../java/scraper/TriggeredScraperRunnerModbus.java |   69 --
 .../triggeredscraper/TriggeredScraperImplTest.java |  118 ---
 .../triggerhandler/TriggerConfigurationTest.java   |  151 ---
 plc4j/utils/test-utils/pom.xml                     |   39 +-
 .../test/protocol/ProtocolTestsuiteRunner.java     |  238 +++++
 .../exceptions/ProtocolTestsuiteException.java     |   32 +
 .../test/protocol/model/ProtocolTestsuite.java     |   48 +
 .../apache/plc4x/test/protocol/model/Testcase.java |   68 ++
 .../src/main/resources/schemas/testsuite.xsd       |   63 ++
 pom.xml                                            |  215 +---
 protocols/ab-eth/pom.xml                           |    4 +-
 protocols/amsads/pom.xml                           |   43 +
 .../plc4x/protocol/amsads/AMSADSProtocol.java      |   46 +
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |   38 +
 .../main/resources/protocols/amsads/amsads.mspec   |  350 +++++++
 protocols/bacnetip/pom.xml                         |    4 +-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  176 ++--
 protocols/df1/pom.xml                              |    4 +-
 protocols/knxnetip/pom.xml                         |    4 +-
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    2 +-
 .../resources/protocols/knxnetip/knxnetip.mspec    |  352 ++++++-
 protocols/modbus/pom.xml                           |   43 +
 .../plc4x/protocol/modbus/ModbusProtocol.java      |   46 +
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |   19 +
 .../main/resources/protocols/modbus/modbus.mspec   |  269 +++++
 protocols/pom.xml                                  |   20 +-
 protocols/proxy/pom.xml                            |    2 +-
 protocols/s7/pom.xml                               |    4 +-
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    2 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |  208 +++-
 sandbox/.gitignore                                 |    1 +
 sandbox/code-gen/pom.xml                           |    2 +-
 .../plc4x/codegen/ast/AssignementExpression.java   |    6 +-
 .../apache/plc4x/codegen/ast/BinaryExpression.java |    6 +-
 .../java/org/apache/plc4x/codegen/ast/Block.java   |    6 +-
 .../apache/plc4x/codegen/ast/CallExpression.java   |    6 +-
 .../apache/plc4x/codegen/ast/ClassDeclaration.java |    6 +-
 .../plc4x/codegen/ast/ConstantExpression.java      |    6 +-
 .../plc4x/codegen/ast/ConstructorDeclaration.java  |    6 +-
 .../plc4x/codegen/ast/DeclarationStatement.java    |    6 +-
 .../apache/plc4x/codegen/ast/FieldDeclaration.java |    6 +-
 .../apache/plc4x/codegen/ast/FieldReference.java   |    6 +-
 .../org/apache/plc4x/codegen/ast/FileNode.java     |    6 +-
 .../org/apache/plc4x/codegen/ast/IfStatement.java  |    6 +-
 .../apache/plc4x/codegen/ast/JavaGenerator.java    |   69 +-
 .../org/apache/plc4x/codegen/ast/LineComment.java  |    6 +-
 .../java/org/apache/plc4x/codegen/ast/Method.java  |    6 +-
 .../apache/plc4x/codegen/ast/MethodDefinition.java |    6 +-
 .../apache/plc4x/codegen/ast/NewExpression.java    |    6 +-
 .../plc4x/codegen/ast/ParameterExpression.java     |    6 +-
 .../org/apache/plc4x/codegen/ast/Primitive.java    |    6 +-
 .../apache/plc4x/codegen/ast/PythonGenerator.java  |   69 +-
 .../apache/plc4x/codegen/ast/ReturnStatement.java  |    6 +-
 .../apache/plc4x/codegen/ast/TypeDefinition.java   |    6 +-
 .../plc4x/codegen/python/AbstractNodeVisitor.java  |   96 +-
 .../org/apache/plc4x/codegen/python/AddNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/AliasNode.java |    3 +-
 .../plc4x/codegen/python/AnnAssignerNode.java      |    3 +-
 .../org/apache/plc4x/codegen/python/ArgNode.java   |    3 +-
 .../apache/plc4x/codegen/python/ArgumentsNode.java |    3 +-
 .../apache/plc4x/codegen/python/AssignNode.java    |    3 +-
 .../apache/plc4x/codegen/python/AttributeNode.java |    3 +-
 .../apache/plc4x/codegen/python/AugAssignNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/BinOpNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/CallNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ClassDefNode.java  |    3 +-
 .../apache/plc4x/codegen/python/CompareNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/EqNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/ExprNode.java  |    3 +-
 .../plc4x/codegen/python/FunctionDefNode.java      |    3 +-
 .../org/apache/plc4x/codegen/python/IfNode.java    |    3 +-
 .../plc4x/codegen/python/ImportFromNode.java       |    3 +-
 .../apache/plc4x/codegen/python/KeywordNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/ListNode.java  |    3 +-
 .../org/apache/plc4x/codegen/python/LoadNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ModuleNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/MultNode.java  |    3 +-
 .../plc4x/codegen/python/NameConstantNode.java     |    3 +-
 .../org/apache/plc4x/codegen/python/NameNode.java  |    3 +-
 .../org/apache/plc4x/codegen/python/NotEqNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/NumNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/PassNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ReturnNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/StoreNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/StrNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/TupleNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/WhileNode.java |    3 +-
 .../org/apache/plc4x/codegen/ModuleNodeTest.java   |   33 +-
 sandbox/plc-simulator/pom.xml                      |   22 +-
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  137 +++
 .../server/s7/protocol/S7Step7Protocol.java        |   20 +-
 .../server/s7/protocol/S7Step7ServerProtocol.java  |    2 +-
 sandbox/plc4cpp/pom.xml                            |    4 +-
 sandbox/plc4net/api/pom.xml                        |    2 +-
 sandbox/plc4net/plc4net.driver/pom.xml             |    2 +-
 sandbox/plc4net/pom.xml                            |    2 +-
 sandbox/plc4py/pom.xml                             |    8 +-
 sandbox/pom.xml                                    |   18 +-
 sandbox/streampipes-connectors/env/development     |   27 -
 sandbox/streampipes-connectors/pom.xml             |  199 ----
 .../java/streampipes/bacnetip/BacNetIpAdapter.java |  372 -------
 .../streampipes/bacnetip/config/ConfigKeys.java    |   31 -
 .../bacnetip/config/ConnectWorkerConfig.java       |   83 --
 sandbox/test-java-amsads-driver/README.adoc        |   35 +
 sandbox/test-java-amsads-driver/pom.xml            |  178 ++++
 .../apache/plc4x/java/amsads/AMSADSPlcDriver.java  |   90 ++
 .../amsads/configuration/AdsConfiguration.java     |   74 ++
 .../connection/AdsAbstractPlcConnection.java       |  231 +++++
 .../amsads/connection/AdsConnectionFactory.java    |   58 ++
 .../amsads/connection/AdsSerialPlcConnection.java  |   60 ++
 .../amsads/connection/AdsTcpPlcConnection.java     |  365 +++++++
 .../apache/plc4x/java/amsads/field/AdsField.java   |   27 +
 .../plc4x/java/amsads/field/AdsFieldHandler.java   | 1047 ++++++++++++++++++++
 .../plc4x/java/amsads/field/DirectAdsField.java    |  142 +++
 .../plc4x/java/amsads/field/SymbolicAdsField.java  |  106 ++
 .../java/amsads/model/AdsSubscriptionHandle.java   |   85 ++
 .../java/amsads/protocol/Ads2PayloadProtocol.java  |   93 ++
 .../java/amsads/protocol/AdsProtocolLogic.java     |   41 +
 .../amsads/protocol/Payload2SerialProtocol.java    |  114 +++
 .../java/amsads/protocol/Payload2TcpProtocol.java  |   94 ++
 .../java/amsads/protocol/Plc4x2AdsProtocol.java    |  334 +++++++
 .../amsads/protocol/exception/AdsException.java    |   56 ++
 .../exception/AdsProtocolOverflowException.java    |   32 +
 .../java/amsads/protocol/util/DigestUtil.java      |   46 +
 .../amsads/protocol/util/LittleEndianDecoder.java  |  489 +++++++++
 .../amsads/protocol/util/LittleEndianEncoder.java  |  285 ++++++
 .../protocol/util/SingleMessageRateLimiter.java    |  124 +++
 .../java/amsads/protocol/util/package-info.java    |   22 +
 .../plc4x/java/amsads/types/AdsDataType.java       |  577 +++++++++++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../plc4x/java/amsads/AMSADSPlcDriverTest.java     |   42 +
 .../protocol/amsads/BenchmarkGeneratedDf1.java     |   76 ++
 .../plc4x/protocol/amsads/BenchmarkManualDf1.java  |  239 +++++
 .../org/apache/plc4x/protocol/amsads/Df1Test.java  |   31 +
 .../apache/plc4x/protocol/amsads/EndToEndTest.java |   56 ++
 .../org/apache/plc4x/protocol/amsads/IOTest.java   |   91 ++
 .../src/test/resources/testsuite/Df1Testsuite.xml  |    0
 sandbox/test-java-bacnetip-driver/pom.xml          |   42 +-
 .../plc4x/java/bacnetip/PassiveBacNetIpDriver.java |  101 +-
 .../PassiveBacNetIpConfiguration.java              |   73 ++
 .../bacnetip/connection/BacNetIpFieldHandler.java  |   36 -
 .../connection/PassiveBacNetIpPlcConnection.java   |  118 ---
 .../apache/plc4x/java/bacnetip/ede/EdeParser.java  |  101 ++
 .../plc4x/java/bacnetip/ede/model/Datapoint.java   |  135 +++
 .../plc4x/java/bacnetip/ede/model/EdeModel.java    |   37 +
 .../plc4x/java/bacnetip/field/BacNetIpField.java   |  121 +++
 .../java/bacnetip/field/BacNetIpFieldHandler.java  |   35 +
 .../plc4x/java/bacnetip/model/BacNetIpField.java   |   47 -
 .../java/bacnetip/protocol/BacNetIpProtocol.java   |   62 --
 .../java/bacnetip/protocol/HelloWorldProtocol.java |   72 --
 .../protocol/PassiveBacNetIpProtocolLogic.java     |  229 +++++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../plc4x/java/bacnetip/ManualBacNetDecoder.java   |    4 +-
 .../java/bacnetip/PassiveBacNetIpDriverManual.java |   25 +-
 .../src/test}/resources/logback.xml                |    0
 sandbox/test-java-df1-driver/pom.xml               |   39 +-
 .../org/apache/plc4x/java/df1/DF1PlcDriver.java    |   60 +-
 .../java/org/apache/plc4x/java/df1/Df1Field.java   |   62 --
 .../java/df1/configuration/Df1Configuration.java   |   33 +
 .../java/df1/connection/BaseDf1Connection.java     |   34 -
 .../java/df1/connection/SerialDf1Connection.java   |  148 ---
 .../org/apache/plc4x/java/df1/field/Df1Field.java  |   61 ++
 .../plc4x/java/df1/field/Df1FieldHandler.java      |   39 +
 .../org/apache/plc4x/java/df1/fields/DataType.java |   44 -
 .../plc4x/java/df1/protocol/Df1Protocol.java       |   14 +-
 .../plc4x/java/df1/protocol/Df1ProtocolLogic.java  |   43 +
 .../plc4x/java/df1/protocol/Plc4XDf1Protocol.java  |   23 +-
 .../org/apache/plc4x/java/df1/types/DataType.java  |   44 +
 .../org/apache/plc4x/java/df1/util/DF1Utils.java   |   14 +-
 .../plc4x/java/df1/util/Df1FieldHandler.java       |   39 -
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/df1/DF1PlcDriverTest.java    |   44 -
 .../plc4x/protocol/df1/BenchmarkGeneratedDf1.java  |    5 -
 .../org/apache/plc4x/protocol/df1/Df1Test.java     |    2 +-
 .../java/org/apache/plc4x/protocol/df1/IOTest.java |    2 +-
 .../src/test/resources/testsuite/Df1Testsuite.xml  |    8 +-
 sandbox/test-java-knxnetip-driver/pom.xml          |  116 ---
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |  102 --
 .../apache/plc4x/java/knxnetip/KNXNetIpTest.java   |   30 -
 .../test/resources/testsuite/KNXNetIPTestsuite.xml |  544 ----------
 sandbox/test-java-modbus-driver/pom.xml            |  136 +++
 .../org/apache/plc4x/java/modbus/ModbusDriver.java |   95 ++
 .../java/modbus/config/ModbusConfiguration.java    |   64 ++
 .../plc4x/java/modbus/field/ModbusField.java       |   74 ++
 .../plc4x/java/modbus/field/ModbusFieldCoil.java   |   45 +
 .../modbus/field/ModbusFieldDiscreteInput.java     |   46 +
 .../java/modbus/field/ModbusFieldHandler.java      |  115 +++
 .../modbus/field/ModbusFieldHoldingRegister.java   |   46 +
 .../modbus/field/ModbusFieldInputRegister.java     |   45 +
 .../modbus/field/ModbusFieldMaskWriteRegister.java |   98 ++
 .../java/modbus/field/ModbusFieldRegister.java     |   47 +
 .../java/modbus/protocol/ModbusProtocolLogic.java  |  130 +++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../org/apache/plc4x/java/modbus/ModbusIOTest.java |   29 +
 .../test/resources/testsuite/ModbusTestsuite.xml   |   64 ++
 sandbox/test-java-passive-s7-driver/pom.xml        |  100 --
 .../plc4x/javapassive/s7/PassiveS7PlcDriver.java   |   90 --
 .../s7/connection/PassiveS7PlcConnection.java      |   99 --
 .../s7/protocol/HelloWorldProtocol.java            |   48 -
 .../javapassive/s7/protocol/PassiveS7Protocol.java |   62 --
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 .../src/test/java/BenchmarkGeneratedPassiveS7.java |   45 -
 sandbox/test-java-s7-driver/pom.xml                |   46 +-
 .../apache/plc4x/java/s7/readwrite/S7Driver.java   |  107 ++
 .../readwrite/configuration/S7Configuration.java   |  148 +++
 .../plc4x/java/s7/readwrite/field/S7Field.java     |  265 +++++
 .../java/s7/readwrite/field/S7PlcFieldHandler.java |  584 +++++++++++
 .../optimizer/DefaultS7MessageProcessor.java       |  290 ++++++
 .../s7/readwrite/optimizer/S7MessageProcessor.java |   40 +
 .../s7/readwrite/protocol/S7ProtocolLogic.java     |  693 +++++++++++++
 .../java/s7/readwrite/types/S7ControllerType.java  |   30 +
 .../java/s7/readwrite/utils/S7TsapIdEncoder.java   |   48 +
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  138 +++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../src/main/resources/logback.xml                 |   36 +
 .../src/test/java/BenchmarkGeneratedS7.java        |    8 +-
 .../java/s7/readwrite/ManualS7DriverTest.java      |   33 +
 sandbox/test-streampipes-plc4x-adapters/Dockerfile |   24 +
 .../READMME.adoc                                   |    0
 .../env/development                                |   26 +
 sandbox/test-streampipes-plc4x-adapters/pom.xml    |  241 +++++
 .../java/streampipes/adapters/Plc4xAdapters.java   |   43 +
 .../streampipes/adapters/config/ConfigKeys.java    |   31 +
 .../adapters/config/ConnectWorkerConfig.java       |   84 ++
 .../adapters/source/bacnetip/BacNetIpAdapter.java  |  381 +++++++
 .../adapters/source/knxnetip/KnxNetIpAdapter.java  |  222 +++++
 .../test-streampipes-plc4x-processors/Dockerfile   |   24 +
 .../READMME.adoc                                   |    0
 .../env/development                                |   24 +
 sandbox/test-streampipes-plc4x-processors/pom.xml  |  281 ++++++
 .../processors/Plc4xProcessorsInit.java            |   55 +
 .../java/streampipes/processors/config/Config.java |   86 ++
 .../streampipes/processors/config/ConfigKeys.java  |   33 +
 .../ede/BacNetIpEdeDataEnrichmentController.java   |   88 ++
 .../enrich/knxnetip/ets5/Ets5DataEnrichment.java   |  106 ++
 .../ets5/Ets5DataEnrichmentController.java         |   93 ++
 .../ets5/Ets5DataEnrichmentParameters.java         |   43 +
 .../strings.en                                     |   27 +
 .../strings.en                                     |   30 +
 sandbox/test-streampipes-plc4x-shared/pom.xml      |   32 +
 .../shared/source/bacnetip/Constants.java          |   22 +
 .../shared/source/knxnetip/Constants.java          |   24 +
 src/main/script/prerequisiteCheck.groovy           |   38 +
 src/site/asciidoc/apache/index.adoc                |   20 +
 .../developers/code-gen/protocol/mspec.adoc        |    2 +
 src/site/asciidoc/developers/index.adoc            |   20 +
 src/site/asciidoc/index.adoc                       |  318 ++++--
 src/site/asciidoc/plc4j/index.adoc                 |  100 ++
 .../site/asciidoc/plc4j}/users/gettingstarted.adoc |    0
 src/site/asciidoc/users/download.adoc              |    6 +-
 src/site/asciidoc/users/gettingstarted.adoc        |    2 +-
 src/site/asciidoc/users/index.adoc                 |   61 ++
 .../users/integrations/apache-calcite.adoc         |   24 +
 .../asciidoc/users/integrations/apache-camel.adoc  |   20 +
 .../asciidoc/users/integrations/apache-edgent.adoc |   20 +
 .../asciidoc/users/integrations/apache-iotdb.adoc  |   20 +
 .../asciidoc/users/integrations/apache-kafka.adoc  |   24 +
 .../asciidoc/users/integrations/apache-nifi.adoc   |   20 +
 .../users/integrations/apache-streampipes.adoc     |   20 +
 .../asciidoc/users/integrations/eclipse-ditto.adoc |   25 +
 .../users/integrations/elastic-logstash.adoc       |   20 +
 src/site/asciidoc/users/integrations/index.adoc    |   20 +
 .../site/asciidoc/users/plc4j}/gettingstarted.adoc |    0
 src/site/asciidoc/users/protocols/ab-eth.adoc      |   20 +
 src/site/asciidoc/users/protocols/ads.adoc         |   20 +
 src/site/asciidoc/users/protocols/bacnetip.adoc    |   20 +
 src/site/asciidoc/users/protocols/deltav.adoc      |   20 +
 src/site/asciidoc/users/protocols/df1.adoc         |   20 +
 src/site/asciidoc/users/protocols/ethernet-ip.adoc |   20 +
 src/site/asciidoc/users/protocols/index.adoc       |   20 +
 src/site/asciidoc/users/protocols/knxnetip.adoc    |   20 +
 src/site/asciidoc/users/protocols/modbus.adoc      |   20 +
 src/site/asciidoc/users/protocols/opc-ua.adoc      |   20 +
 src/site/asciidoc/users/protocols/s7.adoc          |   20 +
 src/site/asciidoc/users/protocols/simulated.adoc   |   20 +
 src/site/asciidoc/users/testing.adoc               |   12 +-
 src/site/asciidoc/users/tools/connection-pool.adoc |   20 +
 src/site/asciidoc/users/tools/index.adoc           |   20 +
 src/site/asciidoc/users/tools/opm.adoc             |   73 ++
 src/site/asciidoc/users/tools/scraper.adoc         |   20 +
 src/site/asciidoc/users/tools/testing.adoc         |  165 +++
 src/site/resources-filtered/plc4x-doap.rdf         |   17 +-
 src/site/resources/css/site.css                    |    2 -
 src/site/resources/images/apache_calcite_logo.svg  |  346 +++++++
 src/site/resources/images/apache_iotdb_logo.png    |  Bin 0 -> 22055 bytes
 src/site/resources/images/apache_logo_small.png    |  Bin 0 -> 7763 bytes
 .../resources/images/apache_plc4x_logo_small.png   |  Bin 0 -> 10460 bytes
 .../resources/images/apache_streampipes_logo.png   |  Bin 0 -> 16928 bytes
 src/site/resources/images/background-index-3.png   |  Bin 0 -> 1258500 bytes
 src/site/resources/images/eclipse_ditto_logo.png   |  Bin 0 -> 3371 bytes
 .../resources/images/elastic_logstash_logo.png     |  Bin 0 -> 9241 bytes
 src/site/site.xml                                  |  122 +--
 tools/boost/pom.xml                                |    2 +-
 tools/logstash/pom.xml                             |    2 +-
 tools/pom.xml                                      |    2 +-
 tools/thrift/pom.xml                               |   14 +-
 1080 files changed, 45689 insertions(+), 28549 deletions(-)


[plc4x] 03/07: Merge remote-tracking branch 'origin/develop' into develop

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 3cd9d999ac897611afcedfb64249e6d01561022a
Merge: 3d5ef14 6984ce1
Author: Matthias Milan Strljic <Ma...@googlemail.com>
AuthorDate: Tue Jan 28 21:35:11 2020 +0100

    Merge remote-tracking branch 'origin/develop' into develop

 .../hello-influx-data-collection/README.adoc       |  36 +++++
 .../example.properties                             |  32 +++++
 .../examples/hello-influx-data-collection/pom.xml  | 118 +++++++++++++++++
 .../java/examples/helloinflux/HelloInflux.java     | 145 +++++++++++++++++++++
 .../src/main/resources/logback.xml                 |  34 +++++
 plc4j/examples/pom.xml                             |   1 +
 .../PassiveBacNetIpConfiguration.java              |   2 +-
 .../protocol/PassiveBacNetIpProtocolLogic.java     |   7 +-
 8 files changed, 371 insertions(+), 4 deletions(-)


[plc4x] 05/07: [added] added first Milo ExampleServer inside of the manual tests

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 7257d1477d76044e1941a1c454bb5b0b59d279f9
Author: Matthias Milan Strljic <ma...@gmail.com>
AuthorDate: Tue Jan 28 21:40:28 2020 +0100

    [added] added first Milo ExampleServer inside of the manual tests
    
    Signed-off-by: Matthias Milan Strljic <Ma...@googlemail.com>
---
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  | 48 +++++++++++++---------
 1 file changed, 28 insertions(+), 20 deletions(-)

diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
index 14c51b5..ce35fe9 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
@@ -24,11 +24,12 @@ import org.apache.plc4x.java.api.messages.*;
 import org.apache.plc4x.java.api.model.PlcConsumerRegistration;
 import org.apache.plc4x.java.api.model.PlcField;
 import org.apache.plc4x.java.api.types.PlcSubscriptionType;
-import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionRequest;
-import org.apache.plc4x.java.spi.model.SubscriptionPlcField;
 import org.apache.plc4x.java.opcua.connection.OpcuaTcpPlcConnection;
 import org.apache.plc4x.java.opcua.protocol.OpcuaField;
 import org.apache.plc4x.java.opcua.protocol.OpcuaPlcFieldHandler;
+import org.apache.plc4x.java.spi.messages.DefaultPlcSubscriptionRequest;
+import org.apache.plc4x.java.spi.model.SubscriptionPlcField;
+import org.eclipse.milo.examples.server.ExampleServer;
 
 import java.math.BigInteger;
 import java.time.Duration;
@@ -50,30 +51,37 @@ import java.util.function.Consumer;
  * Created by Matthias Milan Strljic on 10.05.2019
  */
 public class ManualPLC4XOpcua {
-    private static final String BOOL_IDENTIFIER = "ns=2;i=10844";
-    private static final String BYTE_STRING_IDENTIFIER = "ns=2;i=10858";
-    private static final String BYTE_IDENTIFIER = "ns=2;i=10846";
-    private static final String DOUBLE_IDENTIFIER = "ns=2;i=10854";
-    private static final String FLOAT_IDENTIFIER = "ns=2;i=10853";
-    private static final String INT16_IDENTIFIER = "ns=2;i=10847";
-    private static final String INT32_IDENTIFIER = "ns=2;i=10849";
-    private static final String INT64_IDENTIFIER = "ns=2;i=10851";
-    private static final String INTEGER_IDENTIFIER = "ns=2;i=10869";
-    private static final String SBYTE_IDENTIFIER = "ns=2;i=10845";
-    private static final String STRING_IDENTIFIER = "ns=2;i=10855";
-    private static final String UINT16_IDENTIFIER = "ns=2;i=10848";
-    private static final String UINT32_IDENTIFIER = "ns=2;i=10850";
-    private static final String UINT64_IDENTIFIER = "ns=2;i=10852";
-    private static final String UINTEGER_IDENTIFIER = "ns=2;i=10870";
+    private static final String BOOL_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Boolean";
+    private static final String BYTE_STRING_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/ByteString";
+    private static final String BYTE_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Byte";
+    private static final String DOUBLE_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Double";
+    private static final String FLOAT_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Float";
+    private static final String INT16_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Int16";
+    private static final String INT32_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Int32";
+    private static final String INT64_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Int64";
+    private static final String INTEGER_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/Integer";
+    private static final String SBYTE_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/SByte";
+    private static final String STRING_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/String";
+    private static final String UINT16_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/UInt16";
+    private static final String UINT32_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/UInt32";
+    private static final String UINT64_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/UInt64";
+    private static final String UINTEGER_IDENTIFIER = "ns=2;s=HelloWorld/ScalarTypes/UInteger";
     private static final String DOES_NOT_EXIST_IDENTIFIER = "ns=2;i=12512623";
 
     public static void main(String args[]) {
+        try {
+            ExampleServer testServer = new ExampleServer();
+            testServer.startup().get();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         OpcuaTcpPlcConnection opcuaConnection = null;
         OpcuaPlcFieldHandler fieldH = new OpcuaPlcFieldHandler();
-        PlcField field = fieldH.createField("ns=2;i=10855");
+        PlcField field = fieldH.createField(BOOL_IDENTIFIER);
         try {
             opcuaConnection = (OpcuaTcpPlcConnection)
-                new PlcDriverManager().getConnection("opcua:tcp://localhost:4843?discovery=true");
+                new PlcDriverManager().getConnection("opcua:tcp://127.0.0.1:12686/milo?discovery=false");
 
         } catch (PlcConnectionException e) {
             e.printStackTrace();
@@ -108,7 +116,7 @@ public class ManualPLC4XOpcua {
 
             PlcWriteRequest.Builder wBuilder = opcuaConnection.writeRequestBuilder();
             wBuilder.addItem("w-Bool", BOOL_IDENTIFIER, true);
-            wBuilder.addItem("w-ByteString", BYTE_STRING_IDENTIFIER, "TEST".getBytes());
+            //wBuilder.addItem("w-ByteString", BYTE_STRING_IDENTIFIER, "TEST".getBytes());
             wBuilder.addItem("w-Byte", BYTE_IDENTIFIER, (byte) 1);
             wBuilder.addItem("w-Double", DOUBLE_IDENTIFIER, (double) 0.25);
             wBuilder.addItem("w-Float", FLOAT_IDENTIFIER, (float) 0.25);


[plc4x] 06/07: [added] added test case for reading a full set of variables

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 7702f918f5ce533584fc8fb043ecea61876120c6
Author: Matthias Milan Strljic <ma...@gmail.com>
AuthorDate: Tue Jan 28 22:32:23 2020 +0100

    [added] added test case for reading a full set of variables
    
    Signed-off-by: Matthias Milan Strljic <Ma...@googlemail.com>
---
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  |   2 +-
 .../plc4x/java/opcua/OpcuaPlcDriverTest.java       | 105 +++++++++++++++++++++
 2 files changed, 106 insertions(+), 1 deletion(-)

diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
index ce35fe9..57bf76a 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
@@ -46,7 +46,6 @@ import java.util.function.Consumer;
  * The current version is tested against a public server, which is to be replaced later by a separate instance of the Milo framework.
  * Afterwards the code represented here will be used as an example for the introduction page.
  * <p>
- * TODO: replace current public server with local Milo instance
  *
  * Created by Matthias Milan Strljic on 10.05.2019
  */
@@ -112,6 +111,7 @@ public class ManualPLC4XOpcua {
 
             PlcReadRequest request = builder.build();
             PlcReadResponse response = opcuaConnection.read(request).get();
+
             Collection coll = response.getAllStrings("String");
 
             PlcWriteRequest.Builder wBuilder = opcuaConnection.writeRequestBuilder();
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
index 7b3d951..8b34242 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
@@ -18,6 +18,13 @@
 */
 package org.apache.plc4x.java.opcua;
 
+import org.apache.plc4x.java.PlcDriverManager;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
+import org.apache.plc4x.java.api.messages.PlcReadResponse;
+import org.apache.plc4x.java.api.types.PlcResponseCode;
+import org.apache.plc4x.java.opcua.connection.OpcuaTcpPlcConnection;
+import org.eclipse.milo.examples.server.ExampleServer;
+import org.junit.Assert;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -30,13 +37,111 @@ import static org.apache.plc4x.java.opcua.UtilsTest.assertMatching;
  * Created by Matthias Milan Strljic on 10.05.2019
  */
 public class OpcuaPlcDriverTest {
+    // Read only variables of milo example server of version 3.6
+    private static final String BOOL_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Boolean";
+    private static final String BYTE_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Byte";
+    private static final String DOUBLE_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Double";
+    private static final String FLOAT_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Float";
+    private static final String INT16_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Int16";
+    private static final String INT32_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Int32";
+    private static final String INT64_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Int64";
+    private static final String INTEGER_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Integer";
+    private static final String SBYTE_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/SByte";
+    private static final String STRING_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/String";
+    private static final String UINT16_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/UInt16";
+    private static final String UINT32_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/UInt32";
+    private static final String UINT64_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/UInt64";
+    private static final String UINTEGER_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/UInteger";
+    private static final String DOES_NOT_EXIST_IDENTIFIER_READ_WRITE = "ns=2;i=12512623";
+    // At the moment not used in PLC4X or in the OPC UA driver
+    private static final String BYTE_STRING_IDENTIFIER_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/ByteString";
+    private static final String DATE_TIME_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/DateTime";
+    private static final String DURATION_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Duration";
+    private static final String GUID_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Guid";
+    private static final String LOCALICED_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/LocalizedText";
+    private static final String NODE_ID_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/NodeId";
+    private static final String QUALIFIED_NAM_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/QualifiedName";
+    private static final String UTC_TIME_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/UtcTime";
+    private static final String VARIANT_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/Variant";
+    private static final String XML_ELEMENT_READ_WRITE = "ns=2;s=HelloWorld/ScalarTypes/XmlElement";
+    // Address of local milo server
+    String miloLocalAddress = "127.0.0.1:12686/milo";
+    //Tcp pattern of OPC UA
+    String opcPattern = "opcua:tcp://";
+    private ExampleServer exampleServer;
+
+
+
     @BeforeEach
     public void before() {
+        try {
+            exampleServer = new ExampleServer();
+            exampleServer.startup().get();
+        } catch (Exception e) {
+
+        }
     }
 
     @AfterEach
     public void after() {
+        try {
+            exampleServer.shutdown().get();
+        } catch (Exception e) {
+
+        }
+    }
+
+    @Test
+    public void readVariables() {
+        try {
+            OpcuaTcpPlcConnection opcuaConnection = (OpcuaTcpPlcConnection)
+                new PlcDriverManager().getConnection(opcPattern + miloLocalAddress);
+            assert opcuaConnection.isConnected();
+
+            PlcReadRequest.Builder builder = opcuaConnection.readRequestBuilder();
+            builder.addItem("Bool", BOOL_IDENTIFIER_READ_WRITE);
+            builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE);
+            builder.addItem("Double", DOUBLE_IDENTIFIER_READ_WRITE);
+            builder.addItem("Float", FLOAT_IDENTIFIER_READ_WRITE);
+            builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE);
+            builder.addItem("Int32", INT32_IDENTIFIER_READ_WRITE);
+            builder.addItem("Int64", INT64_IDENTIFIER_READ_WRITE);
+            builder.addItem("Integer", INTEGER_IDENTIFIER_READ_WRITE);
+            builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE);
+            builder.addItem("String", STRING_IDENTIFIER_READ_WRITE);
+            builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE);
+            builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE);
+            builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE);
+            builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE);
+
+            builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER_READ_WRITE);
+
+            PlcReadRequest request = builder.build();
+            PlcReadResponse response = opcuaConnection.read(request).get();
+            assert response.getResponseCode("Bool").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Byte").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Double").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Float").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Int16").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Int32").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Int64").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("Integer").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("SByte").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("String").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("UInt16").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("UInt32").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("UInt64").equals(PlcResponseCode.OK);
+            assert response.getResponseCode("UInteger").equals(PlcResponseCode.OK);
+
+            assert response.getResponseCode("DoesNotExists").equals(PlcResponseCode.NOT_FOUND);
+
+            opcuaConnection.close();
+            assert !opcuaConnection.isConnected();
+
 
+        } catch (Exception e) {
+            Assert.fail("Exception during readVariables Test EXCEPTION: " + e.getMessage());
+        }
     }
 
     @Test


[plc4x] 07/07: [fix] changed write of opc variant and included cast from BigInteger

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nalim2 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit d45f748b08d6c083a22993e756114ec8840589fa
Author: Matthias Milan Strljic <Ma...@googlemail.com>
AuthorDate: Wed Jan 29 00:04:57 2020 +0100

    [fix] changed write of opc variant and included cast from BigInteger
    
                                                                           Signed-off-by: Matthias Milan Strljic <Ma...@googlemail.com>
    
    Signed-off-by: Matthias Milan Strljic <Ma...@googlemail.com>
---
 .../plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java     | 10 ++++++++--
 .../java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java     |  9 ++++-----
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
index 952c7fc..3a5aa5f 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
@@ -65,6 +65,7 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import static org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned.uint;
+import static org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned.ulong;
 
 /**
  * Corresponding implementaion for a TCP-based connection for an OPC UA server.
@@ -433,8 +434,11 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
             for (String fieldName : writeRequest.getFieldNames()) {
                 OpcuaField uaField = (OpcuaField) writeRequest.getField(fieldName);
                 NodeId idNode = generateNodeId(uaField);
-                Variant var = new Variant(internalPlcWriteRequest.getPlcValue(fieldName).getObject());
-                DataValue value = new DataValue(var, null, null);
+                Object valueObject = internalPlcWriteRequest.getPlcValue(fieldName).getObject();
+                // Added small work around for handling BigIntegers as input type for UInt64
+                if (valueObject instanceof BigInteger) valueObject = ulong((BigInteger) valueObject);
+                Variant var = new Variant(valueObject);
+                DataValue value = new DataValue(var, null, null, null);
                 ids.add(idNode);
                 names.add(fieldName);
                 values.add(value);
@@ -458,6 +462,8 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
                         resultCode = PlcResponseCode.OK;
                     } else if (statusCodes.get(counter).isUncertain()) {
                         resultCode = PlcResponseCode.NOT_FOUND;
+                    } else if (statusCodes.get(counter).isBad() && statusCodes.get(counter).getValue() == 2155085824L) {
+                        resultCode = PlcResponseCode.INVALID_DATATYPE;
                     } else {
                         resultCode = PlcResponseCode.ACCESS_DENIED;
                     }
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
index 57bf76a..d8ed820 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/ManualPLC4XOpcua.java
@@ -34,7 +34,6 @@ import org.eclipse.milo.examples.server.ExampleServer;
 import java.math.BigInteger;
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.function.Consumer;
@@ -110,21 +109,21 @@ public class ManualPLC4XOpcua {
             builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER);
 
             PlcReadRequest request = builder.build();
-            PlcReadResponse response = opcuaConnection.read(request).get();
+            //PlcReadResponse response = opcuaConnection.read(request).get();
 
-            Collection coll = response.getAllStrings("String");
+            //Collection coll = response.getAllStrings("String");
 
             PlcWriteRequest.Builder wBuilder = opcuaConnection.writeRequestBuilder();
             wBuilder.addItem("w-Bool", BOOL_IDENTIFIER, true);
             //wBuilder.addItem("w-ByteString", BYTE_STRING_IDENTIFIER, "TEST".getBytes());
-            wBuilder.addItem("w-Byte", BYTE_IDENTIFIER, (byte) 1);
+            wBuilder.addItem("w-Byte", BYTE_IDENTIFIER, (byte) 0x00);
             wBuilder.addItem("w-Double", DOUBLE_IDENTIFIER, (double) 0.25);
             wBuilder.addItem("w-Float", FLOAT_IDENTIFIER, (float) 0.25);
             wBuilder.addItem("w-INT16", INT16_IDENTIFIER, (short) 12);
             wBuilder.addItem("w-Int32", INT32_IDENTIFIER, (int) 314);
             wBuilder.addItem("w-Int64", INT64_IDENTIFIER, (long) 123125);
             wBuilder.addItem("w-Integer", INTEGER_IDENTIFIER, (int) 314);
-            wBuilder.addItem("w-SByte", SBYTE_IDENTIFIER, (short) 23);
+            wBuilder.addItem("w-SByte", SBYTE_IDENTIFIER, (byte) 23);
             wBuilder.addItem("w-String", STRING_IDENTIFIER, "TEST");
             wBuilder.addItem("w-UInt16", UINT16_IDENTIFIER, (int) 222);
             wBuilder.addItem("w-UInt32", UINT32_IDENTIFIER, (long) 21412);