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 2021/10/11 19:13:02 UTC

[plc4x] 02/02: - Worked on the float types

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

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

commit 9c70d8b73800de549832c04e3df8cc9acf59b31f
Author: cdutz <ch...@c-ware.de>
AuthorDate: Mon Oct 11 21:12:51 2021 +0200

    - Worked on the float types
---
 .../org/apache/plc4x/language/java/JavaLanguageOutput.java    |  8 ++++++--
 .../plc4x/language/java/JavaLanguageTemplateHelper.java       | 11 +++++------
 .../src/main/resources/templates/java/io-template.java.ftlh   |  8 +++++++-
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java
index bcc2ec6..f01fca1 100644
--- a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java
+++ b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageOutput.java
@@ -26,6 +26,8 @@ import org.apache.commons.io.FileUtils;
 import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput;
 import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper;
 import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -34,7 +36,9 @@ import java.util.*;
 
 public class JavaLanguageOutput extends FreemarkerLanguageOutput {
 
-    private Formatter formatter = new Formatter();
+    private static final Logger LOGGER = LoggerFactory.getLogger(JavaLanguageOutput.class);
+
+    private final Formatter formatter = new Formatter();
 
     @Override
     public String getName() {
@@ -93,7 +97,7 @@ public class JavaLanguageOutput extends FreemarkerLanguageOutput {
                 StandardCharsets.UTF_8
             );
         } catch (IOException | FormatterException e) {
-            throw new RuntimeException("Error formatting " + outputFile, e);
+            LOGGER.error("Error formatting {}", outputFile, e);
         }
     }
 }
diff --git a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 863727e..04337bf 100644
--- a/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/code-generation/language-java-ng/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -60,19 +60,18 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
 
     @Override
     public String getLanguageTypeNameForField(Field field) {
-        boolean optional = field instanceof OptionalField;
         // If the referenced type is a DataIo type, the value is of type PlcValue.
-        if (field instanceof PropertyField) {
-            PropertyField propertyField = (PropertyField) field;
-            if (propertyField.getType() instanceof ComplexTypeReference) {
-                ComplexTypeReference complexTypeReference = (ComplexTypeReference) propertyField.getType();
+        if (field.isPropertyField()) {
+            PropertyField propertyField = field.asPropertyField().orElseThrow(IllegalStateException::new);
+            if (propertyField.getType().isComplexTypeReference()) {
+                ComplexTypeReference complexTypeReference = propertyField.getType().asComplexTypeReference().orElseThrow(IllegalStateException::new);
                 final TypeDefinition typeDefinition = getTypeDefinitions().get(complexTypeReference.getName());
                 if (typeDefinition instanceof DataIoTypeDefinition) {
                     return "PlcValue";
                 }
             }
         }
-        return getLanguageTypeNameForTypeReference(((TypedField) field).getType(), !optional);
+        return getLanguageTypeNameForTypeReference(((TypedField) field).getType(), !field.isOptionalField());
     }
 
     public String getNonPrimitiveLanguageTypeNameForField(TypedField field) {
diff --git a/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh b/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
index b8b3201..00d4ec4 100644
--- a/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
+++ b/code-generation/language-java-ng/src/main/resources/templates/java/io-template.java.ftlh
@@ -53,7 +53,9 @@ import ${helper.packageName(protocolName, languageName, outputFlavor)}.*;
 import ${helper.packageName(protocolName, languageName, outputFlavor)}.types.*;
 
 import org.apache.plc4x.java.spi.codegen.fields.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
 import org.apache.plc4x.java.spi.codegen.io.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
 import org.apache.plc4x.java.spi.generation.*;
 import org.apache.plc4x.java.api.value.PlcValue;
@@ -324,6 +326,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
             <#assign typeRefForDataCall = helper.getEnumBaseTypeReference(constField.type)>
             <#assign dataReaderCall>new DataReaderEnumDefault(${helper.getLanguageTypeNameForField(field)}::enumForValue, ${helper.getDataReaderCall(typeRefForDataCall)})</#assign>
         </#if>
+        ${helper.getLanguageTypeNameForField(field)} ${constField.name} = read${field.typeName?cap_first}Field("${constField.name}", ${dataReaderCall}, ${type.name}.${constField.name?upper_case});
         <#break>
     <#case "discriminator">
         <#assign discriminatorField = field.asDiscriminatorField().orElseThrow()>
@@ -496,6 +499,9 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
         <#if optionalField.conditionExpression.present>
         }
         </#if>
+            if (1 == 2) {
+                throw new ParseAssertException("oh no java");
+            }
         } catch(ParseAssertException ignore){
             readBuffer.reset(curPos);
         }
@@ -547,7 +553,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
             int _timesPadding = (int) (${helper.toParseExpression(paddingField, paddingField.paddingCondition, parserArguments)});
             while ((readBuffer.hasMore(${helper.getNumBits(simpleTypeReference)})) && (_timesPadding-- > 0)) {
                 // Just read the padding data and ignore it
-                ${helper.getReadBufferReadMethodCall(simpleTypeReference, "", paddingField)};
+                Object ignore = ${helper.getReadBufferReadMethodCall(simpleTypeReference, "", paddingField)};
             }
             readBuffer.closeContext("padding", WithReaderWriterArgs.WithRenderAsList(true));
         }