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

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/plc4x-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 0c51ae4  Site checkin for project PLC4X: Jenkins Tools
0c51ae4 is described below

commit 0c51ae43c0681fd1941d5bf191d8830d6022d919
Author: jenkins <[email protected]>
AuthorDate: Wed Jun 19 15:48:15 2019 +0000

    Site checkin for project PLC4X: Jenkins Tools
---
 developers/code-generation.html                    | 340 ++++++++++++++++++++-
 images/code-generation-intro-s7-java.png           | Bin 0 -> 14664 bytes
 images/code-generation-intro.png                   | Bin 0 -> 8362 bytes
 .../plc4x-protocols-knxnet-ip/dependencies.html    |  10 +-
 .../plc4x-protocols-plc4x/dependency-info.html     |  14 +-
 .../dependency-management.html                     | 150 +++++----
 .../plc4x-protocols-plc4x/plugin-management.html   |  70 +++--
 plc4x-protocols/plc4x-protocols-plc4x/plugins.html |  33 +-
 plc4x-protocols/plc4x-protocols-plc4x/summary.html |   2 +-
 .../plc4x-protocols-s7/dependencies.html           |  12 +-
 10 files changed, 516 insertions(+), 115 deletions(-)

diff --git a/developers/code-generation.html b/developers/code-generation.html
index d2e0748..fcfec57 100644
--- a/developers/code-generation.html
+++ b/developers/code-generation.html
@@ -170,7 +170,35 @@
             </div> <!-- .navbar-header -->
         <div class="collapse navbar-collapse" id="toc-nav-collapse">
           <ul id="toc" class="nav navbar-nav">
-                                                <li class="toplevel"><a 
href="#_toc_code_generation1" title="Code Generation">Code Generation</a></li>
+                                                            <li 
class="toplevel"><a href="#_toc_code_generation1" title="Code Generation">Code 
Generation</a></li>
+                        <li class="toplevel"><a href="#_toc_introduction1" 
title="Introduction">Introduction</a></li>
+                        <li class="dropdown">
+                            <a href="#" title="The MSpec format" 
class="dropdown-toggle" role="button" data-toggle="dropdown">The MSpec format 
<b class="caret"></b></a>
+                            <ul class="dropdown-menu" role="menu">
+                                <!-- Repeat the item, otherwise it is not 
clickable as the dropdown root -->
+                                <li><a href="#_toc_the_mspec_format1" 
title="The MSpec format">The MSpec format</a></li>
+                                <li class="divider"></li>
+                                              <li><a 
href="#_toc_simple_types1" title="Simple Types">Simple Types</a></li>
+                <li><a href="#_toc_complex_types1" title="Complex 
Types">Complex Types</a></li>
+                <li class="dropdown-submenu">
+                    <a href="#_toc_field_types_and_their_syntax1" title="Field 
Types and their Syntax">Field Types and their Syntax</a>
+                    <ul class="dropdown-menu" role="menu">
+                <li><a href="#_toc_const_field1" title="const Field">const 
Field</a></li>
+                <li><a href="#_toc_reserved_field1" title="reserved 
Field">reserved Field</a></li>
+                <li><a href="#_toc_field_field1" title="field Field">field 
Field</a></li>
+                <li><a href="#_toc_array_field1" title="array Field">array 
Field</a></li>
+                <li><a href="#_toc_optional_field1" title="optional 
Field">optional Field</a></li>
+                <li><a href="#_toc_implicit_field1" title="implicit 
Field">implicit Field</a></li>
+                <li><a href="#_toc_discriminator_field1" title="discriminator 
Field">discriminator Field</a></li>
+                <li><a href="#_toc_typeswitch_field1" title="typeSwitch 
Field">typeSwitch Field</a></li>
+                    </ul>
+                </li>
+                            </ul>
+                        </li>
+                        <li class="divider-vertical"></li>
+                                    <li class="toplevel"><a 
href="#_toc_problems_with_maven1" title="Problems with Maven">Problems with 
Maven</a></li>
+                        <li class="toplevel"><a 
href="#_toc_why_are_the_4_modules_released_separately1" title="Why are the 4 
modules released separately?">Why are the 4 modules released 
separately?</a></li>
+                        <li class="toplevel"><a 
href="#_toc_why_are_the_protocol_and_language_dependencies_don" title="Why are 
the protocol and language dependencies done so strangely?">Why are the protocol 
and language dependencies done so strangely?</a></li>
           </ul>
         </div>
       </div> <!-- .container -->
@@ -186,6 +214,316 @@
   <h2 id="_toc_code_generation1">Code Generation</h2>
  </div> 
  <div class="sectionbody"> 
