Fix sonar findings (#2769)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -23,7 +23,6 @@ import java.io.StringWriter;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonFactory;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
|
||||
@@ -26,7 +26,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import org.eclipse.hawkbit.ddi.rest.api.DdiRestConstants;
|
||||
import org.eclipse.hawkbit.exception.SpServerError;
|
||||
|
||||
@@ -33,13 +33,11 @@ import org.eclipse.hawkbit.repository.jpa.rsql.legacy.SpecificationBuilderLegacy
|
||||
import org.eclipse.hawkbit.repository.rsql.VirtualPropertyResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.orm.jpa.vendor.Database;
|
||||
|
||||
/**
|
||||
* A utility class which is able to parse RSQL strings into an spring data
|
||||
@@ -114,7 +112,6 @@ public class QLSupport implements ApplicationListener<ContextRefreshedEvent> {
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
private QueryParser parser;
|
||||
private List<NodeTransformer> nodeTransformers;
|
||||
private Database database;
|
||||
private EntityManager entityManager;
|
||||
private VirtualPropertyResolver virtualPropertyResolver;
|
||||
|
||||
@@ -139,11 +136,6 @@ public class QLSupport implements ApplicationListener<ContextRefreshedEvent> {
|
||||
}).toList();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
void setDatabase(final JpaProperties jpaProperties) {
|
||||
database = jpaProperties.getDatabase();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
void setEntityManager(final EntityManager entityManager) {
|
||||
this.entityManager = entityManager;
|
||||
@@ -171,15 +163,15 @@ public class QLSupport implements ApplicationListener<ContextRefreshedEvent> {
|
||||
*/
|
||||
public <A extends Enum<A> & QueryField, T> Specification<T> buildSpec(final String query, final Class<A> queryFieldType) {
|
||||
if (specBuilder == SpecBuilder.G3) {
|
||||
return new SpecificationBuilder<T>(ignoreCase && !caseInsensitiveDB , database)
|
||||
return new SpecificationBuilder<T>(ignoreCase && !caseInsensitiveDB)
|
||||
.specification(transform(parse(query, queryFieldType), queryFieldType));
|
||||
} else {
|
||||
return new SpecificationBuilderLegacy<A, T>(queryFieldType, virtualPropertyResolver, database).specification(query);
|
||||
return new SpecificationBuilderLegacy<A, T>(queryFieldType, virtualPropertyResolver).specification(query);
|
||||
}
|
||||
}
|
||||
|
||||
public <A extends Enum<A> & QueryField, T> Specification<T> buildSpec(final Node query, final Class<A> queryFieldType) {
|
||||
return new SpecificationBuilder<T>(ignoreCase && !caseInsensitiveDB , database)
|
||||
return new SpecificationBuilder<T>(ignoreCase && !caseInsensitiveDB)
|
||||
.specification(transform(query, queryFieldType));
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ import org.eclipse.hawkbit.repository.jpa.ql.Node.Comparison;
|
||||
import org.eclipse.hawkbit.repository.jpa.ql.Node.Comparison.Operator;
|
||||
import org.eclipse.hawkbit.repository.jpa.ql.Node.Logical;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.orm.jpa.vendor.Database;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
@Slf4j
|
||||
@@ -64,11 +63,9 @@ public class SpecificationBuilder<T> {
|
||||
private static final char ESCAPE_CHAR = '\\';
|
||||
|
||||
private final boolean ensureIgnoreCase;
|
||||
private final Database database;
|
||||
|
||||
public SpecificationBuilder(final boolean ensureIgnoreCase, final Database database) {
|
||||
public SpecificationBuilder(final boolean ensureIgnoreCase) {
|
||||
this.ensureIgnoreCase = ensureIgnoreCase;
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
public Specification<T> specification(final Node node) {
|
||||
|
||||
@@ -49,7 +49,6 @@ import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldExc
|
||||
import org.eclipse.hawkbit.repository.rsql.VirtualPropertyResolver;
|
||||
import org.springframework.beans.SimpleTypeConverter;
|
||||
import org.springframework.beans.TypeMismatchException;
|
||||
import org.springframework.orm.jpa.vendor.Database;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
@@ -77,7 +76,6 @@ public class JpaQueryRsqlVisitor<A extends Enum<A> & QueryField, T> extends Abst
|
||||
|
||||
private final CriteriaBuilder cb;
|
||||
private final CriteriaQuery<?> query;
|
||||
private final Database database;
|
||||
private final boolean ensureIgnoreCase;
|
||||
private final Root<T> root;
|
||||
private final VirtualPropertyResolver virtualPropertyResolver;
|
||||
@@ -89,7 +87,7 @@ public class JpaQueryRsqlVisitor<A extends Enum<A> & QueryField, T> extends Abst
|
||||
|
||||
public JpaQueryRsqlVisitor(
|
||||
final Root<T> root, final CriteriaBuilder cb, final Class<A> enumType,
|
||||
final VirtualPropertyResolver virtualPropertyResolver, final Database database,
|
||||
final VirtualPropertyResolver virtualPropertyResolver,
|
||||
final CriteriaQuery<?> query, final boolean ensureIgnoreCase) {
|
||||
super(enumType);
|
||||
this.root = root;
|
||||
@@ -97,7 +95,6 @@ public class JpaQueryRsqlVisitor<A extends Enum<A> & QueryField, T> extends Abst
|
||||
this.query = query;
|
||||
this.virtualPropertyResolver = virtualPropertyResolver;
|
||||
this.simpleTypeConverter = new SimpleTypeConverter();
|
||||
this.database = database;
|
||||
this.ensureIgnoreCase = ensureIgnoreCase;
|
||||
}
|
||||
|
||||
@@ -334,7 +331,8 @@ public class JpaQueryRsqlVisitor<A extends Enum<A> & QueryField, T> extends Abst
|
||||
|
||||
final Predicate mapPredicate = mapToMapPredicate(fieldPath, queryPath);
|
||||
|
||||
final Predicate valuePredicate = addOperatorPredicate(node, queryPath.getEnumValue().isMap() ? (Path)toMapValuePath(fieldPath) : fieldPath, transformedValues, value, queryPath);
|
||||
final Predicate valuePredicate = addOperatorPredicate(node,
|
||||
queryPath.getEnumValue().isMap() ? (Path) toMapValuePath(fieldPath) : fieldPath, transformedValues, value, queryPath);
|
||||
return toSingleList(mapPredicate != null ? cb.and(mapPredicate, valuePredicate) : valuePredicate);
|
||||
}
|
||||
|
||||
@@ -495,7 +493,7 @@ public class JpaQueryRsqlVisitor<A extends Enum<A> & QueryField, T> extends Abst
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
private Expression<String> getExpressionToCompare(final Path innerFieldPath, final A enumField) {
|
||||
if (enumField.isMap()){
|
||||
if (enumField.isMap()) {
|
||||
return toMapValuePath(innerFieldPath);
|
||||
} else {
|
||||
return pathOfString(innerFieldPath);
|
||||
|
||||
@@ -46,7 +46,6 @@ import org.eclipse.hawkbit.repository.exception.RSQLParameterSyntaxException;
|
||||
import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldException;
|
||||
import org.eclipse.hawkbit.repository.jpa.ql.SpecificationBuilder;
|
||||
import org.eclipse.hawkbit.repository.rsql.VirtualPropertyResolver;
|
||||
import org.springframework.orm.jpa.vendor.Database;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
@@ -56,9 +55,9 @@ import org.springframework.util.ObjectUtils;
|
||||
* @param <A> the enum for providing the field name of the entity field to filter on.
|
||||
* @param <T> the entity type referenced by the root
|
||||
* @deprecated Old implementation of RSQL Visitor (G2). Deprecated in favour of next gen implementation -
|
||||
* {@link SpecificationBuilder}.
|
||||
* It will be kept for some time in order to keep backward compatibility and to allow for a smooth transition. Also, in case of
|
||||
* problems with the new implementation, this one can be used as a fallback.
|
||||
* {@link SpecificationBuilder}.
|
||||
* It will be kept for some time in order to keep backward compatibility and to allow for a smooth transition. Also, in case of
|
||||
* problems with the new implementation, this one can be used as a fallback.
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "0.9.0")
|
||||
@Slf4j
|
||||
@@ -72,7 +71,6 @@ public class JpaQueryRsqlVisitorG2<A extends Enum<A> & QueryField, T>
|
||||
private final Root<T> root;
|
||||
private final CriteriaQuery<?> query;
|
||||
private final CriteriaBuilder cb;
|
||||
private final Database database;
|
||||
private final VirtualPropertyResolver virtualPropertyResolver;
|
||||
private final boolean ensureIgnoreCase;
|
||||
|
||||
@@ -82,13 +80,12 @@ public class JpaQueryRsqlVisitorG2<A extends Enum<A> & QueryField, T>
|
||||
public JpaQueryRsqlVisitorG2(
|
||||
final Class<A> enumType,
|
||||
final Root<T> root, final CriteriaQuery<?> query, final CriteriaBuilder cb,
|
||||
final Database database, final VirtualPropertyResolver virtualPropertyResolver, final boolean ensureIgnoreCase) {
|
||||
final VirtualPropertyResolver virtualPropertyResolver, final boolean ensureIgnoreCase) {
|
||||
super(enumType);
|
||||
this.root = root;
|
||||
this.cb = cb;
|
||||
this.query = query;
|
||||
this.virtualPropertyResolver = virtualPropertyResolver;
|
||||
this.database = database;
|
||||
this.ensureIgnoreCase = ensureIgnoreCase;
|
||||
}
|
||||
|
||||
@@ -150,7 +147,8 @@ public class JpaQueryRsqlVisitorG2<A extends Enum<A> & QueryField, T>
|
||||
mapEntryKeyPredicate = null;
|
||||
}
|
||||
|
||||
final Predicate valuePredicate = toOperatorAndValuePredicate(node, queryPath, queryPath.getEnumValue().isMap() ? toMapValuePath(fieldPath) : fieldPath, values);
|
||||
final Predicate valuePredicate = toOperatorAndValuePredicate(node, queryPath,
|
||||
queryPath.getEnumValue().isMap() ? toMapValuePath(fieldPath) : fieldPath, values);
|
||||
|
||||
return mapEntryKeyPredicate == null ? valuePredicate : cb.and(mapEntryKeyPredicate, valuePredicate);
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.repository.jpa.rsql.legacy;
|
||||
|
||||
import static org.eclipse.hawkbit.repository.jpa.rsql.legacy.AbstractRSQLVisitor.OPERATORS;
|
||||
import static org.eclipse.hawkbit.repository.jpa.ql.QLSupport.SpecBuilder.LEGACY_G1;
|
||||
import static org.eclipse.hawkbit.repository.jpa.rsql.legacy.AbstractRSQLVisitor.OPERATORS;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -23,15 +23,14 @@ import cz.jirutka.rsql.parser.ast.RSQLVisitor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.hawkbit.repository.QueryField;
|
||||
import org.eclipse.hawkbit.repository.exception.RSQLParameterSyntaxException;
|
||||
import org.eclipse.hawkbit.repository.jpa.ql.SpecificationBuilder;
|
||||
import org.eclipse.hawkbit.repository.jpa.ql.QLSupport;
|
||||
import org.eclipse.hawkbit.repository.jpa.ql.SpecificationBuilder;
|
||||
import org.eclipse.hawkbit.repository.rsql.VirtualPropertyResolver;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.orm.jpa.vendor.Database;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
/**
|
||||
* @deprecated Old implementation of RSQL Visitor (G2). Deprecated in favour of next gen implementation - {@link SpecificationBuilder}.
|
||||
* @deprecated Old implementation of RSQL Visitor (G2). Deprecated in favour of next gen implementation - {@link SpecificationBuilder}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "0.9.0")
|
||||
@Slf4j
|
||||
@@ -39,13 +38,10 @@ public class SpecificationBuilderLegacy<A extends Enum<A> & QueryField, T> {
|
||||
|
||||
private final Class<A> rsqlQueryFieldType;
|
||||
private final VirtualPropertyResolver virtualPropertyResolver;
|
||||
private final Database database;
|
||||
|
||||
public SpecificationBuilderLegacy(
|
||||
final Class<A> rsqlQueryFieldType, final VirtualPropertyResolver virtualPropertyResolver, final Database database) {
|
||||
public SpecificationBuilderLegacy(final Class<A> rsqlQueryFieldType, final VirtualPropertyResolver virtualPropertyResolver) {
|
||||
this.rsqlQueryFieldType = rsqlQueryFieldType;
|
||||
this.virtualPropertyResolver = virtualPropertyResolver;
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
public Specification<T> specification(final String rsql) {
|
||||
@@ -58,8 +54,8 @@ public class SpecificationBuilderLegacy<A extends Enum<A> & QueryField, T> {
|
||||
final boolean ensureIgnoreCase = !qlSupport.isCaseInsensitiveDB() && qlSupport.isIgnoreCase();
|
||||
final RSQLVisitor<List<Predicate>, String> jpqQueryRSQLVisitor =
|
||||
qlSupport.getSpecBuilder() == LEGACY_G1
|
||||
? new JpaQueryRsqlVisitor<>(root, cb, rsqlQueryFieldType, virtualPropertyResolver, database, query, ensureIgnoreCase)
|
||||
: new JpaQueryRsqlVisitorG2<>(rsqlQueryFieldType, root, query, cb, database, virtualPropertyResolver, ensureIgnoreCase);
|
||||
? new JpaQueryRsqlVisitor<>(root, cb, rsqlQueryFieldType, virtualPropertyResolver, query, ensureIgnoreCase)
|
||||
: new JpaQueryRsqlVisitorG2<>(rsqlQueryFieldType, root, query, cb, virtualPropertyResolver, ensureIgnoreCase);
|
||||
final List<Predicate> accept = rootNode.accept(jpqQueryRSQLVisitor);
|
||||
|
||||
if (CollectionUtils.isEmpty(accept)) {
|
||||
|
||||
@@ -22,13 +22,12 @@ import org.eclipse.hawkbit.repository.jpa.ql.QLSupport.SpecBuilder;
|
||||
import org.eclipse.hawkbit.repository.jpa.rsql.legacy.SpecificationBuilderLegacy;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.orm.jpa.vendor.Database;
|
||||
|
||||
@SuppressWarnings("java:S2699") // java:S2699 - assertions are un the super methods that are called
|
||||
@Slf4j
|
||||
class SpecificationBuilderLegacyTest extends SpecificationBuilderTest {
|
||||
|
||||
private final SpecificationBuilderLegacy<RootField, Root> builder = new SpecificationBuilderLegacy<>(RootField.class, null, Database.H2);
|
||||
private final SpecificationBuilderLegacy<RootField, Root> builder = new SpecificationBuilderLegacy<>(RootField.class, null);
|
||||
|
||||
private static void runWithRsqlToSpecBuilder(final Runnable runnable, final SpecBuilder rsqlToSpecBuilder) {
|
||||
final SpecBuilder defaultBuilder = QLSupport.getInstance().getSpecBuilder();
|
||||
@@ -44,6 +43,7 @@ class SpecificationBuilderLegacyTest extends SpecificationBuilderTest {
|
||||
void singularStringAttributeG1() {
|
||||
runWithRsqlToSpecBuilder(super::singularStringAttribute, LEGACY_G1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
void singularStringAttribute() {
|
||||
@@ -54,6 +54,7 @@ class SpecificationBuilderLegacyTest extends SpecificationBuilderTest {
|
||||
void singularIntAttributeG1() {
|
||||
runWithRsqlToSpecBuilder(super::singularIntAttribute, LEGACY_G1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
void singularIntAttribute() {
|
||||
@@ -64,6 +65,7 @@ class SpecificationBuilderLegacyTest extends SpecificationBuilderTest {
|
||||
void singularEntityAttributeG1() {
|
||||
runWithRsqlToSpecBuilder(super::singularEntityAttribute, LEGACY_G1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
void singularEntityAttribute() {
|
||||
@@ -74,6 +76,7 @@ class SpecificationBuilderLegacyTest extends SpecificationBuilderTest {
|
||||
void pluralSubSetAttributeG1() {
|
||||
runWithRsqlToSpecBuilder(super::pluralSubSetAttribute, LEGACY_G1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
void pluralSubSetAttribute() {
|
||||
@@ -91,6 +94,7 @@ class SpecificationBuilderLegacyTest extends SpecificationBuilderTest {
|
||||
void singularEntitySubSubAttributeG1() {
|
||||
runWithRsqlToSpecBuilder(super::singularEntitySubSubAttribute, LEGACY_G1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
void singularEntitySubSubAttribute() {
|
||||
|
||||
@@ -51,7 +51,7 @@ class SpecificationBuilderTest {
|
||||
@Autowired
|
||||
private EntityManager entityManager;
|
||||
|
||||
private final SpecificationBuilder<Root> builder = new SpecificationBuilder<>(false, Database.H2);
|
||||
private final SpecificationBuilder<Root> builder = new SpecificationBuilder<>(false);
|
||||
|
||||
@Test
|
||||
void singularStringAttribute() {
|
||||
|
||||
@@ -125,6 +125,7 @@ class OfflineDsAssignmentStrategy extends AbstractDsAssignmentStrategy {
|
||||
|
||||
@Override
|
||||
public void cancelActiveActions(final List<List<Long>> targetIds) {
|
||||
// Not supported by offline case
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user