You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2021/10/03 12:55:42 UTC

[plc4x] branch feature/mspec-ng updated: fix(codegen): fix several small issues

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

sruehl pushed a commit to branch feature/mspec-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/feature/mspec-ng by this push:
     new 92e29da  fix(codegen): fix several small issues
92e29da is described below

commit 92e29dad9832fa6b4fd3cea6d85be43fd3092708
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Sun Oct 3 14:55:31 2021 +0200

    fix(codegen): fix several small issues
---
 .../language/go/GoLanguageTemplateHelper.java      |  4 ++--
 .../apache/plc4x/language/go/utils/FieldUtils.java |  2 +-
 .../resources/templates/java/io-template.java.ftlh |  2 +-
 .../mspec/parser/MessageFormatListener.java        |  9 ++++++---
 protocols/knxnetip/pom.xml                         |  4 ++++
 .../plc4x/protocol/knxnetip/KnxNetIpProtocol.java  | 16 ++++++++++------
 protocols/opcua/pom.xml                            | 22 ++--------------------
 7 files changed, 26 insertions(+), 33 deletions(-)

diff --git a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index a57d1ec..55834d3 100644
--- a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -1111,7 +1111,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                     }
                 } else if (curField instanceof OptionalField) {
                     OptionalField optionalField = (OptionalField) curField;
-                    if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().get().contains(name)) {
+                    if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(name)) {
                         return name;
                     }
                 } else if (curField instanceof SwitchField) {
@@ -1213,7 +1213,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             }
         } else if (curField instanceof OptionalField) {
             OptionalField optionalField = (OptionalField) curField;
-            if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().get().contains(variable)) {
+            if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(variable)) {
                 return true;
             }
         }