+  <div class="paragraph"> 
+   <p>As hand-writing code for a lot of drivers in multiple languages would be 
quite a nightmare, we have invested a very large amount of time into finding a 
way to automate this.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>So in the end we need 3 parts:</p> 
+  </div> 
+  <div class="olist arabic"> 
+   <ol class="arabic"> 
+    <li> <p>Protocol definition</p> </li> 
+    <li> <p>Language template</p> </li> 
+    <li> <p>A maven plugin which generates the code</p> </li> 
+   </ol> 
+  </div> 
+  <div class="paragraph"> 
+   <p>This maven plugin uses a given protocol definition as well as a language 
template and generates code for reading/writing data in that protocol with the 
given language.</p> 
+  </div> 
+  <div class="imageblock"> 
+   <div class="content"> 
+    <img src="../images/code-generation-intro.png" alt="code generation intro" 
width="750" height="308" class="img-responsive"> 
+   </div> 
+  </div> 
+  <div class="paragraph"> 
+   <p>The <code>Types Base</code> module provides all the structures the 
<code>Protocol</code> modules output which are then used in the 
<code>Language</code> templates to generate code.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p><code>Protocol Base</code> and <code>Language Base</code> hereby just 
provide the interfaces that reference these types and provide the API for the 
<code>plc4x-maven-plugin</code> to use.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>These modules are also maintained in a repository which is separate from 
the rest of the PLC4X code.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>This is due to some restrictions in the Maven build system. If you are 
interested in understanding the reasons - please read the chapter on 
<code>Problems with Maven</code> near the end of this page.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>Concrete protocol spec parsers and templates that actually generate code 
are implemented in derived modules.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>Also didn’t we want to tie ourselves to only one way to specify 
protocols and to generate code.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>This adds another layer to the hierarchy.</p> 
+  </div> 
+  <div class="paragraph"> 
+   <p>So for example in case of generating a Siemens S7 Driver for Java this 
would look like this:</p> 
+  </div> 
+  <div class="imageblock"> 
+   <div class="content"> 
+    <img src="../images/code-generation-intro-s7-java.png" alt="code 
generation intro s7 java" width="480" height="728" class="img-responsive"> 
+   </div> 
+  </div> 
+  <div class="paragraph"> 
+   <p>The dark blue parts are the ones released externally, the turquoise ones 
are part of the main PLC4X repo.</p> 
+  </div> 
+  <div class="sect2"> 
+   <h3 id="_toc_introduction1">Introduction</h3> 
+   <div class="paragraph"> 
+    <p>The maven plugin is built up very modular.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>So in general it is possible to add new forms of providing protocol 
definitions as well as language templates.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>For the formats of specifying a protocol we have tried out numerous 
tools and frameworks, however the results were never quite satisfying.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>Usually using them required a large amount of workarounds, which made 
the solution quite complicated.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>In the end only DFDL and the corresponding Apache project <a 
href="https://daffodil.apache.org";>Apache Daffodil (incubating)</a> seemed to 
provide what we were looking for.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>With this we were able to provide first driver versions fully specified 
in XML.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>The downside was, that the PLC4X community regarded this XML format as 
pretty complicated and when implementing an experimental code generator we 
quickly noticed that generating a nice object model would not be possible, due 
to the lack ability to model the inheritance of types in DFDL.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>In the end we came up with our own solution.</p> 
+   </div> 
+  </div> 
+  <div class="sect2"> 
+   <h3 id="_toc_the_mspec_format1">The MSpec format</h3> 
+   <div class="paragraph"> 
+    <p>The <code>MSpec</code> format (Message Specification) was a result of a 
brainstorming session after evaluating a lot of other options.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>We simply sat down and started to write some imaginary format 
(<code>imaginary</code> was even the initial Name we used) and created parses 
for this afterwards and fine tuned spec and parsers as part of the process of 
implementing first protocols and language templates.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>It’s a text-based format and for example part of the spec for the S7 
format looks like this:</p> 
+   </div> 
+   <div class="literalblock"> 
+    <div class="content"> 
+     <pre>[discriminatedType 'S7Message'
+    [const         uint 8  'protocolId'      '0x32']
+    [discriminator uint 8  'messageType']
+    [reserved      uint 16 '0x0000']
+    [field         uint 16 'tpduReference']
+    [implicit      uint 16 'parameterLength' 'parameter.lengthInBytes']
+    [implicit      uint 16 'payloadLength'   'payload.lengthInBytes']
+    [typeSwitch 'messageType'
+        ['0x01' S7MessageRequest
+        ]
+        ['0x03' S7MessageResponse
+            [field uint 8 'errorClass']
+            [field uint 8 'errorCode']
+        ]
+        ['0x07' S7MessageUserData
+        ]
+    ]
+    [field S7Parameter 'parameter' ['messageType']]
+    [field S7Payload   'payload'   ['messageType', 'parameter']]
+]</pre> 
+    </div> 
+   </div> 
+   <div class="paragraph"> 
+    <p>So the root elements are always <code>discriminatedType</code> elements 
which have a name.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>An elements start is declared by an opening square bracket 
<code>[</code> and ended with a closing one <code>]</code>.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>Every <code>discriminatedType</code> contains a list of fields that can 
have different types.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>The list of available types are:</p> 
+   </div> 
+   <div class="ulist"> 
+    <ul> 
+     <li> <p>const: expects a given value</p> </li> 
+     <li> <p>reserved: expects a given value, but only warns if condition is 
not meet</p> </li> 
+     <li> <p>field: simple or complex typed object</p> </li> 
+     <li> <p>array: array of simple or complex typed objects</p> </li> 
+     <li> <p>optional: simple or complex typed object, that is only present in 
some conditions</p> </li> 
+     <li> <p>implicit: a field required for parsing, but is usually defined 
though other data</p> </li> 
+     <li> <p>discriminator: special type of simple typed field which is used 
to determine the concrete type of an object (max one per type and always has to 
be accompanied with a <code>switch</code> field)</p> </li> 
+     <li> <p>typeSwitch: not a real field, but indicates the existence of 
sub-types, which are declared inline</p> </li> 
+    </ul> 
+   </div> 
+   <div class="paragraph"> 
+    <p>The full syntax and explanations of these type follow in the following 
chapters.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>Another thing we have to explain are how types are specified.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>In general we distinguish between two types of types:</p> 
+   </div> 
+   <div class="ulist"> 
+    <ul> 
+     <li> <p>simple types</p> </li> 
+     <li> <p>complex types</p> </li> 
+    </ul> 
+   </div> 
+   <div class="sect3"> 
+    <h4 id="_toc_simple_types1">Simple Types</h4> 
+    <div class="paragraph"> 
+     <p>Simple types are usually raw data the format is:</p> 
+    </div> 
+    <div class="literalblock"> 
+     <div class="content"> 
+      <pre>{base-type} {size}</pre> 
+     </div> 
+    </div> 
+    <div class="paragraph"> 
+     <p>The base types available are currently:</p> 
+    </div> 
+    <div class="ulist"> 
+     <ul> 
+      <li> <p>bit: Simple boolean value</p> </li> 
+      <li> <p>uint: The input is treated as unsigned integer value</p> </li> 
+      <li> <p>int: The input is treated as signed integer value</p> </li> 
+      <li> <p>float: The input is treated as floating point number</p> </li> 
+      <li> <p>string: The input is treated as string</p> </li> 
+     </ul> 
+    </div> 
+    <div class="paragraph"> 
+     <p>The size value then provides how many <code>bits</code> should be 
read.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p>So reading an unsigned byte would be: <code>uint 8</code>.</p> 
+    </div> 
+   </div> 
+   <div class="sect3"> 
+    <h4 id="_toc_complex_types1">Complex Types</h4> 
+    <div class="paragraph"> 
+     <p>In contrast to simple types, complex type references simply reference 
other complex types.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p>How the parser should interpret them is defined in the referenced 
types definition.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p>In the example above, for example the <code>S7Parameter</code> is 
defined in another part of the spec.</p> 
+    </div> 
+   </div> 
+   <div class="sect3"> 
+    <h4 id="_toc_field_types_and_their_syntax1">Field Types and their 
Syntax</h4> 
+    <div class="sect4"> 
+     <h5 id="_toc_const_field1">const Field</h5> 
+     <div class="literalblock"> 
+      <div class="content"> 
+       <pre>[const {type} {size} '{name}' '{reference}']</pre> 
+      </div> 
+     </div> 
+     <div class="paragraph"> 
+      <p>A const field simply reads a given simple type and compares to a 
given reference value.</p> 
+     </div> 
+     <div class="paragraph"> 
+      <p>It makes the parser throw an Exception if the value does not 
match.</p> 
+     </div> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_reserved_field1">reserved Field</h5> 
+     <div class="literalblock"> 
+      <div class="content"> 
+       <pre>[reserved {type} {size} '{name}' '{reference}']</pre> 
+      </div> 
+     </div> 
+     <div class="paragraph"> 
+      <p>In general this field type behaves exactly the same way as the 
<code>const</code> field, but with the difference, that it doesn’t throw an 
Exception if the reference is not matched, but instead allows to log the 
value.</p> 
+     </div> 
+     <div class="paragraph"> 
+      <p>This is used in order to detect <code>reserved</code> fields in some 
protocols, where the manufacturer defined the field to be a given value, but 
with the option to use it in the future.</p> 
+     </div> 
+     <div class="paragraph"> 
+      <p>This way the application will not break in the future if devices 
start using the field and it informs us that we should probably have a look at 
what the new values mean.</p> 
+     </div> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_field_field1">field Field</h5> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_array_field1">array Field</h5> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_optional_field1">optional Field</h5> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_implicit_field1">implicit Field</h5> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_discriminator_field1">discriminator Field</h5> 
+    </div> 
+    <div class="sect4"> 
+     <h5 id="_toc_typeswitch_field1">typeSwitch Field</h5> 
+    </div> 
+   </div> 
+  </div> 
+ </div> 
+</div> 
+<div class="sect1"> 
+ <h2 id="_toc_problems_with_maven1">Problems with Maven</h2> 
+ <div class="sectionbody"> 
+  <div class="sect2"> 
+   <h3 id="_toc_why_are_the_4_modules_released_separately1">Why are the 4 
modules released separately?</h3> 
+   <div class="paragraph"> 
+    <p>We mentioned in the introduction, that the first 4 modules are 
maintained and released from outside the main PLC4X repository.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>This is due to some restrictions in Maven, which result from the way 
Maven generally works.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>The main problem is that when starting a build, in the 
<code>validate</code> phase, Maven goes through the configuration, downloads 
the plugins and configures these. This means that Maven also tries to download 
the dependencies of the plugins too.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>In case of using a Maven plugin in a project which also produces the 
maven plugin, this is guaranteed to fail - Especially during releases. While 
during normal development, Maven will probably just download the latest 
<code>SNAPSHOT</code> from our Maven repository and be happy with this and not 
complain that this version will be overwritten later on in the build. It will 
just use the new version as soon as it has to.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>During releases however the release plugin changes the version to a 
release version and then spawns a build. In this case the build will fail 
because there is no Plugin with that version to download. In this case the only 
option would be to manually build and install the plugin in the release version 
and to re-start the release (Which is not a nice thing for the release 
manager).</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>For this reason we have stripped down the plugin and it’s dependencies 
to an absolute minimum and have released (or will release) that separately from 
the rest, hoping due to the minimality of the dependencies that we will not 
have to do it very often.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>As soon as the tooling is released, the version is updated in the PLC4X 
build and the release version is used without any complications.</p> 
+   </div> 
+  </div> 
+  <div class="sect2"> 
+   <h3 id="_toc_why_are_the_protocol_and_language_dependencies_don">Why are 
the protocol and language dependencies done so strangely?</h3> 
+   <div class="paragraph"> 
+    <p>It would certainly be a lot cleaner, if we provided the modules as 
plugin dependencies.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>However, as we mentioned in the previous sub-chapter, Maven tries to 
download and configure the plugins prior to running the build. So during a 
release the new versions of the modules wouldn’t exist, this would cause the 
build to fail.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>We could release the protocol- and the language modules separately too, 
but we want the language and protocol modules to be part of the project, to not 
over-complicate things - especially during a release.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>So the Maven plugin is built in a way, that it uses the modules 
dependencies and creates it’s own Classloader to contain all of these modules 
at runtime.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>This brings the benefit of being able to utilize Maven’s capability of 
determining the build order and dynamically creating the modules build 
classpath.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>Adding a normal dependency however would make Maven deploy the 
artifacts with the rest of the modules.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>We don’t want that as the modules are useless as soon as they have been 
used to generate the code.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>So we use a trick that is usually used in Web applications, for 
example: Here the vendor of a Servlet engine is expected to provide an 
implementation of the <code>Servlet API</code>. It is forbidden for an 
application to bring this along, but it is required to build the 
application.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>For this the Maven scope <code>provided</code>, which tells Maven to 
provide it during the build, but to exclude it from any applications it builds 
because it will be provided by the system running the application.</p> 
+   </div> 
+   <div class="paragraph"> 
+    <p>This is not quite true, but it does the trick.</p> 
+   </div> 
+  </div> 
  </div> 
 </div>      </div>
     </div>
