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/22 08:16:02 UTC

[plc4x] branch feature/mspec-ng updated: feat(plc4j/codgen): add additional optional factory method for expressionless optionals

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 b71830d  feat(plc4j/codgen): add additional optional factory method for expressionless optionals
b71830d is described below

commit b71830d8cf0233a9c21c7c24b5a7ab896ca49933
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Oct 22 10:15:52 2021 +0200

    feat(plc4j/codgen): add additional optional factory method for expressionless optionals
---
 .../src/main/resources/templates/java/io-template.java.ftlh       | 2 +-
 .../apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java  | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

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 2232d00..61b705e 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
@@ -453,7 +453,7 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
         <#if optionalField.conditionExpression.present && optionalField.conditionExpression.orElseThrow().contains("curPos")>
             curPos = readBuffer.getPos();
         </#if>
-        ${helper.getLanguageTypeNameForField(field)} ${namedField.name} = read${field.typeName?cap_first}Field("${namedField.name}", ${helper.getDataReaderCall(typedField.type)}, <#if optionalField.conditionExpression.present>${helper.toParseExpression(optionalField, optionalField.conditionExpression.get(), parserArguments)}<#else>true</#if>);
+        ${helper.getLanguageTypeNameForField(field)} ${namedField.name} = read${field.typeName?cap_first}Field("${namedField.name}", ${helper.getDataReaderCall(typedField.type)}<#if optionalField.conditionExpression.present>, ${helper.toParseExpression(optionalField, optionalField.conditionExpression.get(), parserArguments)}</#if>);
         <#break>
     <#case "assert">
         <#assign assertField = field.asAssertField().orElseThrow()>
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java
index 9dc32dc..da87857 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java
@@ -52,6 +52,10 @@ public class FieldReaderFactory {
         return new FieldReaderImplicit<T>().readField(logicalName, dataReader, readerArgs);
     }
 
+    public static <T> T readOptionalField(String logicalName, DataReader<T> dataReader, WithReaderArgs... readerArgs) throws ParseException {
+        return new FieldReaderOptional<T>().readOptionalField(logicalName, dataReader, true, readerArgs);
+    }
+
     public static <T> T readOptionalField(String logicalName, DataReader<T> dataReader, boolean condition, WithReaderArgs... readerArgs) throws ParseException {
         return new FieldReaderOptional<T>().readOptionalField(logicalName, dataReader, condition, readerArgs);
     }
@@ -64,6 +68,10 @@ public class FieldReaderFactory {
         return new FieldReaderReserved<T>().readReservedField(logicalName, dataReader, expectedValue, readerArgs);
     }
 
+    public static <T> T readSimpleField(String logicalName, DataReader<T> dataReader, WithReaderArgs... readerArgs) throws ParseException {
+        return new FieldReaderSimple<T>().readField(logicalName,dataReader,readerArgs);
+    }
+
     public static <T> T readUnknownField(String logicalName, DataReader<T> dataReader, WithReaderArgs... readerArgs) throws ParseException {
         return new FieldReaderUnknown<T>().readUnknownField(logicalName, dataReader, readerArgs);
     }