diff --git a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/utils/FieldUtils.java b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/utils/FieldUtils.java
index 427161e..7040226 100644
--- a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/utils/FieldUtils.java
+++ b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/utils/FieldUtils.java
@@ -66,7 +66,7 @@ public class FieldUtils {
             }
             case "optional": {
                 OptionalField optionalField = (OptionalField) field;
-                return optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().get().contains(label);
+                return optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(label);
             }
             case "padding": {
                 PaddingField paddingField = (PaddingField) field;
diff --git a/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh
index b3cadf1..3305725 100644
--- a/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh
@@ -449,7 +449,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
         curPos = readBuffer.getPos();
         try {
         </#if>
-        <#if optionalField.conditionExpression.present && optionalField.conditionExpression.get().contains("curPos")>
+        <#if optionalField.conditionExpression.present && optionalField.conditionExpression.orElseThrow().contains("curPos")>
         curPos = readBuffer.getPos();
         </#if>
         ${helper.getLanguageTypeNameForField(field)} ${optionalField.name} = null;
diff --git a/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java b/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
index 2455c5b..39838a4 100644
--- a/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
+++ b/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
@@ -282,8 +282,11 @@ public class MessageFormatListener extends MSpecBaseListener {
     public void enterOptionalField(MSpecParser.OptionalFieldContext ctx) {
         TypeReference type = getTypeReference(ctx.type);
         String name = getIdString(ctx.name);
-        String conditionExpressionString = getExprString(ctx.condition);
-        Term conditionExpression = getExpressionTerm(conditionExpressionString);
+        Term conditionExpression = null;
+        if (ctx.condition != null) {
+            String conditionExpressionString = getExprString(ctx.condition);
+            conditionExpression = getExpressionTerm(conditionExpressionString);
+        }
         MSpecParser.FieldDefinitionContext fieldDefinitionContext = (MSpecParser.FieldDefinitionContext) ctx.parent.parent;
         List<Term> params = getFieldParams(fieldDefinitionContext);
         Field field = new DefaultOptionalField(null, type, name, conditionExpression, params);
@@ -475,7 +478,7 @@ public class MessageFormatListener extends MSpecBaseListener {
             SimpleTypeReference.SimpleBaseType.valueOf(ctx.base.getText().toUpperCase());
         // String types need an additional "encoding" field and length expression.
         if ((simpleBaseType == SimpleTypeReference.SimpleBaseType.STRING) ||
-                (simpleBaseType == SimpleTypeReference.SimpleBaseType.VSTRING)) {
+            (simpleBaseType == SimpleTypeReference.SimpleBaseType.VSTRING)) {
             if (simpleBaseType == SimpleTypeReference.SimpleBaseType.VSTRING) {
                 Term lengthExpression = getExpressionTerm(ctx.length.getText().substring(1, ctx.length.getText().length() - 1));
                 return new DefaultStringTypeReference(simpleBaseType, lengthExpression, "UTF-8");
diff --git a/protocols/knxnetip/pom.xml b/protocols/knxnetip/pom.xml
index 8563858..83def65 100644
--- a/protocols/knxnetip/pom.xml
+++ b/protocols/knxnetip/pom.xml
@@ -111,6 +111,10 @@
       <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
       <version>0.10.0-SNAPSHOT</version>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
 
     <!-- Generally used for the metadata generator to not pollute the classpath -->
     <dependency>
diff --git a/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java b/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java
index e44a7f6..0211d9b 100644
--- a/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java
+++ b/protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/KnxNetIpProtocol.java
@@ -22,6 +22,8 @@ import org.apache.plc4x.plugins.codegenerator.language.mspec.parser.MessageForma
 import org.apache.plc4x.plugins.codegenerator.protocol.Protocol;
 import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
 import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.InputStream;
 import java.util.LinkedHashMap;
@@ -29,6 +31,8 @@ import java.util.Map;
 
 public class KnxNetIpProtocol implements Protocol {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(KnxNetIpProtocol.class);
+
     @Override
     public String getName() {
         return "knxnetip";
@@ -36,27 +40,27 @@ public class KnxNetIpProtocol implements Protocol {
 
     @Override
     public Map<String, TypeDefinition> getTypeDefinitions() throws GenerationException {
-        System.out.println("Parsing: knxnetip.mspec");
+        LOGGER.info("Parsing: knxnetip.mspec");
         InputStream schemaInputStream = KnxNetIpProtocol.class.getResourceAsStream(
             "/protocols/knxnetip/knxnetip.mspec");
-        if(schemaInputStream == null) {
+        if (schemaInputStream == null) {
             throw new GenerationException("Error loading message-format schema for protocol '" + getName() + "'");
         }
         Map<String, TypeDefinition> typeDefinitionMap =
             new LinkedHashMap<>(new MessageFormatParser().parse(schemaInputStream));
 
-        System.out.println("Parsing: knx-master-data.mspec");
+        LOGGER.info("Parsing: knx-master-data.mspec");
         InputStream masterDataInputStream = KnxNetIpProtocol.class.getResourceAsStream(
             "/protocols/knxnetip/knx-master-data.mspec");
-        if(masterDataInputStream == null) {
+        if (masterDataInputStream == null) {
             throw new GenerationException("Error loading knx-master-data schema for protocol '" + getName() + "'");
         }
         typeDefinitionMap.putAll(new MessageFormatParser().parse(masterDataInputStream));
 
-        System.out.println("Parsing: device-info.mspec");
+        LOGGER.info("Parsing: device-info.mspec");
         InputStream deviceDataInputStream = KnxNetIpProtocol.class.getResourceAsStream(
             "/protocols/knxnetip/device-info.mspec");
-        if(deviceDataInputStream == null) {
+        if (deviceDataInputStream == null) {
             throw new GenerationException("Error loading device-info schema for protocol '" + getName() + "'");
         }
         typeDefinitionMap.putAll(new MessageFormatParser().parse(deviceDataInputStream));
diff --git a/protocols/opcua/pom.xml b/protocols/opcua/pom.xml
index dde9f94..95f378e 100644
--- a/protocols/opcua/pom.xml
+++ b/protocols/opcua/pom.xml
@@ -34,11 +34,11 @@
 
   <build>
     <plugins>
-      <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
       <plugin>
         <groupId>com.googlecode.maven-download-plugin</groupId>
         <artifactId>download-maven-plugin</artifactId>
         <executions>
+          <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
           <execution>
             <id>fetch-opc-datatypes</id>
             <phase>generate-resources</phase>
@@ -54,13 +54,7 @@
               <overwrite>true</overwrite>
             </configuration>
           </execution>
-        </executions>
-      </plugin>
-      <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
-      <plugin>
-        <groupId>com.googlecode.maven-download-plugin</groupId>
-        <artifactId>download-maven-plugin</artifactId>
-        <executions>
+          <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
           <execution>
             <id>fetch-opc-statuscodes</id>
             <phase>generate-resources</phase>
@@ -74,12 +68,6 @@
               <outputFileName>StatusCode.csv</outputFileName>
             </configuration>
           </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>com.googlecode.maven-download-plugin</groupId>
-        <artifactId>download-maven-plugin</artifactId>
-        <executions>
           <execution>
             <id>fetch-opc-discriminators</id>
             <phase>generate-resources</phase>
@@ -93,12 +81,6 @@
               <outputFileName>Opc.Ua.NodeSet2.Services.xml</outputFileName>
             </configuration>
           </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>com.googlecode.maven-download-plugin</groupId>
-        <artifactId>download-maven-plugin</artifactId>
-        <executions>
           <execution>
             <id>fetch-opc-services-enum</id>
             <phase>generate-resources</phase>