diff --git a/images/code-generation-intro-s7-java.png 
b/images/code-generation-intro-s7-java.png
new file mode 100644
index 0000000..69afd2b
Binary files /dev/null and b/images/code-generation-intro-s7-java.png differ
diff --git a/images/code-generation-intro.png b/images/code-generation-intro.png
new file mode 100644
index 0000000..e6e5a1d
Binary files /dev/null and b/images/code-generation-intro.png differ
diff --git a/plc4x-protocols/plc4x-protocols-knxnet-ip/dependencies.html 
b/plc4x-protocols/plc4x-protocols-knxnet-ip/dependencies.html
index b34d855..9783f2f 100644
--- a/plc4x-protocols/plc4x-protocols-knxnet-ip/dependencies.html
+++ b/plc4x-protocols/plc4x-protocols-knxnet-ip/dependencies.html
@@ -184,7 +184,7 @@
     <tr class="b"> 
      <td>org.apache.plc4x</td> 
      <td><a class="externalLink" 
href="https://plc4x.apache.org/plc4x-protocols/plc4x-protocols-plc4x";>plc4x-protocols-plc4x</a></td>
 
-     <td>0.4.0-SNAPSHOT</td> 
+     <td>0.5.0-SNAPSHOT</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
@@ -457,7 +457,7 @@
      </table> 
     </div> 
     <ul> 
