diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/ArrayFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/ArrayFieldComparer.java index a91af5f3f..0815f4905 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/ArrayFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/ArrayFieldComparer.java @@ -25,8 +25,13 @@ public boolean match(final String value, final T context) { @Override public boolean equals(final String value, final T context) { - return fieldExtractor.apply(context).stream() - .anyMatch(value::equals); + final List listOfElements = fieldExtractor.apply(context) + .stream() + .toList(); + + return value == null + ? listOfElements.isEmpty() + : listOfElements.stream().anyMatch(value::equals); } @Override diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/SimpleFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/SimpleFieldComparer.java index 912acc372..fb41189b9 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/SimpleFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/SimpleFieldComparer.java @@ -22,8 +22,10 @@ public boolean match(final String value, final T context) { } @Override - public boolean equals(final String value, final T context) { - return value.equals(fieldExtractor.apply(context)); + public boolean equals(final String value, final T context) { + return value == null + ? fieldExtractor.apply(context) == null + : value.equals(fieldExtractor.apply(context)); } @Override diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityDataSourceFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityDataSourceFieldComparer.java index 60c34294e..f4d004123 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityDataSourceFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityDataSourceFieldComparer.java @@ -11,6 +11,8 @@ public DataEntityDataSourceFieldComparer(final Function } private static DataSourcePojo getDataEntityDataSource(final DataEntityPolicyResolverContext context) { - return context.dataEntity().getDataSource(); + return context.dataEntity().getDataSource() == null + ? new DataSourcePojo() + : context.dataEntity().getDataSource(); } } diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityFieldComparer.java index b312057f0..fd3bd4975 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityFieldComparer.java @@ -11,6 +11,8 @@ public DataEntityFieldComparer(final Function fieldExtra } private static DataEntityPojo getDataEntity(final DataEntityPolicyResolverContext context) { - return context.dataEntity().getDataEntity(); + return context.dataEntity().getDataEntity() == null + ? new DataEntityPojo() + : context.dataEntity().getDataEntity(); } } diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityNamespaceFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityNamespaceFieldComparer.java index d7f474b11..3368b40de 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityNamespaceFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/dataentity/DataEntityNamespaceFieldComparer.java @@ -11,6 +11,8 @@ public DataEntityNamespaceFieldComparer(final Function fi } private static NamespacePojo getDataEntityNamespace(final DataEntityPolicyResolverContext context) { - return context.dataEntity().getNamespace(); + return context.dataEntity().getNamespace() == null + ? new NamespacePojo() + : context.dataEntity().getNamespace(); } } diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/queryexample/QueryExampleFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/queryexample/QueryExampleFieldComparer.java index ff79911d9..84bc52a6e 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/queryexample/QueryExampleFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/queryexample/QueryExampleFieldComparer.java @@ -1,8 +1,10 @@ package org.opendatadiscovery.oddplatform.service.policy.comparer.queryexample; +import java.util.List; import java.util.function.Function; import org.opendatadiscovery.oddplatform.dto.QueryExampleDto; import org.opendatadiscovery.oddplatform.dto.policy.QueryExamplePolicyResolverContext; +import org.opendatadiscovery.oddplatform.model.tables.pojos.QueryExamplePojo; import org.opendatadiscovery.oddplatform.service.policy.comparer.SimpleFieldComparer; public class QueryExampleFieldComparer extends SimpleFieldComparer { @@ -11,6 +13,8 @@ public QueryExampleFieldComparer(final Function fieldEx } private static QueryExampleDto getQueryExample(final QueryExamplePolicyResolverContext context) { - return context.detailsDto(); + return context.detailsDto() == null + ? new QueryExampleDto(new QueryExamplePojo(), List.of()) + : context.detailsDto(); } } diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermFieldComparer.java index 13f44e10d..cbb578bd7 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermFieldComparer.java @@ -11,6 +11,8 @@ public TermFieldComparer(final Function fieldExtractor) { } private static TermPojo getTerm(final TermPolicyResolverContext context) { - return context.detailsDto().getTermDto().getTermRefDto().getTerm(); + return context.detailsDto().getTermDto().getTermRefDto().getTerm() == null + ? new TermPojo() + : context.detailsDto().getTermDto().getTermRefDto().getTerm(); } } diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermNamespaceFieldComparer.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermNamespaceFieldComparer.java index a3c703e62..ece1e44bd 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermNamespaceFieldComparer.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/comparer/term/TermNamespaceFieldComparer.java @@ -11,6 +11,8 @@ public TermNamespaceFieldComparer(final Function fieldExt } private static NamespacePojo getTermNamespace(final TermPolicyResolverContext context) { - return context.detailsDto().getTermDto().getTermRefDto().getNamespace(); + return context.detailsDto().getTermDto().getTermRefDto().getNamespace() == null + ? new NamespacePojo() + : context.detailsDto().getTermDto().getTermRefDto().getNamespace(); } } diff --git a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/resolver/AbstractConditionResolver.java b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/resolver/AbstractConditionResolver.java index 34bc44aa7..7ac2ad611 100644 --- a/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/resolver/AbstractConditionResolver.java +++ b/odd-platform-api/src/main/java/org/opendatadiscovery/oddplatform/service/policy/resolver/AbstractConditionResolver.java @@ -2,6 +2,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import org.opendatadiscovery.oddplatform.dto.policy.PolicyConditionDto; import org.opendatadiscovery.oddplatform.dto.policy.PolicyConditionKeyDto; @@ -22,7 +23,7 @@ public boolean resolve(final PolicyConditionDto condition, final T context) { return resolveAny(condition.getAny(), context); } else if (condition.getEq() != null) { final Map.Entry entry = getUnaryCondition(condition.getEq()); - return resolveEquals(entry.getKey(), entry.getValue().toString(), context); + return resolveEquals(entry.getKey(), Objects.toString(entry.getValue(), null), context); } else if (condition.getNotEq() != null) { final Map.Entry entry = getUnaryCondition(condition.getNotEq()); return resolveNotEquals(entry.getKey(), entry.getValue().toString(), context);