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/07 13:57:15 UTC
[plc4x-build-tools] branch develop updated: fix(codegen): fix ComplexTypeDefinition#isNonDiscriminatorField so it respects virtual fields 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-build-tools.git
The following commit(s) were added to refs/heads/develop by this push:
new ffbec8f fix(codegen): fix ComplexTypeDefinition#isNonDiscriminatorField so it respects virtual fields too
ffbec8f is described below
commit ffbec8f639d5bc753f5cba66ed0f2dd4f9ce0dd9
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Mar 7 14:52:06 2022 +0100
fix(codegen): fix ComplexTypeDefinition#isNonDiscriminatorField so it respects virtual fields too
---
.../types/definitions/ComplexTypeDefinition.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/code-generation/types-base/src/main/java/org/apache/plc4x/plugins/codegenerator/types/definitions/ComplexTypeDefinition.java b/code-generation/types-base/src/main/java/org/apache/plc4x/plugins/codegenerator/types/definitions/ComplexTypeDefinition.java
index f1c9ba6..4e81a02 100644
--- a/code-generation/types-base/src/main/java/org/apache/plc4x/plugins/codegenerator/types/definitions/ComplexTypeDefinition.java
+++ b/code-generation/types-base/src/main/java/org/apache/plc4x/plugins/codegenerator/types/definitions/ComplexTypeDefinition.java
@@ -50,6 +50,13 @@ public interface ComplexTypeDefinition extends TypeDefinition {
List<PropertyField> getAllPropertyFields();
/**
+ * In contrast to getVirtualFields, this also gets all virtual fields of any parent type.
+ *
+ * @return all virtual fields including any parents simple fields
+ */
+ List<PropertyField> getAllVirtualFields();
+
+ /**
* Get only the fields which are of type ConstField.
*
* @return all constant fields
@@ -258,8 +265,11 @@ public interface ComplexTypeDefinition extends TypeDefinition {
* @return true if a field with the given name already exists in the same type.
*/
default boolean isNonDiscriminatorField(String discriminatorName) {
- return getAllPropertyFields().stream()
+ boolean hasMatchingPropertyField = getAllPropertyFields().stream()
.anyMatch(field -> !(field instanceof DiscriminatorField) && field.getName().equals(discriminatorName));
+ boolean hasMatchingVirtualField = getAllVirtualFields().stream()
+ .anyMatch(field -> field.getName().equals(discriminatorName));
+ return hasMatchingPropertyField && hasMatchingVirtualField;
}
default boolean isParserArgument(String discriminatorName) {