-     <li>org.apache.plc4x:plc4x-protocols-plc4x:jar:0.4.0-SNAPSHOT (compile) 
<button title="Information" class="btn btn-link btn-small" type="button" 
data-toggle="collapse" data-target="#_dep2"><i class="glyphicon 
glyphicon-info-sign"></i></button> 
+     <li>org.apache.plc4x:plc4x-protocols-plc4x:jar:0.5.0-SNAPSHOT (compile) 
<button title="Information" class="btn btn-link btn-small" type="button" 
data-toggle="collapse" data-target="#_dep2"><i class="glyphicon 
glyphicon-info-sign"></i></button> 
       <div id="_dep2" style="" class="collapse"> 
        <table border="0" class="bodyTable table table-striped table-hover"> 
         <thead> 
@@ -989,8 +989,8 @@
     <td>Yes</td> 
    </tr> 
    <tr class="a"> 
-    <td>plc4x-protocols-plc4x-0.4.0-SNAPSHOT.jar</td> 
-    <td>4.6 kB</td> 
+    <td>plc4x-protocols-plc4x-0.5.0-SNAPSHOT.jar</td> 
+    <td>4.8 kB</td> 
     <td>13</td> 
     <td>0</td> 
     <td>0</td> 
@@ -1134,7 +1134,7 @@
    </tr> 
    <tr class="a"> 
     <td>compile: 1</td> 
-    <td>compile: 4.6 kB</td> 
+    <td>compile: 4.8 kB</td> 
     <td>compile: 13</td> 
     <td>-</td> 
     <td>-</td> 
diff --git a/plc4x-protocols/plc4x-protocols-plc4x/dependency-info.html 
b/plc4x-protocols/plc4x-protocols-plc4x/dependency-info.html
index 315cd20..a1edcfa 100644
--- a/plc4x-protocols/plc4x-protocols-plc4x/dependency-info.html
+++ b/plc4x-protocols/plc4x-protocols-plc4x/dependency-info.html
@@ -146,7 +146,7 @@
    <pre>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.plc4x&lt;/groupId&gt;
   &lt;artifactId&gt;plc4x-protocols-plc4x&lt;/artifactId&gt;
-  &lt;version&gt;0.4.0-SNAPSHOT&lt;/version&gt;
+  &lt;version&gt;0.5.0-SNAPSHOT&lt;/version&gt;
 &lt;/dependency&gt;</pre> 
   </div> 
  </div> 
@@ -154,14 +154,14 @@
   <h3 id="_toc_apache_buildr">Apache Buildr</h3> 
   <a name="Apache_Buildr"></a> 
   <div class="source"> 
-   <pre>'org.apache.plc4x:plc4x-protocols-plc4x:jar:0.4.0-SNAPSHOT'</pre> 
+   <pre>'org.apache.plc4x:plc4x-protocols-plc4x:jar:0.5.0-SNAPSHOT'</pre> 
   </div> 
  </div> 
  <div class="section"> 
   <h3 id="_toc_apache_ivy">Apache Ivy</h3> 
   <a name="Apache_Ivy"></a> 
   <div class="source"> 
-   <pre>&lt;dependency org="org.apache.plc4x" name="plc4x-protocols-plc4x" 
rev="0.4.0-SNAPSHOT"&gt;
+   <pre>&lt;dependency org="org.apache.plc4x" name="plc4x-protocols-plc4x" 
rev="0.5.0-SNAPSHOT"&gt;
   &lt;artifact name="plc4x-protocols-plc4x" type="jar" /&gt;
 &lt;/dependency&gt;</pre> 
   </div> 
@@ -171,7 +171,7 @@
   <a name="Groovy_Grape"></a> 
   <div class="source"> 
    <pre>@Grapes(
-@Grab(group='org.apache.plc4x', module='plc4x-protocols-plc4x', 
version='0.4.0-SNAPSHOT')
+@Grab(group='org.apache.plc4x', module='plc4x-protocols-plc4x', 
version='0.5.0-SNAPSHOT')
 )</pre> 
   </div> 
  </div> 
