From 1b362117883ff4cb6554c2b53d8db1faa50cb433 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Wed, 26 Jun 2019 12:13:59 +0200 Subject: [PATCH] DATAJPA-1564 - Polishing. Fixed some warnings. Added a test case for good measure. Original pull request: #386. --- .../data/jpa/repository/query/QueryUtils.java | 23 ++++++++++--------- .../repository/query/QueryUtilsUnitTests.java | 1 + 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java index b0d36310c..589ab4f73 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java @@ -113,7 +113,7 @@ public abstract class QueryUtils { private static final Pattern ORDER_BY = Pattern.compile(".*order\\s+by\\s+.*", CASE_INSENSITIVE); private static final Pattern NAMED_PARAMETER = Pattern - .compile(COLON_NO_DOUBLE_COLON + IDENTIFIER + "|\\#" + IDENTIFIER, CASE_INSENSITIVE); + .compile(COLON_NO_DOUBLE_COLON + IDENTIFIER + "|#" + IDENTIFIER, CASE_INSENSITIVE); private static final Pattern CONSTRUCTOR_EXPRESSION; @@ -123,7 +123,7 @@ public abstract class QueryUtils { private static final int VARIABLE_NAME_GROUP_INDEX = 4; private static final int COMPLEX_COUNT_FIRST_INDEX = 3; - private static final Pattern PUNCTATION_PATTERN = Pattern.compile(".*((?![\\._])[\\p{Punct}|\\s])"); + private static final Pattern PUNCTATION_PATTERN = Pattern.compile(".*((?![._])[\\p{Punct}|\\s])"); private static final Pattern FUNCTION_PATTERN; private static final Pattern FIELD_ALIAS_PATTERN; @@ -152,7 +152,7 @@ public abstract class QueryUtils { COUNT_MATCH = compile(builder.toString(), CASE_INSENSITIVE); - Map> persistentAttributeTypes = new HashMap>(); + Map> persistentAttributeTypes = new HashMap<>(); persistentAttributeTypes.put(ONE_TO_ONE, OneToOne.class); persistentAttributeTypes.put(ONE_TO_MANY, null); persistentAttributeTypes.put(MANY_TO_ONE, ManyToOne.class); @@ -322,7 +322,7 @@ public abstract class QueryUtils { */ static Set getOuterJoinAliases(String query) { - Set result = new HashSet(); + Set result = new HashSet<>(); Matcher matcher = JOIN_PATTERN.matcher(query); while (matcher.find()) { @@ -478,13 +478,15 @@ public abstract class QueryUtils { Assert.hasText(originalQuery, "OriginalQuery must not be null or empty!"); Matcher matcher = COUNT_MATCH.matcher(originalQuery); - String countQuery = null; + String countQuery; if (countProjection == null) { String variable = matcher.matches() ? matcher.group(VARIABLE_NAME_GROUP_INDEX) : null; - boolean useVariable = StringUtils.hasText(variable) && !variable.startsWith(" new") - && !variable.startsWith("count(") && !variable.contains(","); + boolean useVariable = StringUtils.hasText(variable) // + && !variable.startsWith(" new") // + && !variable.startsWith("count(") // + && !variable.contains(","); // String complexCountValue = matcher.matches() && StringUtils.hasText(matcher.group(COMPLEX_COUNT_FIRST_INDEX)) ? @@ -563,7 +565,7 @@ public abstract class QueryUtils { * Returns whether the given JPQL query contains a constructor expression. * * @param query must not be {@literal null} or empty. - * @return + * @return whether the given JPQL query contains a constructor expression. * @since 1.10 */ public static boolean hasConstructorExpression(String query) { @@ -577,7 +579,7 @@ public abstract class QueryUtils { * Returns the projection part of the query, i.e. everything between {@code select} and {@code from}. * * @param query must not be {@literal null} or empty. - * @return + * @return the projection part of the query. * @since 1.10.2 */ public static String getProjection(String query) { @@ -595,7 +597,7 @@ public abstract class QueryUtils { * @param order the order to transform into a JPA {@link javax.persistence.criteria.Order} * @param from the {@link From} the {@link Order} expression is based on * @param cb the {@link CriteriaBuilder} to build the {@link javax.persistence.criteria.Order} with - * @return + * @return Guaranteed to be not {@literal null}. */ @SuppressWarnings("unchecked") private static javax.persistence.criteria.Order toJpaOrder(Order order, From from, CriteriaBuilder cb) { @@ -611,7 +613,6 @@ public abstract class QueryUtils { } } - @SuppressWarnings("unchecked") static Expression toExpressionRecursively(From from, PropertyPath property) { return toExpressionRecursively(from, property, false); } diff --git a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java index 190994334..4e133219a 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java @@ -488,6 +488,7 @@ public class QueryUtilsUnitTests { assertThat(detectAlias("select * from User order\nby name")).isNull(); assertThat(detectAlias("select * from User u group\nby name")).isEqualTo("u"); assertThat(detectAlias("select * from User u order\nby name")).isEqualTo("u"); + assertThat(detectAlias("select * from User\nu\norder \n by name")).isEqualTo("u"); } private static void assertCountQuery(String originalQuery, String countQuery) {