From 368c18ed5e3a2c2c2dcd526e90c796cc6ef1fe27 Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Mon, 9 Sep 2024 17:44:01 +0300 Subject: [PATCH] Refactor RSQL serach fields related classes (2) (#1835) Signed-off-by: Marinov Avgustin --- .../jpa/rsql/AbstractRSQLVisitor.java | 21 +++++++++---------- .../jpa/rsql/FieldValidationRsqlVisitor.java | 9 +++----- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/AbstractRSQLVisitor.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/AbstractRSQLVisitor.java index 80c5a5b21..decb29043 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/AbstractRSQLVisitor.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/AbstractRSQLVisitor.java @@ -25,10 +25,10 @@ import cz.jirutka.rsql.parser.ast.ComparisonNode; @Slf4j public abstract class AbstractRSQLVisitor & RsqlQueryField> { - private final Class fieldNameProvider; + private final Class rsqlQueryFieldType; @Value - public class RsqlField { + protected class RsqlField { A enumValue; String[] subAttributes; @@ -39,22 +39,22 @@ public abstract class AbstractRSQLVisitor & RsqlQueryField> { } } - protected AbstractRSQLVisitor(final Class fieldNameProvider) { - this.fieldNameProvider = fieldNameProvider; + protected AbstractRSQLVisitor(final Class rsqlQueryFieldType) { + this.rsqlQueryFieldType = rsqlQueryFieldType; } protected RsqlField getRsqlField(final ComparisonNode node) { final String[] graph = node.getSelector().split(RsqlQueryField.SUB_ATTRIBUTE_SPLIT_REGEX); final String enumName = graph.length == 0 ? node.getSelector() : graph[0]; - log.debug("get field identifier by name {} of enum type {}", enumName, fieldNameProvider); + log.debug("get field identifier by name {} of enum type {}", enumName, rsqlQueryFieldType); try { - final A enumValue = Enum.valueOf(fieldNameProvider, enumName.toUpperCase()); + final A enumValue = Enum.valueOf(rsqlQueryFieldType, enumName.toUpperCase()); final String[] subAttributes = enumValue.getSubAttributes(node.getSelector()); // validate if (enumValue.isMap()) { - // enum.key + // . if (subAttributes.length != 2) { throw new RSQLParameterUnsupportedFieldException( "The syntax of the given map search parameter field {" + node.getSelector() + "} is wrong. Syntax is: ."); @@ -92,8 +92,7 @@ public abstract class AbstractRSQLVisitor & RsqlQueryField> { * @return Exception with prepared message extracted from the comparison node. */ private RSQLParameterUnsupportedFieldException createRSQLParameterUnsupportedException( - @NotNull final ComparisonNode node, - final Exception rootException) { + @NotNull final ComparisonNode node, final Exception rootException) { return new RSQLParameterUnsupportedFieldException(String.format( "The given search parameter field {%s} does not exist, must be one of the following fields %s", node.getSelector(), getExpectedFieldList()), rootException); @@ -106,7 +105,7 @@ public abstract class AbstractRSQLVisitor & RsqlQueryField> { } private List getExpectedFieldList() { - final List expectedFieldList = Arrays.stream(fieldNameProvider.getEnumConstants()) + final List expectedFieldList = Arrays.stream(rsqlQueryFieldType.getEnumConstants()) .filter(enumField -> enumField.getSubEntityAttributes().isEmpty()).map(enumField -> { final String enumFieldName = enumField.name().toLowerCase(); if (enumField.isMap()) { @@ -116,7 +115,7 @@ public abstract class AbstractRSQLVisitor & RsqlQueryField> { } }).collect(Collectors.toList()); - final List expectedSubFieldList = Arrays.stream(fieldNameProvider.getEnumConstants()) + final List expectedSubFieldList = Arrays.stream(rsqlQueryFieldType.getEnumConstants()) .filter(enumField -> !enumField.getSubEntityAttributes().isEmpty()).flatMap(enumField -> { final List subEntity = enumField .getSubEntityAttributes().stream().map(fieldName -> enumField.name().toLowerCase() diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/FieldValidationRsqlVisitor.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/FieldValidationRsqlVisitor.java index 9aabe5bb5..ec46ffb85 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/FieldValidationRsqlVisitor.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/FieldValidationRsqlVisitor.java @@ -21,8 +21,7 @@ import cz.jirutka.rsql.parser.ast.RSQLVisitor; * {@link RSQLVisitor} implementation which validates the nodes (fields) based * on a given {@link RsqlQueryField} for a given entity type. * - * @param - * The type the {@link RsqlQueryField} refers to. + * @param The type the {@link RsqlQueryField} refers to. */ public class FieldValidationRsqlVisitor & RsqlQueryField> extends AbstractRSQLVisitor implements RSQLVisitor { @@ -30,8 +29,7 @@ public class FieldValidationRsqlVisitor & RsqlQueryField> exte /** * Constructs the visitor and initializes it. * - * @param fieldNameProvider - * The {@link RsqlQueryField} to use for validation. + * @param fieldNameProvider The {@link RsqlQueryField} to use for validation. */ public FieldValidationRsqlVisitor(final Class fieldNameProvider) { super(fieldNameProvider); @@ -58,5 +56,4 @@ public class FieldValidationRsqlVisitor & RsqlQueryField> exte node.getChildren().forEach(child -> child.accept(this, param)); return null; } - -} +} \ No newline at end of file