@@ -179,21 +179,21 @@
   <h3 id="_toc_gradlegrails">Gradle/Grails</h3> 
   <a name="Gradle.2FGrails"></a> 
   <div class="source"> 
-   <pre>compile 'org.apache.plc4x:plc4x-protocols-plc4x:0.4.0-SNAPSHOT'</pre> 
+   <pre>compile 'org.apache.plc4x:plc4x-protocols-plc4x:0.5.0-SNAPSHOT'</pre> 
   </div> 
  </div> 
  <div class="section"> 
   <h3 id="_toc_scala_sbt">Scala SBT</h3> 
   <a name="Scala_SBT"></a> 
   <div class="source"> 
-   <pre>libraryDependencies += "org.apache.plc4x" % "plc4x-protocols-plc4x" % 
"0.4.0-SNAPSHOT"</pre> 
+   <pre>libraryDependencies += "org.apache.plc4x" % "plc4x-protocols-plc4x" % 
"0.5.0-SNAPSHOT"</pre> 
   </div> 
  </div> 
  <div class="section"> 
   <h3 id="_toc_leiningen">Leiningen</h3> 
   <a name="Leiningen"></a> 
   <div class="source"> 
-   <pre>[org.apache.plc4x/plc4x-protocols-plc4x "0.4.0-SNAPSHOT"]</pre> 
+   <pre>[org.apache.plc4x/plc4x-protocols-plc4x "0.5.0-SNAPSHOT"]</pre> 
   </div> 
  </div> 
 </div>      </div>
diff --git a/plc4x-protocols/plc4x-protocols-plc4x/dependency-management.html 
b/plc4x-protocols/plc4x-protocols-plc4x/dependency-management.html
index 4d5ed6a..a2c477c 100644
--- a/plc4x-protocols/plc4x-protocols-plc4x/dependency-management.html
+++ b/plc4x-protocols/plc4x-protocols-plc4x/dependency-management.html
@@ -200,173 +200,187 @@
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
     <tr class="a"> 
+     <td>com.github.jinahya</td> 
+     <td><a class="externalLink" 
href="https://github.com/jinahya/bit-io";>bit-io</a></td> 
+     <td>1.4.2</td> 
+     <td>jar</td> 
+     <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
+    </tr> 
+    <tr class="b"> 
      <td>com.github.snksoft</td> 
      <td><a class="externalLink" 
href="https://github.com/snksoft/java-crc";>crc</a></td> 
      <td>1.0.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://opensource.org/licenses/BSD-3-Clause";>BSD License</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>com.google.code.findbugs</td> 
      <td><a class="externalLink" 
href="http://findbugs.sourceforge.net/";>jsr305</a></td> 
      <td>3.0.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>com.google.code.gson</td> 
      <td><a class="externalLink" 
href="https://github.com/google/gson/gson";>gson</a></td> 
      <td>2.8.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>com.google.guava</td> 
      <td><a class="externalLink" 
href="https://github.com/google/guava/guava";>guava</a></td> 
      <td>27.0.1-jre</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>com.tdunning</td> 
      <td><a class="externalLink" 
href="https://github.com/tdunning/t-digest";>t-digest</a></td> 
      <td>3.2</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>commons-codec</td> 
      <td><a class="externalLink" 
href="http://commons.apache.org/proper/commons-codec/";>commons-codec</a></td> 
-     <td>1.11</td> 
+     <td>1.12</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>commons-io</td> 
      <td><a class="externalLink" 
href="http://commons.apache.org/proper/commons-io/";>commons-io</a></td> 
      <td>2.6</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>io.dropwizard</td> 
      <td>metrics-core</td> 
      <td>3.1.2</td> 
      <td>jar</td> 
      <td>-</td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-buffer/";>netty-buffer</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-codec/";>netty-codec</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-codec-http/";>netty-codec-http</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-common/";>netty-common</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-handler/";>netty-handler</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-resolver/";>netty-resolver</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-transport/";>netty-transport</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>io.netty</td> 
      <td><a class="externalLink" 
href="http://netty.io/netty-transport-rxtx/";>netty-transport-rxtx</a></td> 
      <td>4.1.35.Final</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>jaxen</td> 
      <td><a class="externalLink" 
href="http://jaxen.codehaus.org/";>jaxen</a></td> 
      <td>1.1.6</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://jaxen.codehaus.org/license.html";>null</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>joda-time</td> 
      <td><a class="externalLink" 
href="http://www.joda.org/joda-time/";>joda-time</a></td> 
      <td>2.10</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>junit</td> 
      <td><a class="externalLink" href="http://junit.org";>junit</a></td> 
      <td>4.12</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.eclipse.org/legal/epl-v10.html";>Eclipse Public License 
1.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>net.bytebuddy</td> 
      <td><a class="externalLink" 
href="http://bytebuddy.net/byte-buddy";>byte-buddy</a></td> 
      <td>1.9.10</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>net.bytebuddy</td> 
      <td><a class="externalLink" 
href="http://bytebuddy.net/byte-buddy-agent";>byte-buddy-agent</a></td> 
      <td>1.9.10</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>net.java.dev.jna</td> 
      <td><a class="externalLink" 
href="https://github.com/java-native-access/jna";>jna</a></td> 
      <td>4.5.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.gnu.org/licenses/licenses.html";>LGPL, version 2.1</a>, <a 
class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License 
v2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>net.sf.jopt-simple</td> 
      <td><a class="externalLink" 
href="http://pholser.github.io/jopt-simple";>jopt-simple</a></td> 
      <td>5.0.2</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.opensource.org/licenses/mit-license.php";>The MIT 
License</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>nl.jqno.equalsverifier</td> 
      <td><a class="externalLink" 
href="http://www.jqno.nl/equalsverifier";>equalsverifier</a></td> 
      <td>3.0.2</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
