You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/03/17 16:35:43 UTC

[plc4x] branch develop updated (d181ec4 -> 825158a)

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

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


    from d181ec4  - Added the ability to handle vlan traffic.
     new ce0f022  - Made the code generation output the real type for discriminator constants.
     new b8387e1  - Worked on the firmata tests
     new 9eaa746  - Worked on the firmata tests
     new 825158a  - Renamed the test files so surefire and failsafe will pick them up

The 4 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:
 .../language/java/JavaLanguageTemplateHelper.java  | 26 +++++++
 .../resources/templates/java/pojo-template.ftlh    |  2 +-
 .../java/firmata/readwrite/FirmataDriver.java      |  2 +
 .../readwrite/protocol/FirmataProtocolLogic.java   |  2 +-
 ...suite.java => FirmataParserSerializerTest.java} |  6 +-
 ...stsuite.xml => FirmataParserSerializerTest.xml} | 91 ++++++++++++++++------
 .../{S7DriverTestsuite.java => S7DriverIT.java}    |  6 +-
 ...rTestsuite.java => S7ParserSerializerTest.java} |  6 +-
 .../{S7DriverTestsuite.xml => S7DriverIT.xml}      |  0
 ...zerTestsuite.xml => S7ParserSerializerTest.xml} |  0
 .../main/resources/protocols/firmata/firmata.mspec | 20 +++--
 11 files changed, 120 insertions(+), 41 deletions(-)
 rename plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/{FirmataParserSerializerTestsuite.java => FirmataParserSerializerTest.java} (81%)
 rename plc4j/drivers/firmata/src/test/resources/testsuite/{FirmataParserSerializerTestsuite.xml => FirmataParserSerializerTest.xml} (81%)
 rename plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/{S7DriverTestsuite.java => S7DriverIT.java} (85%)
 rename plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/{S7ParserSerializerTestsuite.java => S7ParserSerializerTest.java} (82%)
 rename plc4j/drivers/s7/src/test/resources/testsuite/{S7DriverTestsuite.xml => S7DriverIT.xml} (100%)
 rename plc4j/drivers/s7/src/test/resources/testsuite/{S7ParserSerializerTestsuite.xml => S7ParserSerializerTest.xml} (100%)


[plc4x] 04/04: - Renamed the test files so surefire and failsafe will pick them up

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

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

commit 825158a23bed96a46ccba51ddbbe07b36b648092
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Mar 17 17:35:36 2020 +0100

    - Renamed the test files so surefire and failsafe will pick them up
---
 .../java/s7/readwrite/{S7DriverTestsuite.java => S7DriverIT.java}   | 6 +++---
 ...S7ParserSerializerTestsuite.java => S7ParserSerializerTest.java} | 6 +++---
 .../resources/testsuite/{S7DriverTestsuite.xml => S7DriverIT.xml}   | 0
 .../{S7ParserSerializerTestsuite.xml => S7ParserSerializerTest.xml} | 0
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7DriverTestsuite.java b/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7DriverIT.java
similarity index 85%
rename from plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7DriverTestsuite.java
rename to plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7DriverIT.java
index 97b2313..36abedf 100644
--- a/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7DriverTestsuite.java
+++ b/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7DriverIT.java
@@ -20,10 +20,10 @@ package org.apache.plc4x.java.s7.readwrite;
 
 import org.apache.plc4x.test.driver.DriverTestsuiteRunner;
 
