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 07f9f7e feat(plc4j/codegen): re-add exception handling for
expressionless optional field
07f9f7e is described below
commit 07f9f7e93e8aeb8556c3a4370ac064b1e4c32292
Author: Sebastian Rühl <[email protected]>
AuthorDate: Sun Oct 3 14:23:20 2021 +0200
feat(plc4j/codegen): re-add exception handling for expressionless optional
field
---
.../src/main/resources/templates/java/io-template.java.ftlh | 13 ++++++++++++-
1 file changed, 12 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 f856658..b3cadf1 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
@@ -443,8 +443,14 @@ public class ${type.name}IO implements <#if outputFlavor
!= "passive">MessageIO<
<#assign optionalField = field.asOptionalField().orElseThrow()>
// Optional Field (${optionalField.name}) (Can be skipped, if a given
expression evaluates to false)
+ <#if !optionalField.conditionExpression.present>
+ <#-- TODO: we need to initalize base types-->
+ ${helper.getLanguageTypeNameForField(simpleField)} ${simpleField.name}
= null;
+ curPos = readBuffer.getPos();
+ try {
+ </#if>
<#if optionalField.conditionExpression.present &&
optionalField.conditionExpression.get().contains("curPos")>
- curPos = readBuffer.getPos() - startPos;
+ curPos = readBuffer.getPos();
</#if>
${helper.getLanguageTypeNameForField(field)} ${optionalField.name} =
null;
<#if optionalField.conditionExpression.present>
@@ -494,6 +500,11 @@ public class ${type.name}IO implements <#if outputFlavor
!= "passive">MessageIO<
<#if optionalField.conditionExpression.present>
}
</#if>
+ <#if !optionalField.conditionExpression.present>
+ } catch(ParseAssertException ignore){
+ readBuffer.reset(curPos);
+ }
+ </#if>
<#break>
<#case "assert">
<#assign assertField = field.asAssertField().orElseThrow()>