+    <tr class="b"> 
+     <td>org.antlr</td> 
+     <td><a class="externalLink" 
href="http://www.antlr.org/antlr4-runtime";>antlr4-runtime</a></td> 
+     <td>4.7.2</td> 
+     <td>jar</td> 
+     <td><a class="externalLink" href="http://www.antlr.org/license.html";>The 
BSD License</a></td> 
+    </tr> 
     <tr class="a"> 
      <td>org.apache.commons</td> 
      <td><a class="externalLink" 
href="http://commons.apache.org/proper/commons-collections/";>commons-collections4</a></td>
 
@@ -411,228 +425,242 @@
     </tr> 
     <tr class="a"> 
      <td>org.apache.commons</td> 
-     <td><a class="externalLink" 
href="http://commons.apache.org/proper/commons-scxml/";>commons-scxml2</a></td> 
-     <td>2.0-SNAPSHOT</td> 
-     <td>jar</td> 
-     <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
-    </tr> 
-    <tr class="b"> 
-     <td>org.apache.commons</td> 
      <td><a class="externalLink" 
href="http://commons.apache.org/proper/commons-text";>commons-text</a></td> 
-     <td>1.4</td> 
+     <td>1.6</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.daffodil</td> 
      <td><a class="externalLink" 
href="https://daffodil.apache.org";>daffodil-japi_2.12</a></td> 
      <td>2.3.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.daffodil</td> 
      <td><a class="externalLink" 
href="https://daffodil.apache.org";>daffodil-lib_2.12</a></td> 
      <td>2.3.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.daffodil</td> 
      <td><a class="externalLink" 
href="https://daffodil.apache.org";>daffodil-runtime1_2.12</a></td> 
      <td>2.3.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.daffodil</td> 
      <td><a class="externalLink" 
href="https://daffodil.apache.org";>daffodil-tdml-lib_2.12</a></td> 
      <td>2.3.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.daffodil</td> 
      <td><a class="externalLink" 
href="https://daffodil.apache.org";>daffodil-tdml-processor_2.12</a></td> 
      <td>2.3.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.logging.log4j</td> 
      <td><a class="externalLink" 
href="https://logging.apache.org/log4j/2.x/log4j-api/";>log4j-api</a></td> 
      <td>2.11.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-analyzers-common";>lucene-analyzers-common</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-backward-codecs";>lucene-backward-codecs</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-core";>lucene-core</a></td> 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-grouping";>lucene-grouping</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-highlighter";>lucene-highlighter</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-join";>lucene-join</a></td> 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-memory";>lucene-memory</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-misc";>lucene-misc</a></td> 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-queries";>lucene-queries</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-queryparser";>lucene-queryparser</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-sandbox";>lucene-sandbox</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-spatial";>lucene-spatial</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-spatial-extras";>lucene-spatial-extras</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-spatial3d";>lucene-spatial3d</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.apache.lucene</td> 
      <td><a class="externalLink" 
href="http://lucene.apache.org/lucene-parent/lucene-suggest";>lucene-suggest</a></td>
 
      <td>8.0.0</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache 2</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.apache.maven</td> 
      <td><a class="externalLink" 
href="http://maven.apache.org/ref/3.3.3/maven-artifact";>maven-artifact</a></td> 
      <td>3.3.3</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
+    <tr class="b"> 
+     <td>org.apache.plc4x.plugins</td> 
+     <td><a class="externalLink" 
href="https://www.apache.org/plc4x-code-generaton-external/plc4x-code-generation-language-base/";>plc4x-code-generation-language-base</a></td>
 
+     <td>1.0.0-SNAPSHOT</td> 
+     <td>jar</td> 
+     <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
+    </tr> 
     <tr class="a"> 
+     <td>org.apache.plc4x.plugins</td> 
+     <td><a class="externalLink" 
href="https://www.apache.org/plc4x-code-generaton-external/plc4x-code-generation-protocol-base/";>plc4x-code-generation-protocol-base</a></td>
 
+     <td>1.0.0-SNAPSHOT</td> 
+     <td>jar</td> 
+     <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
+    </tr> 
+    <tr class="b"> 
      <td>org.assertj</td> 
      <td><a class="externalLink" 
href="http://assertj.org/assertj-core";>assertj-core</a></td> 
      <td>3.11.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.bouncycastle</td> 
      <td><a class="externalLink" 
href="http://www.bouncycastle.org/java.html";>bcmail-jdk15on</a></td> 
      <td>1.60</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.bouncycastle.org/licence.html";>Bouncy Castle Licence</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.bouncycastle</td> 
      <td><a class="externalLink" 
href="http://www.bouncycastle.org/java.html";>bcpkix-jdk15on</a></td> 
      <td>1.60</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.bouncycastle.org/licence.html";>Bouncy Castle Licence</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.bouncycastle</td> 
      <td><a class="externalLink" 
href="http://www.bouncycastle.org/java.html";>bcprov-jdk15on</a></td> 
      <td>1.60</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.bouncycastle.org/licence.html";>Bouncy Castle Licence</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.codehaus.groovy</td> 
      <td><a class="externalLink" href="http://groovy-lang.org";>groovy</a></td> 
      <td>2.5.3</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.elasticsearch</td> 
      <td><a class="externalLink" 
href="https://github.com/elastic/elasticsearch";>elasticsearch</a></td> 
      <td>7.0.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="a"> 
+    <tr class="b"> 
      <td>org.elasticsearch</td> 
      <td><a class="externalLink" 
href="https://github.com/elastic/elasticsearch";>elasticsearch-x-content</a></td>
 
      <td>7.0.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
-    <tr class="b"> 
+    <tr class="a"> 
      <td>org.elasticsearch.plugin</td> 
      <td><a class="externalLink" 
href="https://github.com/elastic/elasticsearch";>transport-netty4-client</a></td>
 
      <td>7.0.1</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>The Apache Software 
License, Version 2.0</a></td> 
     </tr> 