-public class S7DriverTestsuite extends DriverTestsuiteRunner {
+public class S7DriverIT extends DriverTestsuiteRunner {
 
-    public S7DriverTestsuite() {
-        super("/testsuite/S7DriverTestsuite.xml");
+    public S7DriverIT() {
+        super("/testsuite/S7DriverIT.xml");
     }
 
 }
diff --git a/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7ParserSerializerTestsuite.java b/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7ParserSerializerTest.java
similarity index 82%
rename from plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7ParserSerializerTestsuite.java
rename to plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7ParserSerializerTest.java
index 26580d0..0a596a1 100644
--- a/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7ParserSerializerTestsuite.java
+++ b/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/S7ParserSerializerTest.java
@@ -20,10 +20,10 @@ package org.apache.plc4x.java.s7.readwrite;
 
 import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner;
 
-public class S7ParserSerializerTestsuite extends ParserSerializerTestsuiteRunner {
+public class S7ParserSerializerTest extends ParserSerializerTestsuiteRunner {
 
-    public S7ParserSerializerTestsuite() {
-        super("/testsuite/S7ParserSerializerTestsuite.xml");
+    public S7ParserSerializerTest() {
+        super("/testsuite/S7ParserSerializerTest.xml");
     }
 
 }
diff --git a/plc4j/drivers/s7/src/test/resources/testsuite/S7DriverTestsuite.xml b/plc4j/drivers/s7/src/test/resources/testsuite/S7DriverIT.xml
similarity index 100%
rename from plc4j/drivers/s7/src/test/resources/testsuite/S7DriverTestsuite.xml
rename to plc4j/drivers/s7/src/test/resources/testsuite/S7DriverIT.xml
diff --git a/plc4j/drivers/s7/src/test/resources/testsuite/S7ParserSerializerTestsuite.xml b/plc4j/drivers/s7/src/test/resources/testsuite/S7ParserSerializerTest.xml
similarity index 100%
rename from plc4j/drivers/s7/src/test/resources/testsuite/S7ParserSerializerTestsuite.xml
rename to plc4j/drivers/s7/src/test/resources/testsuite/S7ParserSerializerTest.xml


[plc4x] 03/04: - Worked on the firmata tests

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

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

commit 9eaa746df69aed907256f00ae15d080d9fc61fbf
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Mar 17 17:35:06 2020 +0100

    - Worked on the firmata tests
---
 .../main/resources/protocols/firmata/firmata.mspec   | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec b/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec
index 0a522c7..6d57b6c 100644
--- a/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec
+++ b/protocols/firmata/src/main/resources/protocols/firmata/firmata.mspec
@@ -17,7 +17,7 @@
 // under the License.
 //
 
-[discriminatedType 'FirmataMessage'
+[discriminatedType 'FirmataMessage' [bit 'response']
     [discriminator uint 4 'messageType']
     [typeSwitch 'messageType'
         // Reading operations
@@ -51,16 +51,16 @@
 
         // Command
         ['0xF' FirmataMessageCommand
-            [simple FirmataCommand 'command']
+            [simple FirmataCommand 'command' ['response']]
         ]
     ]
 ]
 
-[discriminatedType 'FirmataCommand'
+[discriminatedType 'FirmataCommand' [bit 'response']
     [discriminator uint 4 'command']
     [typeSwitch 'command'
         ['0x0' FirmataCommandSysex
-            [simple SysexCommand 'command']
+            [simple SysexCommand 'command' ['response']]
             [reserved uint 8 '0xF7']
         ]
         ['0x4' FirmataCommandSetPinMode
@@ -81,13 +81,15 @@
     ]
 ]
 
-[discriminatedType 'SysexCommand'
+[discriminatedType 'SysexCommand' [bit 'response']
     [discriminator uint 8 'commandType']
-    [typeSwitch 'commandType'
+    [typeSwitch 'commandType','response'
         ['0x00' SysexCommandExendedId
             [array int 8 'id' count '2']
         ]
-        ['0x69' SysexCommandAnalogMappingQuery
+        ['0x69','false' SysexCommandAnalogMappingQueryRequest
+        ]
+        ['0x69','true' SysexCommandAnalogMappingQueryResponse
             [simple uint 8 'pin']
         ]
         ['0x6A' SysexCommandAnalogMappingResponse
@@ -108,7 +110,9 @@
         ]
         ['0x71' SysexCommandStringData
         ]
-        ['0x79' SysexCommandReportFirmware
+        ['0x79','false' SysexCommandReportFirmwareRequest
+        ]
+        ['0x79','true' SysexCommandReportFirmwareResponse
             [simple uint 8 'majorVersion']
             [simple uint 8 'minorVersion']
             [manualArray int 8 'fileName' terminated 'STATIC_CALL("org.apache.plc4x.java.firmata.readwrite.utils.FirmataUtils.isSysexEnd", io)' 'STATIC_CALL("org.apache.plc4x.java.firmata.readwrite.utils.FirmataUtils.parseSysexString", io)' 'STATIC_CALL("org.apache.plc4x.java.firmata.readwrite.utils.FirmataUtils.serializeSysexString", io, element)' 'STATIC_CALL("org.apache.plc4x.java.firmata.readwrite.utils.FirmataUtils.lengthSysexString", fileName)']


[plc4x] 02/04: - Worked on the firmata tests

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

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

commit b8387e14d8283251a9d8da68d96af6831982ebf6
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Mar 17 17:34:56 2020 +0100

    - Worked on the firmata tests
---
 .../java/firmata/readwrite/FirmataDriver.java      |  2 +
 .../readwrite/protocol/FirmataProtocolLogic.java   |  2 +-
 ...suite.java => FirmataParserSerializerTest.java} |  6 +-
 ...stsuite.xml => FirmataParserSerializerTest.xml} | 91 ++++++++++++++++------
 4 files changed, 75 insertions(+), 26 deletions(-)

diff --git a/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/FirmataDriver.java b/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/FirmataDriver.java
index 07b8105..54bd704 100644
--- a/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/FirmataDriver.java
+++ b/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/FirmataDriver.java
@@ -81,6 +81,8 @@ public class FirmataDriver extends GeneratedDriverBase<FirmataMessage> {
             .withDriverContext(FirmataDriverContext.class)
             .withPacketSizeEstimator(ByteLengthEstimator.class)
             .withCorruptPacketRemover(CorruptPackageCleaner.class)
+            // Every incoming message is to be treated as a response.
+            .withParserArgs(true)
             .build();
     }
 
diff --git a/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/protocol/FirmataProtocolLogic.java b/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/protocol/FirmataProtocolLogic.java
index c08b994..645d448 100644
--- a/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/protocol/FirmataProtocolLogic.java
+++ b/plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/readwrite/protocol/FirmataProtocolLogic.java
@@ -76,7 +76,7 @@ public class FirmataProtocolLogic extends Plc4xProtocolBase<FirmataMessage> impl
             .unwrap(FirmataMessageCommand::getCommand)
             .only(FirmataCommandSysex.class)
             .unwrap(FirmataCommandSysex::getCommand)
-            .only(SysexCommandReportFirmware.class)
+            .only(SysexCommandReportFirmwareResponse.class)
             .handle(sysexCommandReportFirmware -> {
                 String name = new String(sysexCommandReportFirmware.getFileName(), StandardCharsets.UTF_8);
                 LOGGER.info(String.format("Connected to Firmata host running version %s.%s with name %s",
diff --git a/plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/FirmataParserSerializerTestsuite.java b/plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/FirmataParserSerializerTest.java
similarity index 81%
rename from plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/FirmataParserSerializerTestsuite.java
rename to plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/FirmataParserSerializerTest.java
index 7e0f5dc..4d159fe 100644
--- a/plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/FirmataParserSerializerTestsuite.java
+++ b/plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/readwrite/FirmataParserSerializerTest.java
@@ -20,10 +20,10 @@ package org.apache.plc4x.java.firmata.readwrite;
 
 import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner;
 
-public class FirmataParserSerializerTestsuite extends ParserSerializerTestsuiteRunner {
+public class FirmataParserSerializerTest extends ParserSerializerTestsuiteRunner {
 
-    public FirmataParserSerializerTestsuite() {
-        super("/testsuite/FirmataParserSerializerTestsuite.xml");
+    public FirmataParserSerializerTest() {
+        super("/testsuite/FirmataParserSerializerTest.xml");
     }
 
 }
diff --git a/plc4j/drivers/firmata/src/test/resources/testsuite/FirmataParserSerializerTestsuite.xml b/plc4j/drivers/firmata/src/test/resources/testsuite/FirmataParserSerializerTest.xml
similarity index 81%
rename from plc4j/drivers/firmata/src/test/resources/testsuite/FirmataParserSerializerTestsuite.xml
rename to plc4j/drivers/firmata/src/test/resources/testsuite/FirmataParserSerializerTest.xml
index 6f392fc..bb15b63 100644
--- a/plc4j/drivers/firmata/src/test/resources/testsuite/FirmataParserSerializerTestsuite.xml
+++ b/plc4j/drivers/firmata/src/test/resources/testsuite/FirmataParserSerializerTest.xml
@@ -25,6 +25,9 @@
     <name>Firmata Reset</name>
     <raw>FF</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSystemReset"/>
@@ -36,6 +39,9 @@
     <name>Firmata Report Version</name>
     <raw>F90205</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandProtocolVersion">
@@ -50,10 +56,13 @@
     <name>Firmata Report Version And Name</name>
     <raw>F07902055300740061006E0064006100720064004600690072006D006100740061002E0069006E006F00F7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
-          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandReportFirmware">
+          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandReportFirmwareResponse">
             <majorVersion>2</majorVersion>
             <minorVersion>5</minorVersion>
             <fileName>U3RhbmRhcmRGaXJtYXRhLmlubw==</fileName>
@@ -63,25 +72,33 @@
     </xml>
   </testcase>
 
-  <!-- TODO: Fix this -->
-  <!--testcase>
+  <testcase>
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandReportFirmware (Request)</name>
     <raw>f079f7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
+        <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
+          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandReportFirmwareRequest"/>
+        </command>
       </FirmataMessageCommand>
     </xml>
-  </testcase-->
+  </testcase>
 
   <testcase>
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandReportFirmware (Response)</name>
     <raw>f07902055300740061006e0064006100720064004600690072006d006100740061002e0069006e006f00f7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
-          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandReportFirmware">
+          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandReportFirmwareResponse">
             <majorVersion>2</majorVersion>
             <minorVersion>5</minorVersion>
             <fileName>U3RhbmRhcmRGaXJtYXRhLmlubw==</fileName>
@@ -95,10 +112,13 @@
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandAnalogMappingQuery (Request)</name>
     <raw>f069f7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
-          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandAnalogMappingQuery"/>
+          <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandAnalogMappingQueryRequest"/>
         </command>
       </FirmataMessageCommand>
     </xml>
@@ -108,6 +128,9 @@
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandCapabilityQuery (Request)</name>
     <raw>f06bf7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
@@ -121,6 +144,9 @@
     <name>FirmataMessageSubscribeAnalogPinValue (Pin 0)</name>
     <raw>c001</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageSubscribeAnalogPinValue className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageSubscribeAnalogPinValue">
         <pin>0</pin>
@@ -133,6 +159,9 @@
     <name>FirmataMessageSubscribeDigitalPinValue (Pin 0)</name>
     <raw>d001</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageSubscribeDigitalPinValue className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageSubscribeDigitalPinValue">
         <pin>0</pin>
@@ -142,38 +171,44 @@
   </testcase>
 
   <!-- TODO: Fix this -->
-  <testcase>
+  <!--testcase>
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandAnalogMappingResponse</name>
-    <raw></raw>
+    <raw>F069</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
       </FirmataMessageCommand>
     </xml>
-  </testcase>
+  </testcase-->
 
   <!-- TODO: Fix this -->
-  <testcase>
+  <!--testcase>
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandCapabilityResponse</name>
     <raw></raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
       </FirmataMessageCommand>
     </xml>
-  </testcase>
+  </testcase-->
 
   <testcase>
     <name>FirmataMessageAnalogIO (Pin 0)</name>
     <raw>e05403</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageAnalogIO className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageAnalogIO">
         <pin>0</pin>
-        <data>
-          <data>84</data>
-          <data>3</data>
-        </data>
+        <data>VAM=</data>
       </FirmataMessageAnalogIO>
     </xml>
   </testcase>
@@ -182,10 +217,13 @@
     <name>FirmataMessageDigitalIO (Pin 0)</name>
     <raw>900000</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageDigitalIO className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageDigitalIO">
-        <pin>0</pin>
-        <data>0</data>
+        <pinBlock>0</pinBlock>
+        <data>AAA=</data>
       </FirmataMessageDigitalIO>
     </xml>
   </testcase>
@@ -194,6 +232,9 @@
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandPinStateQuery (Pin 2)</name>
     <raw>f06d02f7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>false</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
@@ -209,22 +250,28 @@
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandPinStateResponse</name>
     <raw>f06e020100f7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
           <command className="org.apache.plc4x.java.firmata.readwrite.SysexCommandPinStateResponse">
             <pin>2</pin>
-            <state>256</state>
+            <pinMode>1</pinMode>
+            <pinState>0</pinState>
           </command>
         </command>
-      </FirmataMessageCommand>
-    </xml>
+      </FirmataMessageCommand>    </xml>
   </testcase>
 
-  <testcase>
+  <!--testcase>
     <name>FirmataMessageCommand->FirmataCommandSysex->SysexCommandPinStateResponse (short)</name>
     <raw>f06e14f7</raw>
     <root-type>FirmataMessage</root-type>
+    <parser-arguments>
+      <response>true</response>
+    </parser-arguments>
     <xml>
       <FirmataMessageCommand className="org.apache.plc4x.java.firmata.readwrite.FirmataMessageCommand">
         <command className="org.apache.plc4x.java.firmata.readwrite.FirmataCommandSysex">
@@ -234,6 +281,6 @@
         </command>
       </FirmataMessageCommand>
    </xml>
-  </testcase>
+  </testcase-->
 
 </test:testsuite>
\ No newline at end of file


[plc4x] 01/04: - Made the code generation output the real type for discriminator constants.

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

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

commit ce0f02223da573e9a541c0a96fdad395cb964336
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Mar 17 17:32:20 2020 +0100

    - Made the code generation output the real type for discriminator constants.
---
 .../language/java/JavaLanguageTemplateHelper.java  | 26 ++++++++++++++++++++++
 .../resources/templates/java/pojo-template.ftlh    |  2 +-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index ad867e0..df7ce05 100644
--- a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -428,6 +428,32 @@ public class JavaLanguageTemplateHelper implements FreemarkerLanguageTemplateHel
         return typeDefinition instanceof DiscriminatedComplexTypeDefinition;
     }
 
+    public String getDiscriminatorConstantType(DiscriminatedComplexTypeDefinition type, int index) {
+        final ComplexTypeDefinition parentType = (ComplexTypeDefinition) type.getParentType();
+        final Optional<Field> typeSwitchField = parentType.getFields().stream().filter(field -> field instanceof SwitchField).findFirst();
+        final SwitchField switchField = (SwitchField) typeSwitchField.get();
+        String fieldName = switchField.getDiscriminatorNames()[index];
+        final Optional<Field> regularField = parentType.getFields().stream().filter(field ->
+            ((field instanceof PropertyField) && ((PropertyField) field).getName().equals(fieldName)) ||
+                ((field instanceof ImplicitField) && ((ImplicitField) field).getName().equals(fieldName)) ||
+                ((field instanceof DiscriminatorField) && ((DiscriminatorField) field).getName().equals(fieldName))).findFirst();
+        if(regularField.isPresent()) {
+            final Field field = regularField.get();
+            if(field instanceof PropertyField) {
+                return getLanguageTypeName(((PropertyField) field).getType(), true);
+            } else if(field instanceof ImplicitField) {
+                return getLanguageTypeName(((ImplicitField) field).getType(), true);
+            } else {
+                return getLanguageTypeName(((DiscriminatorField) field).getType(), true);
+            }
+        }
+        final Optional<Argument> typeArgument = Arrays.stream(type.getParserArguments()).filter(argument -> fieldName.equals(argument.getName())).findFirst();
+        if(typeArgument.isPresent()) {
+            return getLanguageTypeName(typeArgument.get().getType(), true);
+        }
+        return "Object";
+    }
+
     public boolean isAbstractField(Field field) {
         return field instanceof AbstractField;
     }
diff --git a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
index c689e0a..25027ec 100644
--- a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
@@ -63,7 +63,7 @@ public<#if type.abstract> abstract</#if> class ${typeName}<#if type.parentType??
     public static final Object[] DISCRIMINATOR_VALUES = new Object[] {
     <#list type.discriminatorValues as discriminatorValue>
         <#-- There are rare occasions where the discriminator is defined by a parser argument, in this case we currently can't detect the type -->
-        <#if type.discriminatorField??>(${helper.getLanguageTypeNameForField(type.discriminatorField)}) </#if>${discriminatorValue}<#sep>, </#sep>
+        (${helper.getDiscriminatorConstantType(type, discriminatorValue?index)}) ${discriminatorValue}<#sep>, </#sep>
     </#list>
     };
 </#if>