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
commit c7fe9db9c6cedb4b5ee260d4ffa238bfe3aee317 Author: Sebastian Rühl <[email protected]> AuthorDate: Mon Nov 1 09:49:35 2021 +0100 fix(plc4go/codgen): fixed some issues in GoLanguageTemplateHelper --- .../language/go/GoLanguageTemplateHelper.java | 71 +++++++++++----------- 1 file changed, 34 insertions(+), 37 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 50fe7f5..a4b8fc8 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 @@ -1157,15 +1157,16 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp return name; } } - if(curField.isTypedField()) { - final TypedField typedField = curField.asTypedField().get(); - if(typedField.getType().isComplexTypeReference()) { - final ComplexTypeReference complexTypeReference = typedField.getType().asComplexTypeReference().get(); - for (Term param : complexTypeReference.getParams().orElse(Collections.emptyList())) { - if (param.contains(name)) { - return name; - } - } + List<Term> params = field.asTypedField() + .map(typedField -> typedField.getType().asComplexTypeReference() + .map(ComplexTypeReference::getParams) + .map(terms -> terms.orElse(Collections.emptyList())) + .orElse(Collections.emptyList()) + ) + .orElse(Collections.emptyList()); + for (Term param : params) { + if (param.contains(name)) { + return name; } } } @@ -1180,19 +1181,17 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp return true; } } - if(field.isTypedField()) { - final TypedField typedField = field.asTypedField().get(); - if (typedField.getType().isComplexTypeReference()) { - final ComplexTypeReference complexTypeReference = typedField.getType().asComplexTypeReference().get(); - List<Term> fieldParams = complexTypeReference.getParams().orElse(Collections.emptyList()); - for (Term param : fieldParams) { - if (param.contains(variableName)) { - return true; - } - } - } - } - return false; + return field.asTypedField() + .map(typedField -> typedField.getType().asComplexTypeReference() + .map(complexTypeReference -> complexTypeReference.getParams() + .map(params -> params.stream() + .anyMatch(param -> param.contains(variableName)) + ) + .orElse(false) + ) + .orElse(false) + ) + .orElse(false); } /** @@ -1241,30 +1240,28 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp } public boolean requiresVariable(Field curField, String variable) { - if (curField instanceof ArrayField) { + if (curField.isArrayField()) { ArrayField arrayField = (ArrayField) curField; if (arrayField.getLoopExpression().contains(variable)) { return true; } - } else if (curField instanceof OptionalField) { + } else if (curField.isOptionalField()) { OptionalField optionalField = (OptionalField) curField; if (optionalField.getConditionExpression().isPresent() && optionalField.getConditionExpression().orElseThrow(IllegalStateException::new).contains(variable)) { return true; } } - if(curField.isTypedField()) { - final TypedField typedField = curField.asTypedField().get(); - if (typedField.getType().isComplexTypeReference()) { - final ComplexTypeReference complexTypeReference = typedField.getType().asComplexTypeReference().get(); - List<Term> fieldParams = complexTypeReference.getParams().orElse(Collections.emptyList()); - for (Term param : fieldParams) { - if (param.contains(variable)) { - return true; - } - } - } - } - return false; + return curField.asTypedField() + .map(typedField -> typedField.getType().asComplexTypeReference() + .map(complexTypeReference -> complexTypeReference.getParams() + .map(params -> params.stream() + .anyMatch(param -> param.contains(variable)) + ) + .orElse(false) + ) + .orElse(false) + ) + .orElse(false); } public Term findTerm(Term baseTerm, String name) {