+    <tr class="b"> 
+     <td>org.freemarker</td> 
+     <td><a class="externalLink" 
href="https://freemarker.apache.org/";>freemarker</a></td> 
+     <td>2.3.28</td> 
+     <td>jar</td> 
+     <td><a class="externalLink" 
href="http://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
+    </tr> 
     <tr class="a"> 
      <td>org.hamcrest</td> 
      <td><a class="externalLink" 
href="https://github.com/hamcrest/JavaHamcrest/hamcrest-core";>hamcrest-core</a></td>
 
diff --git a/plc4x-protocols/plc4x-protocols-plc4x/plugin-management.html 
b/plc4x-protocols/plc4x-protocols-plc4x/plugin-management.html
index b32afc7..b429685 100644
--- a/plc4x-protocols/plc4x-protocols-plc4x/plugin-management.html
+++ b/plc4x-protocols/plc4x-protocols-plc4x/plugin-management.html
@@ -147,160 +147,170 @@
     <td>1.6.0</td> 
    </tr> 
    <tr class="a"> 
+    <td>org.antlr</td> 
+    <td><a class="externalLink" 
href="http://www.antlr.org/antlr4-maven-plugin";>antlr4-maven-plugin</a></td> 
+    <td>4.7.2</td> 
+   </tr> 
+   <tr class="b"> 
     <td>org.apache.felix</td> 
     <td><a class="externalLink" 
href="http://felix.apache.org/components/bundle-plugin/";>maven-bundle-plugin</a></td>
 
     <td>4.1.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-antrun-plugin/";>maven-antrun-plugin</a></td>
 
     <td>1.8</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-assembly-plugin/";>maven-assembly-plugin</a></td>
 
     <td>3.1.1</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-changelog-plugin/";>maven-changelog-plugin</a></td>
 
     <td>2.3</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-clean-plugin/";>maven-clean-plugin</a></td>
 
     <td>3.1.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-compiler-plugin/";>maven-compiler-plugin</a></td>
 
     <td>3.7.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-dependency-plugin/";>maven-dependency-plugin</a></td>
 
     <td>3.1.1</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-deploy-plugin/";>maven-deploy-plugin</a></td>
 
     <td>2.8.2</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-docck-plugin/";>maven-docck-plugin</a></td>
 
     <td>1.1</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-ear-plugin/";>maven-ear-plugin</a></td>
 
     <td>3.0.1</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/enforcer/maven-enforcer-plugin";>maven-enforcer-plugin</a></td>
 
     <td>1.4.1</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/surefire/maven-failsafe-plugin/";>maven-failsafe-plugin</a></td>
 
     <td>2.22.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-gpg-plugin/";>maven-gpg-plugin</a></td>
 
     <td>1.6</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-help-plugin/";>maven-help-plugin</a></td>
 
     <td>3.1.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-install-plugin/";>maven-install-plugin</a></td>
 
     <td>2.5.2</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-invoker-plugin/";>maven-invoker-plugin</a></td>
 
     <td>3.1.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-jar-plugin/";>maven-jar-plugin</a></td>
 
     <td>3.1.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-javadoc-plugin/";>maven-javadoc-plugin</a></td>
 
     <td>3.0.1</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugin-tools/maven-plugin-plugin";>maven-plugin-plugin</a></td>
 
     <td>3.5.2</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-project-info-reports-plugin/";>maven-project-info-reports-plugin</a></td>
 
     <td>3.0.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/maven-release/maven-release-plugin/";>maven-release-plugin</a></td>
 
     <td>2.5.3</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-remote-resources-plugin/";>maven-remote-resources-plugin</a></td>
 
     <td>1.5</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-resources-plugin/";>maven-resources-plugin</a></td>
 
     <td>3.1.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/scm/maven-scm-plugin/";>maven-scm-plugin</a></td> 
     <td>1.9.5</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-scm-publish-plugin/";>maven-scm-publish-plugin</a></td>
 
     <td>3.0.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-shade-plugin/";>maven-shade-plugin</a></td>
 
     <td>3.1.1</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-site-plugin/";>maven-site-plugin</a></td>
 
     <td>3.7.1</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-source-plugin/";>maven-source-plugin</a></td>
 
     <td>3.0.1</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/surefire/maven-surefire-plugin/";>maven-surefire-plugin</a></td>
 
     <td>2.22.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/surefire/maven-surefire-report-plugin/";>maven-surefire-report-plugin</a></td>
 
     <td>2.22.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-war-plugin/";>maven-war-plugin</a></td>
 
     <td>3.2.2</td> 
    </tr> 
+   <tr class="a"> 
+    <td>org.apache.plc4x.plugins</td> 
+    <td><a class="externalLink" 
href="https://www.apache.org/plc4x-code-generaton-external/plc4x-maven-plugin/";>plc4x-maven-plugin</a></td>
 
+    <td>1.0.0-SNAPSHOT</td> 
+   </tr> 
    <tr class="b"> 
     <td>org.apache.rat</td> 
     <td><a class="externalLink" 
href="http://creadur.apache.org/rat/apache-rat-plugin/";>apache-rat-plugin</a></td>
 
diff --git a/plc4x-protocols/plc4x-protocols-plc4x/plugins.html 
b/plc4x-protocols/plc4x-protocols-plc4x/plugins.html
index 4258b30..5c4d583 100644
--- a/plc4x-protocols/plc4x-protocols-plc4x/plugins.html
+++ b/plc4x-protocols/plc4x-protocols-plc4x/plugins.html
@@ -154,30 +154,40 @@
     <td>1.4.1</td> 
    </tr> 
    <tr class="b"> 
+    <td>org.apache.felix</td> 
+    <td><a class="externalLink" 
href="http://felix.apache.org/components/bundle-plugin/";>maven-bundle-plugin</a></td>
 
