diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 6df801547..d27eea544 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -689,7 +689,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati : 10000l; SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(deleteQuery.getQuery()).withIndices(indexName) - .withTypes(typeName).withPageable(new PageRequest(0, pageSize)).build(); + .withTypes(typeName).withPageable(PageRequest.of(0, pageSize)).build(); String scrollId = scan(searchQuery, scrollTimeInMillis, true); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java index 926f9a54b..49ae37ae7 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/NativeSearchQueryBuilder.java @@ -33,6 +33,7 @@ import org.springframework.data.elasticsearch.core.facet.FacetRequest; * @author Rizwan Idrees * @author Mohsin Husen * @author Artur Konczak + * @author Mark Paluch */ public class NativeSearchQueryBuilder { @@ -43,7 +44,7 @@ public class NativeSearchQueryBuilder { private List facetRequests = new ArrayList<>(); private List aggregationBuilders = new ArrayList<>(); private HighlightBuilder.Field[] highlightFields; - private Pageable pageable; + private Pageable pageable = Pageable.NONE; private String[] indices; private String[] types; private String[] fields; @@ -141,9 +142,7 @@ public class NativeSearchQueryBuilder { public NativeSearchQuery build() { NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryBuilder, filterBuilder, sortBuilders, highlightFields); - if (pageable != null) { - nativeSearchQuery.setPageable(pageable); - } + nativeSearchQuery.setPageable(pageable); if (indices != null) { nativeSearchQuery.addIndices(indices); 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 8bde92f3a..d6e6cf86f 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 @@ -1,5 +1,5 @@ /* - * Copyright 2013-2016 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,11 +28,12 @@ import org.springframework.data.domain.Sort; * * @author Rizwan Idrees * @author Mohsin Husen + * @author Mark Paluch */ public interface Query { - public static final int DEFAULT_PAGE_SIZE = 10; - public static final Pageable DEFAULT_PAGE = new PageRequest(0, DEFAULT_PAGE_SIZE); + int DEFAULT_PAGE_SIZE = 10; + Pageable DEFAULT_PAGE = PageRequest.of(0, DEFAULT_PAGE_SIZE); /** * restrict result to entries on given page. Corresponds to the 'start' and 'rows' parameter in elasticsearch 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 83208e279..8e730ae93 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 @@ -71,13 +71,13 @@ public class ElasticsearchRepositoryExtension extends CdiRepositoryExtensionSupp private CdiRepositoryBean createRepositoryBean(Class repositoryType, Set qualifiers, BeanManager beanManager) { - Bean elasticsearchOperationsBean = this.elasticsearchOperationsMap.get(qualifiers); - - if (elasticsearchOperationsBean == null) { + if (!this.elasticsearchOperationsMap.containsKey(qualifiers)) { 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, Optional.ofNullable(getCustomImplementationDetector())); } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchPartQuery.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchPartQuery.java index cbc98eccb..60e89551a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchPartQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchPartQuery.java @@ -1,5 +1,5 @@ /* - * Copyright 2013 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package org.springframework.data.elasticsearch.repository.query; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; import org.springframework.data.elasticsearch.core.query.CriteriaQuery; @@ -33,6 +34,7 @@ import org.springframework.data.util.StreamUtils; * @author Rizwan Idrees * @author Mohsin Husen * @author Kevin Leturc + * @author Mark Paluch */ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery { @@ -58,8 +60,8 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery return elasticsearchOperations.queryForPage(query, queryMethod.getEntityInformation().getJavaType()); } else if (queryMethod.isStreamQuery()) { Class entityType = queryMethod.getEntityInformation().getJavaType(); - if (query.getPageable() == null) { - query.setPageable(new PageRequest(0, 20)); + if (query.getPageable() == Pageable.NONE) { + query.setPageable(PageRequest.of(0, 20)); } return StreamUtils.createStreamFromIterator((CloseableIterator) elasticsearchOperations.stream(query, entityType)); @@ -67,7 +69,7 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery } else if (queryMethod.isCollectionQuery()) { if (accessor.getPageable() == null) { int itemCount = (int) elasticsearchOperations.count(query, queryMethod.getEntityInformation().getJavaType()); - query.setPageable(new PageRequest(0, Math.max(1, itemCount))); + query.setPageable(PageRequest.of(0, Math.max(1, itemCount))); } else { query.setPageable(accessor.getPageable()); } @@ -83,9 +85,9 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery Object result = null; if (queryMethod.isCollectionQuery()) { - if (accessor.getPageable() == null) { + if (accessor.getPageable() == Pageable.NONE) { int itemCount = (int) elasticsearchOperations.count(query, queryMethod.getEntityInformation().getJavaType()); - query.setPageable(new PageRequest(0, Math.max(1, itemCount))); + query.setPageable(PageRequest.of(0, Math.max(1, itemCount))); } else { query.setPageable(accessor.getPageable()); } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java index 8cb1c3fa3..5aed6246e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2015 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,6 @@ import org.springframework.data.elasticsearch.annotations.Query; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.query.QueryMethod; -import org.springframework.util.StringUtils; /** * ElasticsearchQueryMethod @@ -30,6 +29,7 @@ import org.springframework.util.StringUtils; * @author Rizwan Idrees * @author Mohsin Husen * @author Oliver Gierke + * @author Mark Paluch */ public class ElasticsearchQueryMethod extends QueryMethod { @@ -45,7 +45,6 @@ public class ElasticsearchQueryMethod extends QueryMethod { } public String getAnnotatedQuery() { - String query = (String) AnnotationUtils.getValue(queryAnnotation, "value"); - return StringUtils.hasText(query) ? query : null; + return (String) AnnotationUtils.getValue(queryAnnotation, "value"); } } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchStringQuery.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchStringQuery.java index 8bf2bcf93..8d3add2ed 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchStringQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchStringQuery.java @@ -1,5 +1,5 @@ /* - * Copyright 2013 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.springframework.core.convert.support.GenericConversionService; +import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.convert.DateTimeConverters; import org.springframework.data.elasticsearch.core.query.StringQuery; @@ -30,6 +31,7 @@ import org.springframework.util.Assert; * * @author Rizwan Idrees * @author Mohsin Husen + * @author Mark Paluch */ public class ElasticsearchStringQuery extends AbstractElasticsearchRepositoryQuery { @@ -50,8 +52,8 @@ public class ElasticsearchStringQuery extends AbstractElasticsearchRepositoryQue } } - public ElasticsearchStringQuery(ElasticsearchQueryMethod queryMethod, - ElasticsearchOperations elasticsearchOperations, String query) { + public ElasticsearchStringQuery(ElasticsearchQueryMethod queryMethod, ElasticsearchOperations elasticsearchOperations, + String query) { super(queryMethod, elasticsearchOperations); Assert.notNull(query, "Query cannot be empty"); this.query = query; @@ -65,7 +67,7 @@ public class ElasticsearchStringQuery extends AbstractElasticsearchRepositoryQue stringQuery.setPageable(accessor.getPageable()); return elasticsearchOperations.queryForPage(stringQuery, queryMethod.getEntityInformation().getJavaType()); } else if (queryMethod.isCollectionQuery()) { - if (accessor.getPageable() != null) { + if (accessor.getPageable() != Pageable.NONE) { stringQuery.setPageable(accessor.getPageable()); } return elasticsearchOperations.queryForList(stringQuery, queryMethod.getEntityInformation().getJavaType()); diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java index b053c2223..7cf126214 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java @@ -106,7 +106,7 @@ public abstract class AbstractElasticsearchRepository(Collections.emptyList()); } - return this.findAll(new PageRequest(0, Math.max(1, itemCount))); + return this.findAll(PageRequest.of(0, Math.max(1, itemCount))); } @Override @@ -122,7 +122,7 @@ public abstract class AbstractElasticsearchRepository(Collections.emptyList()); } SearchQuery query = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) - .withPageable(new PageRequest(0, itemCount, sort)).build(); + .withPageable(PageRequest.of(0, itemCount, sort)).build(); return elasticsearchOperations.queryForPage(query, getEntityClass()); } @@ -188,7 +188,7 @@ public abstract class AbstractElasticsearchRepository(Collections.emptyList()); } - searchQuery.setPageable(new PageRequest(0, count)); + searchQuery.setPageable(PageRequest.of(0, count)); return elasticsearchOperations.queryForPage(searchQuery, getEntityClass()); } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java index 169597aa4..433f77271 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java @@ -18,11 +18,10 @@ package org.springframework.data.elasticsearch.repository.support; import java.io.Serializable; import java.util.Optional; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; import org.springframework.data.repository.core.support.PersistentEntityInformation; +import org.springframework.util.Assert; /** * Elasticsearch specific implementation of @@ -39,17 +38,20 @@ import org.springframework.data.repository.core.support.PersistentEntityInformat public class MappingElasticsearchEntityInformation extends PersistentEntityInformation implements ElasticsearchEntityInformation { - private static final Logger logger = LoggerFactory.getLogger(MappingElasticsearchEntityInformation.class); private final ElasticsearchPersistentEntity entityMetadata; private final String indexName; private final String type; public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity entity) { - this(entity, null, null); + this(entity, entity.getIndexName(), entity.getIndexType()); } public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity entity, String indexName, String type) { super(entity); + + Assert.notNull(indexName, "IndexName must not be null!"); + Assert.notNull(type, "IndexType must not be null!"); + this.entityMetadata = entity; this.indexName = indexName; this.type = type; @@ -68,12 +70,12 @@ public class MappingElasticsearchEntityInformation @Override public String getIndexName() { - return indexName != null ? indexName : entityMetadata.getIndexName(); + return indexName; } @Override public String getType() { - return type != null ? type : entityMetadata.getIndexType(); + return type; } @Override