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) {

Reply via email to