+    <td>4.1.0</td> 
+   </tr> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-clean-plugin/";>maven-clean-plugin</a></td>
 
     <td>3.1.0</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-compiler-plugin/";>maven-compiler-plugin</a></td>
 
     <td>3.7.0</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="https://maven.apache.org/plugins/maven-dependency-plugin/";>maven-dependency-plugin</a></td>
 
     <td>3.1.1</td> 
    </tr> 
-   <tr class="a"> 
+   <tr class="b"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-deploy-plugin/";>maven-deploy-plugin</a></td>
 
     <td>2.8.2</td> 
    </tr> 
-   <tr class="b"> 
+   <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/enforcer/maven-enforcer-plugin";>maven-enforcer-plugin</a></td>
 
     <td>1.4.1</td> 
    </tr> 
+   <tr class="b"> 
+    <td>org.apache.maven.plugins</td> 
+    <td><a class="externalLink" 
href="https://maven.apache.org/surefire/maven-failsafe-plugin/";>maven-failsafe-plugin</a></td>
 
+    <td>2.22.0</td> 
+   </tr> 
    <tr class="a"> 
     <td>org.apache.maven.plugins</td> 
     <td><a class="externalLink" 
href="http://maven.apache.org/plugins/maven-install-plugin/";>maven-install-plugin</a></td>
 
@@ -218,6 +228,21 @@
     <td><a class="externalLink" 
href="http://creadur.apache.org/rat/apache-rat-plugin/";>apache-rat-plugin</a></td>
 
     <td>0.12</td> 
    </tr> 
+   <tr class="a"> 
+    <td>org.codehaus.gmaven</td> 
+    <td><a class="externalLink" 
href="http://groovy.github.io/gmaven/groovy-maven-plugin";>groovy-maven-plugin</a></td>
 
+    <td>2.1</td> 
+   </tr> 
+   <tr class="b"> 
+    <td>org.codehaus.mojo</td> 
+    <td><a class="externalLink" 
href="http://www.mojohaus.org/properties-maven-plugin";>properties-maven-plugin</a></td>
 
+    <td>1.0.0</td> 
+   </tr> 
+   <tr class="a"> 
+    <td>org.jacoco</td> 
+    <td><a class="externalLink" 
href="http://jacoco-maven-plugin";>jacoco-maven-plugin</a></td> 
+    <td>0.8.2</td> 
+   </tr> 
   </tbody> 
  </table> 
 </div> 
diff --git a/plc4x-protocols/plc4x-protocols-plc4x/summary.html 
b/plc4x-protocols/plc4x-protocols-plc4x/summary.html
index b7ae8f5..effce6b 100644
--- a/plc4x-protocols/plc4x-protocols-plc4x/summary.html
+++ b/plc4x-protocols/plc4x-protocols-plc4x/summary.html
@@ -204,7 +204,7 @@
     </tr> 
     <tr class="b"> 
      <td>Version</td> 
-     <td>0.4.0-SNAPSHOT</td> 
+     <td>0.5.0-SNAPSHOT</td> 
     </tr> 
     <tr class="a"> 
      <td>Type</td> 
diff --git a/plc4x-protocols/plc4x-protocols-s7/dependencies.html 
b/plc4x-protocols/plc4x-protocols-s7/dependencies.html
index 58723a1..cb2e74f 100644
--- a/plc4x-protocols/plc4x-protocols-s7/dependencies.html
+++ b/plc4x-protocols/plc4x-protocols-s7/dependencies.html
@@ -184,7 +184,7 @@
     <tr class="b"> 
      <td>org.apache.plc4x</td> 
      <td><a class="externalLink" 
href="https://plc4x.apache.org/plc4x-protocols/plc4x-protocols-plc4x";>plc4x-protocols-plc4x</a></td>
 
-     <td>0.4.0-SNAPSHOT</td> 
+     <td>0.5.0-SNAPSHOT</td> 
      <td>jar</td> 
      <td><a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0.txt";>Apache License, Version 
2.0</a></td> 
     </tr> 
@@ -506,7 +506,7 @@
      </table> 
     </div> 
     <ul> 
-     <li>org.apache.plc4x:plc4x-protocols-plc4x:jar:0.4.0-SNAPSHOT (compile) 
<button title="Information" class="btn btn-link btn-small" type="button" 
data-toggle="collapse" data-target="#_dep2"><i class="glyphicon 
glyphicon-info-sign"></i></button> 
+     <li>org.apache.plc4x:plc4x-protocols-plc4x:jar:0.5.0-SNAPSHOT (compile) 
<button title="Information" class="btn btn-link btn-small" type="button" 
data-toggle="collapse" data-target="#_dep2"><i class="glyphicon 
glyphicon-info-sign"></i></button> 
       <div id="_dep2" style="" class="collapse"> 
        <table border="0" class="bodyTable table table-striped table-hover"> 
         <thead> 
@@ -1169,8 +1169,8 @@
     <td>Yes</td> 
    </tr> 
    <tr class="a"> 
-    <td>plc4x-protocols-plc4x-0.4.0-SNAPSHOT.jar</td> 
-    <td>4.6 kB</td> 
+    <td>plc4x-protocols-plc4x-0.5.0-SNAPSHOT.jar</td> 
+    <td>4.8 kB</td> 
     <td>13</td> 
     <td>0</td> 
     <td>0</td> 
@@ -1350,7 +1350,7 @@
    </tr> 
    <tr class="a"> 
     <td>34</td> 
-    <td>31.7 MB</td> 
+    <td>31.8 MB</td> 
     <td>15443</td> 
     <td>11211</td> 
     <td>348</td> 
@@ -1359,7 +1359,7 @@
    </tr> 
    <tr class="b"> 
     <td>compile: 1</td> 
-    <td>compile: 4.6 kB</td> 
+    <td>compile: 4.8 kB</td> 
     <td>compile: 13</td> 
     <td>-</td> 
     <td>-</td> 

Reply via email to