diff --git a/Jenkinsfile b/Jenkinsfile
index 18f976af5..d16800d2c 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -31,13 +31,13 @@ pipeline {
options { timeout(time: 30, unit: 'MINUTES') }
environment {
- DOCKER_HUB = credentials("${p['docker.credentials']}")
- ARTIFACTORY = credentials("${p['artifactory.credentials']}")
+ DOCKER_HUB = credentials('hub.docker.com-springbuildmaster')
+ ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
steps {
script {
- docker.withRegistry(p['docker.registry'], p['docker.credentials']) {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.docker']) {
sh "docker login --username ${DOCKER_HUB_USR} --password ${DOCKER_HUB_PSW}"
sh 'PROFILE=none ci/verify.sh'
@@ -119,7 +119,7 @@ pipeline {
options { timeout(time: 20, unit: 'MINUTES') }
environment {
- ARTIFACTORY = credentials("${p['artifactory.credentials']}")
+ ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
steps {
@@ -139,6 +139,34 @@ pipeline {
}
}
}
+ stage('Publish documentation') {
+ when {
+ branch 'main'
+ }
+ agent {
+ label 'data'
+ }
+ options { timeout(time: 20, unit: 'MINUTES') }
+
+ environment {
+ ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
+ }
+
+ steps {
+ script {
+ docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
+ docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
+ sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,distribute -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch-non-root ' +
+ '-Dartifactory.server=https://repo.spring.io ' +
+ "-Dartifactory.username=${ARTIFACTORY_USR} " +
+ "-Dartifactory.password=${ARTIFACTORY_PSW} " +
+ "-Dartifactory.distribution-repository=temp-private-local " +
+ '-Dmaven.test.skip=true clean deploy -U -B'
+ }
+ }
+ }
+ }
+ }
}
post {
diff --git a/pom.xml b/pom.xml
index d238b71dd..30ea6b145 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,12 +5,12 @@
* // "localhost:9200" @@ -70,7 +69,6 @@ public interface ClientConfiguration { /** * Creates a new {@link ClientConfiguration} instance configured to a single host given {@code hostAndPort}. - * * For example given the endpoint http://localhost:9200 * *@@ -85,7 +83,6 @@ public interface ClientConfiguration { /** * Creates a new {@link ClientConfiguration} instance configured to a single host given {@link InetSocketAddress}. - * * For example given the endpoint http://localhost:9200 * *diff --git a/src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java b/src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java index 6d61a5951..aac7b89ef 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/reactive/WebClientProvider.java @@ -28,8 +28,7 @@ import org.springframework.web.reactive.function.client.WebClient; /** * Provider for {@link WebClient}s using a pre-configured {@code scheme}. This class returns {@link WebClient} for a * specific {@link InetSocketAddress endpoint} and encapsulates common configuration aspects of {@link WebClient} so - * that code using {@link WebClient} is not required to apply further configuration to the actual client. - * + * that code using {@link WebClient} is not required to apply further configuration to the actual client.
* Client instances are typically cached allowing reuse of pooled connections if configured on the * {@link ClientHttpConnector}. * diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java index aa825b3b1..9f2bdc0d1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java @@ -148,7 +148,6 @@ public abstract class AbstractElasticsearchTemplate implements ElasticsearchOper /** * Set the {@link EntityCallbacks} instance to use when invoking {@link EntityCallbacks callbacks} like the * {@link org.springframework.data.elasticsearch.core.event.BeforeConvertCallback}. - * * Overrides potentially existing {@link EntityCallbacks}. * * @param entityCallbacks must not be {@literal null}. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/Range.java b/src/main/java/org/springframework/data/elasticsearch/core/Range.java index 3e03a7c23..cdd6d0697 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/Range.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/Range.java @@ -58,7 +58,7 @@ public class Range{ * @param * @param value must not be {@literal null}. * @return - * @see Range#closed(T, T) + * @see Range#closed(Object, Object) */ public static Range just(T value) { return Range.closed(value, value); @@ -231,8 +231,8 @@ public class Range { } /** - * Value object representing a boundary. A boundary can either be {@link #unbounded() unbounded}, {@link #inclusive(T) - * including its value} or {@link #exclusive(T) its value}. + * Value object representing a boundary. A boundary can either be {@link #unbounded() unbounded}, {@link #inclusive(Object)} + * including its value} or {@link #exclusive(Object)} its value}. */ public static final class Bound { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java index 016f1fbf9..a4b49088b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplate.java @@ -213,7 +213,7 @@ public class ReactiveElasticsearchTemplate implements ReactiveElasticsearchOpera /** * Set the {@link ReactiveEntityCallbacks} instance to use when invoking {@link ReactiveEntityCallbacks callbacks} * like the {@link ReactiveBeforeConvertCallback}. - * + *
* Overrides potentially existing {@link ReactiveEntityCallbacks}. * * @param entityCallbacks must not be {@literal null}. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java index d3992592f..0bf8d3834 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchOperations.java @@ -126,7 +126,6 @@ public interface ReactiveSearchOperations { * * @param query must not be {@literal null}. * @param entityType must not be {@literal null}. - * @param* @return a {@link Mono} emitting matching entities in a {@link SearchHits}. * @since 4.1 */ @@ -140,7 +139,6 @@ public interface ReactiveSearchOperations { * @param query must not be {@literal null}. * @param entityType must not be {@literal null}. * @param resultType the projection result type. - * @param * @return a {@link Mono} emitting matching entities in a {@link SearchHits}. * @since 4.1 */ @@ -152,7 +150,6 @@ public interface ReactiveSearchOperations { * @param query must not be {@literal null}. * @param entityType must not be {@literal null}. * @param index the target index, must not be {@literal null} - * @param * @return a {@link Mono} emitting matching entities in a {@link SearchHits}. * @since 4.1 */ diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java index 635485606..f94feed11 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java @@ -205,7 +205,6 @@ public interface SearchOperations { /** * Executes the given {@link Query} against elasticsearch and return result as {@link SearchHitsIterator}. - * * * @param
element return type * @param query the query to execute @@ -218,7 +217,6 @@ public interface SearchOperations { /** * Executes the given {@link Query} against elasticsearch and return result as {@link SearchHitsIterator}. - * * * @param
element return type * @param query the query to execute diff --git a/src/main/java/org/springframework/data/elasticsearch/core/geo/GeoJson.java b/src/main/java/org/springframework/data/elasticsearch/core/geo/GeoJson.java index e375e11ef..9c24f6e43 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/geo/GeoJson.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/geo/GeoJson.java @@ -20,8 +20,8 @@ import org.springframework.data.elasticsearch.core.convert.GeoConverters; import org.springframework.data.elasticsearch.core.document.Document; /** - * Interface definition for structures defined in GeoJSON format. copied from Spring - * Data Mongodb + * Interface definition for structures defined in GeoJSON + * format. copied from Spring Data Mongodb * * @author Christoph Strobl * @since 1.7 diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java index 8e2e0508a..4db7d150e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java @@ -349,7 +349,7 @@ public class MappingBuilder { } if (isNestedOrObjectProperty) { - Iterator extends TypeInformation>> iterator = property.getPersistentEntityTypes().iterator(); + Iterator extends TypeInformation>> iterator = property.getPersistentEntityTypeInformation().iterator(); ElasticsearchPersistentEntity> persistentEntity = iterator.hasNext() ? elasticsearchConverter.getMappingContext().getPersistentEntity(iterator.next()) : null; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java index 82c1be8af..6f6f0eb88 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java @@ -157,7 +157,7 @@ public interface Query { float getMinScore(); /** - * Get if scores will be computed and tracked, regardless of whether sorting on a field. Defaults to false. + * Get if scores will be computed and tracked, regardless of whether sorting on a field. Defaults to false. * * @return * @since 3.1 diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryBean.java b/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryBean.java index e7cb7dcc3..2800e5d3d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryBean.java @@ -19,9 +19,9 @@ import java.lang.annotation.Annotation; import java.util.Optional; import java.util.Set; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactory; @@ -49,12 +49,12 @@ public class ElasticsearchRepositoryBean extends CdiRepositoryBean { * @param repositoryType must not be {@literal null}. * @param beanManager must not be {@literal null}. * @param detector detector for the custom {@link org.springframework.data.repository.Repository} implementations - * {@link CustomRepositoryImplementationDetector}, can be {@literal null}. + * {@link CustomRepositoryImplementationDetector}, can be {@link Optional#empty()}. */ public ElasticsearchRepositoryBean(Bean operations, Set qualifiers, - Class repositoryType, BeanManager beanManager, CustomRepositoryImplementationDetector detector) { + Class repositoryType, BeanManager beanManager, Optional detector) { - super(qualifiers, repositoryType, beanManager, Optional.of(detector)); + super(qualifiers, repositoryType, beanManager, detector); Assert.notNull(operations, "Cannot create repository with 'null' for ElasticsearchOperations."); this.elasticsearchOperationsBean = operations; @@ -62,7 +62,7 @@ public class ElasticsearchRepositoryBean extends CdiRepositoryBean { /* * (non-Javadoc) - * @see org.springframework.data.repository.cdi.CdiRepositoryBean#create(javax.enterprise.context.spi.CreationalContext, java.lang.Class) + * @see org.springframework.data.repository.cdi.CdiRepositoryBean#create(jakarta.enterprise.context.spi.CreationalContext, java.lang.Class) */ @Override protected T create(CreationalContext creationalContext, Class repositoryType) { diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryExtension.java b/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryExtension.java index 6b04ee04d..809aa9e59 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryExtension.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/cdi/ElasticsearchRepositoryExtension.java @@ -18,17 +18,21 @@ package org.springframework.data.elasticsearch.repository.cdi; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; -import javax.enterprise.event.Observes; -import javax.enterprise.inject.UnsatisfiedResolutionException; -import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.ProcessBean; +import jakarta.enterprise.event.Observes; +import jakarta.enterprise.inject.UnsatisfiedResolutionException; +import jakarta.enterprise.inject.spi.AfterBeanDiscovery; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.ProcessBean; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.repository.cdi.CdiRepositoryBean; import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; @@ -43,14 +47,24 @@ import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; */ public class ElasticsearchRepositoryExtension extends CdiRepositoryExtensionSupport { + private static final Log LOGGER = LogFactory.getLog(ElasticsearchRepositoryExtension.class); + private final Map , Bean > elasticsearchOperationsMap = new HashMap<>(); @SuppressWarnings("unchecked") void processBean(@Observes ProcessBean processBean) { + Bean bean = processBean.getBean(); + for (Type type : bean.getTypes()) { if (type instanceof Class> && ElasticsearchOperations.class.isAssignableFrom((Class>) type)) { - elasticsearchOperationsMap.put(bean.getQualifiers(), ((Bean ) bean)); + + if (LOGGER.isDebugEnabled()) { + LOGGER.debug(String.format("Discovered %s with qualifiers %s.", ElasticsearchOperations.class.getName(), + bean.getQualifiers())); + } + + elasticsearchOperationsMap.put(new HashSet<>(bean.getQualifiers()), ((Bean ) bean)); } } } @@ -62,22 +76,27 @@ public class ElasticsearchRepositoryExtension extends CdiRepositoryExtensionSupp Set qualifiers = entry.getValue(); CdiRepositoryBean> repositoryBean = createRepositoryBean(repositoryType, qualifiers, beanManager); - afterBeanDiscovery.addBean(repositoryBean); + + if (LOGGER.isInfoEnabled()) { + LOGGER.info(String.format("Registering bean for %s with qualifiers %s.", repositoryType.getName(), qualifiers)); + } + registerBean(repositoryBean); + afterBeanDiscovery.addBean(repositoryBean); } } private CdiRepositoryBean createRepositoryBean(Class repositoryType, Set qualifiers, BeanManager beanManager) { - if (!this.elasticsearchOperationsMap.containsKey(qualifiers)) { + Bean elasticsearchOperations = this.elasticsearchOperationsMap.get(qualifiers); + + if (elasticsearchOperations == null) { throw new UnsatisfiedResolutionException(String.format("Unable to resolve a bean for '%s' with qualifiers %s.", ElasticsearchOperations.class.getName(), qualifiers)); } - Bean elasticsearchOperationsBean = this.elasticsearchOperationsMap.get(qualifiers); - - return new ElasticsearchRepositoryBean<>(elasticsearchOperationsBean, qualifiers, repositoryType, beanManager, - getCustomImplementationDetector()); + return new ElasticsearchRepositoryBean<>(elasticsearchOperations, qualifiers, repositoryType, beanManager, + Optional.of(getCustomImplementationDetector())); } } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ConvertingParameterAccessor.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ConvertingParameterAccessor.java index d70f2de0e..119a8f6a8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ConvertingParameterAccessor.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ConvertingParameterAccessor.java @@ -54,10 +54,10 @@ public class ConvertingParameterAccessor implements ElasticsearchParameterAccess return delegate.getSort(); } - @Override - public Optional > getDynamicProjection() { - return delegate.getDynamicProjection(); - } + // @Override + // public Optional > getDynamicProjection() { + // return delegate.getDynamicProjection(); + // } @Override public Class> findDynamicProjection() { diff --git a/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension b/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension similarity index 100% rename from src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension rename to src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java index 989551ca1..e264cc771 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.repositories.cdi; -import javax.inject.Inject; +import jakarta.inject.Inject; import org.springframework.lang.Nullable; diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java index 514b41704..8b1a155de 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java @@ -24,8 +24,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import javax.enterprise.inject.se.SeContainer; -import javax.enterprise.inject.se.SeContainerInitializer; +import jakarta.enterprise.inject.se.SeContainer; +import jakarta.enterprise.inject.se.SeContainerInitializer; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -49,7 +49,7 @@ import org.springframework.lang.Nullable; @IntegrationTest public class CdiRepositoryTests { - @Nullable private static SeContainer container; + @SuppressWarnings("NotNullFieldNotInitialized") private static SeContainer container; // @Nullable private static CdiTestContainer cdiContainer; private CdiProductRepository repository; @@ -67,10 +67,7 @@ public class CdiRepositoryTests { @AfterAll public static void shutdown() throws Exception { - - if (container != null) { - container.close(); - } + container.close(); } @BeforeEach diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java index e5e634bfa..db8398718 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/ElasticsearchOperationsProducer.java @@ -17,9 +17,9 @@ package org.springframework.data.elasticsearch.repositories.cdi; import static org.springframework.util.StringUtils.*; -import javax.annotation.PreDestroy; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; +import jakarta.annotation.PreDestroy; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.data.elasticsearch.client.ClientConfiguration; diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/OtherQualifier.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/OtherQualifier.java index 3280fe59d..3590d3ba4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/OtherQualifier.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/OtherQualifier.java @@ -21,7 +21,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.inject.Qualifier; +import jakarta.inject.Qualifier; /** * @author Mark Paluch diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/PersonDB.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/PersonDB.java index 2c2f085c0..0ddaaebc4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/PersonDB.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/PersonDB.java @@ -21,7 +21,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.inject.Qualifier; +import jakarta.inject.Qualifier; /** * @author Mark Paluch diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/StubParameterAccessor.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/StubParameterAccessor.java index 0a7f3be55..ef1b6fb4f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/StubParameterAccessor.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/StubParameterAccessor.java @@ -91,15 +91,6 @@ class StubParameterAccessor implements ElasticsearchParameterAccessor { return this.values; } - /* - * (non-Javadoc) - * @see org.springframework.data.repository.query.ParameterAccessor#getDynamicProjection() - */ - @Override - public Optional > getDynamicProjection() { - return Optional.empty(); - } - /* * (non-Javadoc) * @see org.springframework.data.repository.query.ParameterAccessor#findDynamicProjection()