diff --git a/pom.xml b/pom.xml index 9087cd829..17a9acbba 100644 --- a/pom.xml +++ b/pom.xml @@ -23,8 +23,6 @@ 3.1.11-SNAPSHOT spring.data.couchbase 7.0.1.Final - 1.1.3 - 5.0.0 3.1.0 2.10.13 2.13.4 @@ -50,6 +48,19 @@ querydsl-apt ${querydsl} jakarta + + + javax.inject + javax.inject + + + + + + javax.inject + javax.inject + 1 + test @@ -248,6 +259,33 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + none + + + + test-annotation-processing + generate-test-sources + + testCompile + + + only + + org.springframework.data.couchbase.repository.support.CouchbaseAnnotationProcessor + + target/generated-test-sources + + -Aquerydsl.logInfo=true + + + + + + org.apache.maven.plugins maven-surefire-plugin @@ -291,30 +329,7 @@ org.asciidoctor asciidoctor-maven-plugin - - com.mysema.maven - apt-maven-plugin - ${apt} - - - com.querydsl - querydsl-apt - ${querydsl} - - - - - generate-test-sources - - test-process - - - target/generated-test-sources - org.springframework.data.couchbase.repository.support.CouchbaseAnnotationProcessor - - - - + diff --git a/src/main/java/org/springframework/data/couchbase/repository/support/CouchbaseAnnotationProcessor.java b/src/main/java/org/springframework/data/couchbase/repository/support/CouchbaseAnnotationProcessor.java index 8bf16cf24..cc21bf565 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/support/CouchbaseAnnotationProcessor.java +++ b/src/main/java/org/springframework/data/couchbase/repository/support/CouchbaseAnnotationProcessor.java @@ -15,16 +15,19 @@ */ package org.springframework.data.couchbase.repository.support; +import static com.querydsl.apt.APTOptions.QUERYDSL_LOG_INFO; + import java.util.Collections; +import java.util.Set; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; import javax.lang.model.SourceVersion; +import javax.lang.model.element.TypeElement; import javax.tools.Diagnostic; import org.springframework.data.couchbase.core.mapping.Document; -import org.springframework.lang.Nullable; import com.querydsl.apt.AbstractQuerydslProcessor; import com.querydsl.apt.Configuration; @@ -49,9 +52,9 @@ public class CouchbaseAnnotationProcessor extends AbstractQuerydslProcessor { * @see com.querydsl.apt.AbstractQuerydslProcessor#createConfiguration(javax.annotation.processing.RoundEnvironment) */ @Override - protected Configuration createConfiguration(@Nullable RoundEnvironment roundEnv) { + protected Configuration createConfiguration(/*@Nullable */RoundEnvironment roundEnv) { - processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Running " + getClass().getSimpleName()); + processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Running override createConfiguration() " + getClass().getSimpleName()); DefaultConfiguration configuration = new DefaultConfiguration(processingEnv, roundEnv, Collections.emptySet(), QueryEntities.class, Document.class, QuerySupertype.class, QueryEmbeddable.class, QueryEmbedded.class, @@ -60,4 +63,52 @@ protected Configuration createConfiguration(@Nullable RoundEnvironment roundEnv) return configuration; } + + @Override + public boolean process(Set annotations, RoundEnvironment roundEnv) { + setLogInfo(); + logInfo("Running override process() " + getClass().getSimpleName() +" isOver: "+roundEnv.processingOver() +" annotations: "+annotations.size()); + + if (roundEnv.processingOver() || annotations.size() == 0) { + return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS; + } + + if (roundEnv.getRootElements() == null || roundEnv.getRootElements().isEmpty()) { + logInfo("No sources to process"); + return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS; + } + + Configuration conf = createConfiguration(roundEnv); + try { + conf.getTypeMappings(); + } catch (NoClassDefFoundError cnfe ){ + logWarn( cnfe +" add a dependency on javax.inject:javax.inject to create querydsl classes"); + return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS; + } + return super.process(annotations, roundEnv); + + } + + private boolean shouldLogInfo; + + private void setLogInfo() { + boolean hasProperty = processingEnv.getOptions().containsKey(QUERYDSL_LOG_INFO); + if (hasProperty) { + String val = processingEnv.getOptions().get(QUERYDSL_LOG_INFO); + shouldLogInfo = Boolean.parseBoolean(val); + } + } + + private void logInfo(String message) { + if (shouldLogInfo) { + System.out.println("[NOTE] "+message); // maven compiler swallows messages to messager + processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, message); + } + } + + private void logWarn(String message) { + System.err.println("[WARNING] "+message); // maven compiler swallows messages to messager + processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, message); + } } + diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java index cf73d5c4b..68ed965f3 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java @@ -1329,7 +1329,7 @@ void sampleScan() { MutationToken mt = couchbaseTemplate.getCouchbaseClientFactory().getDefaultCollection() .upsert(id, JsonObject.create().put("id", id)).mutationToken().get(); Stream users = couchbaseTemplate.rangeScan(User.class).consistentWith(MutationState.from(mt)) - /*.withSort(ScanSort.ASCENDING)*/.samplingScan(5l, null); + /*.withSort(ScanSort.ASCENDING)*/.samplingScan(5l, (Long)null); List usersList = users.toList(); assertEquals(5, usersList.size(), "number in sample"); for (User u : usersList) { diff --git a/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java b/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java index fdafe89a6..70379e7d9 100644 --- a/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java @@ -90,7 +90,7 @@ void testNestedOrCriteria() { @Test void testNestedNotIn() { QueryCriteria c = where(i("name")).is("Bubba").or(where(i("age")).gt(12).and(i("country")).is("Austria")) - .and(where(i("state")).notIn(new String[] { "Alabama", "Florida" })); + .and(where(i("state")).notIn( "Alabama", "Florida" )); JsonArray parameters = JsonArray.create(); assertEquals(" ( (`name` = $1) or (`age` > $2 and `country` = $3)) and (not( (`state` in $4) ))", c.export(new int[1], parameters, null)); diff --git a/src/test/java/org/springframework/data/couchbase/domain/BigAirlineRepository.java b/src/test/java/org/springframework/data/couchbase/domain/BigAirlineRepository.java index e4167fdc1..b19f397be 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/BigAirlineRepository.java +++ b/src/test/java/org/springframework/data/couchbase/domain/BigAirlineRepository.java @@ -30,7 +30,7 @@ */ @Repository public interface BigAirlineRepository extends CouchbaseRepository, - QuerydslPredicateExecutor, DynamicProxyable { + DynamicProxyable { @Query("#{#n1ql.selectEntity} where #{#n1ql.filter} and (name = $1)") List getByName(@Param("airline_name") String airlineName);