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);
}