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 2022/03/09 14:19:31 UTC

[plc4x] branch develop updated: fix(codegen): switch to lookup properties in parents too

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new 9c15f0d  fix(codegen): switch to lookup properties in parents too
9c15f0d is described below

commit 9c15f0d70c73275b72f4c109499f25baf181b41d
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Mar 9 15:19:20 2022 +0100

    fix(codegen): switch to lookup properties in parents too
---
 .../language/mspec/expression/ExpressionStringListener.java    |  3 +--
 .../mspec/model/definitions/DefaultComplexTypeDefinition.java  | 10 ++++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java b/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
index 0b99ef2..3d97662 100644
--- a/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
+++ b/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringListener.java
@@ -154,8 +154,7 @@ public class ExpressionStringListener extends ExpressionBaseListener {
                 .map(DefaultTypedField.class::cast);
             // Check for other fields
             if (propertyFieldByName.isEmpty()) {
-                // TODO: do we need all fields from parent too?
-                propertyFieldByName = complexTypeDefinition.getFields().stream()
+                propertyFieldByName = complexTypeDefinition.getAllFields().stream()
                     .filter(NamedField.class::isInstance)
                     .map(NamedField.class::cast)
                     .filter(namedField -> propertyName.equals(namedField.getName()))
diff --git a/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java b/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java
index 88683f3..70ce3d1 100644
--- a/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java
+++ b/code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultComplexTypeDefinition.java
@@ -124,6 +124,16 @@ public class DefaultComplexTypeDefinition extends DefaultTypeDefinition implemen
     }
 
     @Override
+    public List<Field> getAllFields() {
+        List<Field> fields = new LinkedList<>();
+        getParentType()
+            .map(ComplexTypeDefinition::getAllFields)
+            .map(fields::addAll);
+        fields.addAll(getFields());
+        return fields;
+    }
+
+    @Override
     public List<PropertyField> getAllPropertyFields() {
         List<PropertyField> fields = new LinkedList<>();
         getParentType()