diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/AggregationBlocks.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/AggregationBlocks.java index adb805ab3..c376fb11f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/AggregationBlocks.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/AggregationBlocks.java @@ -304,7 +304,7 @@ class AggregationBlocks { VariableSnippet stageSnippet = Snippet.declare(builder) .variable(Document.class, context.localVariable("stage_%s".formatted(stageCounter))) - .of(MongoCodeBlocks.asDocument(stage, parameterNames)); + .of(MongoCodeBlocks.asDocument(context.getExpressionMarker(), stage, parameterNames)); builder.addStatement("$L.add($L)", stageListVariableName, stageSnippet.getVariableName()); stageCounter++; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoCodeBlocks.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoCodeBlocks.java index 81bd096ab..ee74c76ec 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoCodeBlocks.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoCodeBlocks.java @@ -32,6 +32,7 @@ import org.springframework.data.mongodb.repository.aot.UpdateBlocks.UpdateCodeBl import org.springframework.data.mongodb.repository.aot.UpdateBlocks.UpdateExecutionCodeBlockBuilder; import org.springframework.data.mongodb.repository.query.MongoQueryMethod; import org.springframework.data.repository.aot.generate.AotQueryMethodGenerationContext; +import org.springframework.data.repository.aot.generate.ExpressionMarker; import org.springframework.javapoet.CodeBlock; import org.springframework.javapoet.CodeBlock.Builder; import org.springframework.util.NumberUtils; @@ -162,20 +163,20 @@ class MongoCodeBlocks { return new GeoNearExecutionCodeBlockBuilder(context); } - static CodeBlock asDocument(String source, String argNames) { - return asDocument(source, CodeBlock.of("$L", argNames)); + static CodeBlock asDocument(ExpressionMarker expressionMarker, String source, String argNames) { + return asDocument(expressionMarker, source, CodeBlock.of("$L", argNames)); } - static CodeBlock asDocument(String source, CodeBlock arguments) { + static CodeBlock asDocument(ExpressionMarker expressionMarker, String source, CodeBlock arguments) { Builder builder = CodeBlock.builder(); if (!StringUtils.hasText(source)) { builder.add("new $T()", Document.class); } else if (containsPlaceholder(source)) { if (arguments.isEmpty()) { - builder.add("bindParameters(ExpressionMarker.class.getEnclosingMethod(), $S)", source); + builder.add("bindParameters($L, $S)", expressionMarker.enclosingMethod(), source); } else { - builder.add("bindParameters(ExpressionMarker.class.getEnclosingMethod(), $S, $L)", source, arguments); + builder.add("bindParameters($L, $S, $L)", expressionMarker.enclosingMethod(), source, arguments); } } else { builder.add("parse($S)", source); @@ -213,7 +214,7 @@ class MongoCodeBlocks { } Builder builder = CodeBlock.builder(); - builder.add("($T) evaluate(ExpressionMarker.class.getEnclosingMethod(), $S$L)", targetType, value, + builder.add("($T) evaluate($L, $S$L)", targetType, context.getExpressionMarker().enclosingMethod(), value, parameterNames); return builder.build(); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoRepositoryContributor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoRepositoryContributor.java index 594b91ab2..0da74d06f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoRepositoryContributor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/MongoRepositoryContributor.java @@ -216,7 +216,7 @@ public class MongoRepositoryContributor extends RepositoryContributor { CodeBlock.Builder builder = CodeBlock.builder(); - builder.addStatement("class ExpressionMarker{}"); +// builder.addStatement("class ExpressionMarker{}"); builder.add(finalContribution.contribute(context)); return builder.build(); @@ -241,9 +241,6 @@ public class MongoRepositoryContributor extends RepositoryContributor { AotStringQuery aotStringQuery = queryCreator.createQuery(partTree, queryMethod, source); query = new QueryInteraction(aotStringQuery, partTree.isCountProjection(), partTree.isDelete(), partTree.isExistsProjection()); -// if(partTree.isLimiting()) { -// query.s -// } } if (queryAnnotation != null && StringUtils.hasText(queryAnnotation.sort())) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/QueryBlocks.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/QueryBlocks.java index 41c45e1af..391e6cc07 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/QueryBlocks.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/aot/QueryBlocks.java @@ -238,14 +238,14 @@ class QueryBlocks { if (StringUtils.hasText(source.getQuery().getFieldsString())) { VariableSnippet fields = Snippet.declare(builder).variable(Document.class, context.localVariable("fields")) - .of(MongoCodeBlocks.asDocument(source.getQuery().getFieldsString(), queryParameters.get())); + .of(MongoCodeBlocks.asDocument(context.getExpressionMarker(), source.getQuery().getFieldsString(), queryParameters.get())); builder.addStatement("$L.setFieldsObject($L)", queryVariableName, fields.getVariableName()); } if (StringUtils.hasText(source.getQuery().getSortString())) { VariableSnippet sort = Snippet.declare(builder).variable(Document.class, context.localVariable("sort")) - .of(MongoCodeBlocks.asDocument(source.getQuery().getSortString(), getQueryParameters())); + .of(MongoCodeBlocks.asDocument(context.getExpressionMarker(), source.getQuery().getSortString(), getQueryParameters())); builder.addStatement("$L.setSortObject($L)", queryVariableName, sort.getVariableName()); } @@ -306,12 +306,12 @@ class QueryBlocks { if (getQueryParameters().isEmpty()) { builder.addStatement( - "$L.collation(collationOf(evaluate(ExpressionMarker.class.getEnclosingMethod(), $S)))", - queryVariableName, collationString); + "$L.collation(collationOf(evaluate($L, $S)))", + queryVariableName, context.getExpressionMarker().enclosingMethod(), collationString); } else { builder.addStatement( - "$L.collation(collationOf(evaluate(ExpressionMarker.class.getEnclosingMethod(), $S, $L)))", - queryVariableName, collationString, getQueryParameters()); + "$L.collation(collationOf(evaluate($L, $S, $L)))", + queryVariableName, context.getExpressionMarker().enclosingMethod(), collationString, getQueryParameters()); } } } @@ -337,9 +337,9 @@ class QueryBlocks { } else if (MongoCodeBlocks.containsPlaceholder(source)) { Builder builder = CodeBlock.builder(); if (getQueryParameters().isEmpty()) { - builder.add("createQuery(ExpressionMarker.class.getEnclosingMethod(), $S)", source); + builder.add("createQuery($L, $S)", context.getExpressionMarker().enclosingMethod(), source); } else { - builder.add("createQuery(ExpressionMarker.class.getEnclosingMethod(), $S, $L)", source, getQueryParameters()); + builder.add("createQuery($L, $S, $L)", context.getExpressionMarker().enclosingMethod(), source, getQueryParameters()); } return builder.build(); } else {