> classes);
/**
- * Execute the multi-search against elasticsearch and return result as {@link List} of {@link Page} using custom mapper
+ * Execute the multi-search against elasticsearch and return result as {@link List} of {@link Page} using custom
+ * mapper
*
* @param queries
* @param classes
@@ -255,7 +284,8 @@ public interface ElasticsearchOperations {
/**
* Executes the given {@link CriteriaQuery} against elasticsearch and return result as {@link CloseableIterator}.
*
- * Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of error.
+ * Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of
+ * error.
*
* @param element return type
* @param query
@@ -268,7 +298,8 @@ public interface ElasticsearchOperations {
/**
* Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator}.
*
- * Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of error.
+ * Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of
+ * error.
*
* @param element return type
* @param query
@@ -279,9 +310,11 @@ public interface ElasticsearchOperations {
CloseableIterator stream(SearchQuery query, Class clazz);
/**
- * Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator} using custom mapper.
+ * Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator} using
+ * custom mapper.
*
- * Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of error.
+ * Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of
+ * error.
*
* @param element return type
* @param query
@@ -394,7 +427,7 @@ public interface ElasticsearchOperations {
* @param clazz
* @return
*/
- LinkedList multiGet(SearchQuery searchQuery, Class clazz);
+ List multiGet(SearchQuery searchQuery, Class clazz);
/**
* Execute a multiGet against elasticsearch for the given ids with MultiGetResultMapper
@@ -404,7 +437,7 @@ public interface ElasticsearchOperations {
* @param multiGetResultMapper
* @return
*/
- LinkedList multiGet(SearchQuery searchQuery, Class clazz, MultiGetResultMapper multiGetResultMapper);
+ List multiGet(SearchQuery searchQuery, Class clazz, MultiGetResultMapper multiGetResultMapper);
/**
* Index an object. Will do save or update
@@ -446,7 +479,6 @@ public interface ElasticsearchOperations {
*/
String delete(String indexName, String type, String id);
-
/**
* Delete all records matching the criteria
*
@@ -454,6 +486,7 @@ public interface ElasticsearchOperations {
* @param criteriaQuery
*/
void delete(CriteriaQuery criteriaQuery, Class clazz);
+
/**
* Delete the one object with provided id
*
@@ -525,7 +558,6 @@ public interface ElasticsearchOperations {
* refresh the index
*
* @param indexName
- *
*/
void refresh(String indexName);
@@ -533,7 +565,6 @@ public interface ElasticsearchOperations {
* refresh the index
*
* @param clazz
- *
*/
void refresh(Class clazz);
@@ -542,7 +573,7 @@ public interface ElasticsearchOperations {
*
* @param query The search query.
* @param scrollTimeInMillis The time in millisecond for scroll feature
- * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
+ * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
* @param clazz The class of entity to retrieve.
* @return The scan id for input query.
*/
@@ -553,18 +584,19 @@ public interface ElasticsearchOperations {
*
* @param query The search query.
* @param scrollTimeInMillis The time in millisecond for scroll feature
- * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
+ * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
* @param mapper Custom impl to map result to entities
* @return The scan id for input query.
*/
- ScrolledPage startScroll(long scrollTimeInMillis, SearchQuery query, Class clazz, SearchResultMapper mapper);
+ ScrolledPage startScroll(long scrollTimeInMillis, SearchQuery query, Class clazz,
+ SearchResultMapper mapper);
/**
* Returns scrolled page for given query
*
* @param criteriaQuery The search query.
* @param scrollTimeInMillis The time in millisecond for scroll feature
- * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
+ * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
* @param clazz The class of entity to retrieve.
* @return The scan id for input query.
*/
@@ -575,20 +607,22 @@ public interface ElasticsearchOperations {
*
* @param criteriaQuery The search query.
* @param scrollTimeInMillis The time in millisecond for scroll feature
- * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
+ * {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
* @param mapper Custom impl to map result to entities
* @return The scan id for input query.
*/
- ScrolledPage startScroll(long scrollTimeInMillis, CriteriaQuery criteriaQuery, Class clazz, SearchResultMapper mapper);
-
+ ScrolledPage startScroll(long scrollTimeInMillis, CriteriaQuery criteriaQuery, Class clazz,
+ SearchResultMapper mapper);
ScrolledPage continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class clazz);
- ScrolledPage continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class clazz, SearchResultMapper mapper);
+
+ ScrolledPage continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class clazz,
+ SearchResultMapper mapper);
+
/**
* Clears the search contexts associated with specified scroll ids.
*
* @param scrollId
- *
*/
void clearScroll(String scrollId);
@@ -602,33 +636,10 @@ public interface ElasticsearchOperations {
*/
Page moreLikeThis(MoreLikeThisQuery query, Class clazz);
- /**
- * adding new alias
- *
- * @param query
- * @return
- */
- Boolean addAlias(AliasQuery query);
-
- /**
- * removing previously created alias
- *
- * @param query
- * @return
- */
- Boolean removeAlias(AliasQuery query);
-
- /**
- * get all the alias pointing to specified index
- *
- * @param indexName
- * @return
- */
- List queryForAlias(String indexName);
-
-
- T query(SearchQuery query, ResultsExtractor resultsExtractor);
-
-
ElasticsearchPersistentEntity getPersistentEntityFor(Class clazz);
+
+ /**
+ * @return Converter in use
+ */
+ ElasticsearchConverter getElasticsearchConverter();
}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java
index 591bf111c..edc5fac71 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java
@@ -20,16 +20,12 @@ import static org.elasticsearch.index.query.QueryBuilders.*;
import static org.springframework.util.CollectionUtils.isEmpty;
import static org.springframework.util.StringUtils.*;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.Set;
@@ -93,7 +89,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
-import org.springframework.core.io.ClassPathResource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@@ -195,6 +190,48 @@ public class ElasticsearchRestTemplate
this.searchTimeout = searchTimeout;
}
+ @Override
+ public boolean addAlias(AliasQuery query) {
+ Assert.notNull(query.getIndexName(), "No index defined for Alias");
+ Assert.notNull(query.getAliasName(), "No alias defined");
+ IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
+ .alias(query.getAliasName()).index(query.getIndexName());
+
+ if (query.getFilterBuilder() != null) {
+ aliasAction.filter(query.getFilterBuilder());
+ } else if (query.getFilter() != null) {
+ aliasAction.filter(query.getFilter());
+ } else if (hasText(query.getRouting())) {
+ aliasAction.routing(query.getRouting());
+ } else if (hasText(query.getSearchRouting())) {
+ aliasAction.searchRouting(query.getSearchRouting());
+ } else if (hasText(query.getIndexRouting())) {
+ aliasAction.indexRouting(query.getIndexRouting());
+ }
+
+ IndicesAliasesRequest request = new IndicesAliasesRequest();
+ request.addAliasAction(aliasAction);
+ try {
+ return client.indices().updateAliases(request).isAcknowledged();
+ } catch (IOException e) {
+ throw new ElasticsearchException("failed to update aliases with request: " + request, e);
+ }
+ }
+
+ @Override
+ public boolean removeAlias(AliasQuery query) {
+ Assert.notNull(query.getIndexName(), "No index defined for Alias");
+ Assert.notNull(query.getAliasName(), "No alias defined");
+ IndicesAliasesRequest request = new IndicesAliasesRequest();
+ AliasActions aliasAction = new AliasActions(AliasActions.Type.REMOVE);
+ request.addAliasAction(aliasAction);
+ try {
+ return client.indices().updateAliases(request).isAcknowledged();
+ } catch (IOException e) {
+ throw new ElasticsearchException("failed to update aliases with request: " + request, e);
+ }
+ }
+
@Override
public boolean createIndex(Class clazz) {
return createIndexIfNotCreated(clazz);
@@ -215,7 +252,7 @@ public class ElasticsearchRestTemplate
if (clazz.isAnnotationPresent(Mapping.class)) {
String mappingPath = clazz.getAnnotation(Mapping.class).mappingPath();
if (hasText(mappingPath)) {
- String mappings = readFileFromClasspath(mappingPath);
+ String mappings = ResourceUtil.readFileFromClasspath(mappingPath);
if (hasText(mappings)) {
return putMapping(clazz, mappings);
}
@@ -257,10 +294,10 @@ public class ElasticsearchRestTemplate
}
@Override
- public Map getMapping(String indexName, String type) {
+ public Map getMapping(String indexName, String type) {
Assert.notNull(indexName, "No index defined for getMapping()");
Assert.notNull(type, "No type defined for getMapping()");
- Map mappings = null;
+ Map mappings = null;
RestClient restClient = client.getLowLevelClient();
try {
Response response = restClient.performRequest("GET", "/" + indexName + "/_mapping/" + type);
@@ -273,7 +310,7 @@ public class ElasticsearchRestTemplate
}
@Override
- public Map getMapping(Class clazz) {
+ public Map getMapping(Class clazz) {
return getMapping(getPersistentEntityFor(clazz).getIndexName(), getPersistentEntityFor(clazz).getIndexType());
}
@@ -281,7 +318,7 @@ public class ElasticsearchRestTemplate
ObjectMapper mapper = new ObjectMapper();
try {
- Map result = null;
+ Map result = null;
JsonNode node = mapper.readTree(mappingResponse);
node = node.findValue("mappings").findValue(type);
@@ -312,8 +349,7 @@ public class ElasticsearchRestTemplate
GetResponse response;
try {
response = client.get(request);
- T entity = mapper.mapResult(response, clazz);
- return entity;
+ return mapper.mapResult(response, clazz);
} catch (IOException e) {
throw new ElasticsearchException("Error while getting for request: " + request.toString(), e);
}
@@ -497,7 +533,7 @@ public class ElasticsearchRestTemplate
@Override
public CloseableIterator stream(CriteriaQuery query, Class clazz) {
- final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
+ long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz, resultsMapper);
}
@@ -507,68 +543,15 @@ public class ElasticsearchRestTemplate
}
@Override
- public CloseableIterator stream(SearchQuery query, final Class clazz, final SearchResultMapper mapper) {
- final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
+ public CloseableIterator stream(SearchQuery query, Class clazz, SearchResultMapper mapper) {
+ long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz, mapper);
}
- private CloseableIterator doStream(final long scrollTimeInMillis, final ScrolledPage page,
- final Class clazz, final SearchResultMapper mapper) {
- return new CloseableIterator() {
-
- /** As we couldn't retrieve single result with scroll, store current hits. */
- private volatile Iterator currentHits = page.iterator();
-
- /** The scroll id. */
- private volatile String scrollId = page.getScrollId();
-
- /** If stream is finished (ie: cluster returns no results. */
- private volatile boolean finished = !currentHits.hasNext();
-
- @Override
- public void close() {
- try {
- // Clear scroll on cluster only in case of error (cause elasticsearch auto clear scroll when it's done)
- if (!finished && scrollId != null && currentHits != null && currentHits.hasNext()) {
- clearScroll(scrollId);
- }
- } finally {
- currentHits = null;
- scrollId = null;
- }
- }
-
- @Override
- public boolean hasNext() {
- // Test if stream is finished
- if (finished) {
- return false;
- }
- // Test if it remains hits
- if (currentHits == null || !currentHits.hasNext()) {
- // Do a new request
- final ScrolledPage scroll = continueScroll(scrollId, scrollTimeInMillis, clazz, mapper);
- // Save hits and scroll id
- currentHits = scroll.iterator();
- finished = !currentHits.hasNext();
- scrollId = scroll.getScrollId();
- }
- return currentHits.hasNext();
- }
-
- @Override
- public T next() {
- if (hasNext()) {
- return currentHits.next();
- }
- throw new NoSuchElementException();
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException("remove");
- }
- };
+ private CloseableIterator doStream(long scrollTimeInMillis, ScrolledPage page, Class clazz,
+ SearchResultMapper mapper) {
+ return StreamQueries.streamResults(page, scrollId -> continueScroll(scrollId, scrollTimeInMillis, clazz, mapper),
+ this::clearScroll);
}
@Override
@@ -658,7 +641,7 @@ public class ElasticsearchRestTemplate
}
@Override
- public LinkedList multiGet(SearchQuery searchQuery, Class clazz) {
+ public List multiGet(SearchQuery searchQuery, Class clazz) {
return resultsMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
}
@@ -697,7 +680,7 @@ public class ElasticsearchRestTemplate
}
@Override
- public LinkedList multiGet(SearchQuery searchQuery, Class clazz, MultiGetResultMapper getResultMapper) {
+ public List multiGet(SearchQuery searchQuery, Class clazz, MultiGetResultMapper getResultMapper) {
return getResultMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
}
@@ -1162,7 +1145,7 @@ public class ElasticsearchRestTemplate
if (clazz.isAnnotationPresent(Setting.class)) {
String settingPath = clazz.getAnnotation(Setting.class).settingPath();
if (hasText(settingPath)) {
- String settings = readFileFromClasspath(settingPath);
+ String settings = ResourceUtil.readFileFromClasspath(settingPath);
if (hasText(settings)) {
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
}
@@ -1375,48 +1358,6 @@ public class ElasticsearchRestTemplate
refresh(getPersistentEntityFor(clazz).getIndexName());
}
- @Override
- public Boolean addAlias(AliasQuery query) {
- Assert.notNull(query.getIndexName(), "No index defined for Alias");
- Assert.notNull(query.getAliasName(), "No alias defined");
- final IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
- .alias(query.getAliasName()).index(query.getIndexName());
-
- if (query.getFilterBuilder() != null) {
- aliasAction.filter(query.getFilterBuilder());
- } else if (query.getFilter() != null) {
- aliasAction.filter(query.getFilter());
- } else if (hasText(query.getRouting())) {
- aliasAction.routing(query.getRouting());
- } else if (hasText(query.getSearchRouting())) {
- aliasAction.searchRouting(query.getSearchRouting());
- } else if (hasText(query.getIndexRouting())) {
- aliasAction.indexRouting(query.getIndexRouting());
- }
-
- IndicesAliasesRequest request = new IndicesAliasesRequest();
- request.addAliasAction(aliasAction);
- try {
- return client.indices().updateAliases(request).isAcknowledged();
- } catch (IOException e) {
- throw new ElasticsearchException("failed to update aliases with request: " + request, e);
- }
- }
-
- @Override
- public Boolean removeAlias(AliasQuery query) {
- Assert.notNull(query.getIndexName(), "No index defined for Alias");
- Assert.notNull(query.getAliasName(), "No alias defined");
- IndicesAliasesRequest request = new IndicesAliasesRequest();
- AliasActions aliasAction = new AliasActions(AliasActions.Type.REMOVE);
- request.addAliasAction(aliasAction);
- try {
- return client.indices().updateAliases(request).isAcknowledged();
- } catch (IOException e) {
- throw new ElasticsearchException("failed to update aliases with request: " + request, e);
- }
- }
-
@Override
public List queryForAlias(String indexName) {
List aliases = null;
@@ -1441,7 +1382,7 @@ public class ElasticsearchRestTemplate
* @param aliasResponse
* @return
*/
- List convertAliasResponse(String aliasResponse) {
+ private List convertAliasResponse(String aliasResponse) {
ObjectMapper mapper = new ObjectMapper();
try {
@@ -1560,34 +1501,9 @@ public class ElasticsearchRestTemplate
return resultsMapper;
}
+ @Deprecated
public static String readFileFromClasspath(String url) {
- StringBuilder stringBuilder = new StringBuilder();
-
- BufferedReader bufferedReader = null;
-
- try {
- ClassPathResource classPathResource = new ClassPathResource(url);
- InputStreamReader inputStreamReader = new InputStreamReader(classPathResource.getInputStream());
- bufferedReader = new BufferedReader(inputStreamReader);
- String line;
-
- String lineSeparator = System.getProperty("line.separator");
- while ((line = bufferedReader.readLine()) != null) {
- stringBuilder.append(line).append(lineSeparator);
- }
- } catch (Exception e) {
- logger.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage()));
- return null;
- } finally {
- if (bufferedReader != null)
- try {
- bufferedReader.close();
- } catch (IOException e) {
- logger.debug(String.format("Unable to close buffered reader.. %s", e.getMessage()));
- }
- }
-
- return stringBuilder.toString();
+ return ResourceUtil.readFileFromClasspath(url);
}
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) {
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 ffc20a141..89199d9d7 100755
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java
@@ -19,16 +19,12 @@ import static org.elasticsearch.client.Requests.*;
import static org.elasticsearch.index.query.QueryBuilders.*;
import static org.springframework.util.CollectionUtils.*;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.NoSuchElementException;
import java.util.stream.Collectors;
import org.elasticsearch.action.ActionFuture;
@@ -79,10 +75,10 @@ import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.search.suggest.SuggestBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
-import org.springframework.core.io.ClassPathResource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@@ -181,6 +177,35 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
this.searchTimeout = searchTimeout;
}
+ @Override
+ public boolean addAlias(AliasQuery query) {
+ Assert.notNull(query.getIndexName(), "No index defined for Alias");
+ Assert.notNull(query.getAliasName(), "No alias defined");
+ IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
+ .alias(query.getAliasName()).index(query.getIndexName());
+
+ if (query.getFilterBuilder() != null) {
+ aliasAction.filter(query.getFilterBuilder());
+ } else if (query.getFilter() != null) {
+ aliasAction.filter(query.getFilter());
+ } else if (!StringUtils.isEmpty(query.getRouting())) {
+ aliasAction.routing(query.getRouting());
+ } else if (!StringUtils.isEmpty(query.getSearchRouting())) {
+ aliasAction.searchRouting(query.getSearchRouting());
+ } else if (!StringUtils.isEmpty(query.getIndexRouting())) {
+ aliasAction.indexRouting(query.getIndexRouting());
+ }
+ return client.admin().indices().prepareAliases().addAliasAction(aliasAction).execute().actionGet().isAcknowledged();
+ }
+
+ @Override
+ public boolean removeAlias(AliasQuery query) {
+ Assert.notNull(query.getIndexName(), "No index defined for Alias");
+ Assert.notNull(query.getAliasName(), "No alias defined");
+ return client.admin().indices().prepareAliases().removeAlias(query.getIndexName(), query.getAliasName()).execute()
+ .actionGet().isAcknowledged();
+ }
+
@Override
public boolean createIndex(Class clazz) {
return createIndexIfNotCreated(clazz);
@@ -197,7 +222,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
if (clazz.isAnnotationPresent(Mapping.class)) {
String mappingPath = clazz.getAnnotation(Mapping.class).mappingPath();
if (!StringUtils.isEmpty(mappingPath)) {
- String mappings = readFileFromClasspath(mappingPath);
+ String mappings = ResourceUtil.readFileFromClasspath(mappingPath);
if (!StringUtils.isEmpty(mappings)) {
return putMapping(clazz, mappings);
}
@@ -429,9 +454,8 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
@Override
public CloseableIterator stream(CriteriaQuery query, Class clazz) {
- final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
- return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz,
- resultsMapper);
+ long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
+ return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz, resultsMapper);
}
@Override
@@ -440,69 +464,15 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
}
@Override
- public CloseableIterator stream(SearchQuery query, final Class clazz, final SearchResultMapper mapper) {
- final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
- return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz,
- mapper);
+ public CloseableIterator stream(SearchQuery query, Class clazz, SearchResultMapper mapper) {
+ long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
+ return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz, mapper);
}
- private CloseableIterator doStream(final long scrollTimeInMillis, final ScrolledPage page,
- final Class clazz, final SearchResultMapper mapper) {
- return new CloseableIterator() {
-
- /** As we couldn't retrieve single result with scroll, store current hits. */
- private volatile Iterator currentHits = page.iterator();
-
- /** The scroll id. */
- private volatile String scrollId = page.getScrollId();
-
- /** If stream is finished (ie: cluster returns no results. */
- private volatile boolean finished = !currentHits.hasNext();
-
- @Override
- public void close() {
- try {
- // Clear scroll on cluster only in case of error (cause elasticsearch auto clear scroll when it's done)
- if (!finished && scrollId != null && currentHits != null && currentHits.hasNext()) {
- clearScroll(scrollId);
- }
- } finally {
- currentHits = null;
- scrollId = null;
- }
- }
-
- @Override
- public boolean hasNext() {
- // Test if stream is finished
- if (finished) {
- return false;
- }
- // Test if it remains hits
- if (currentHits == null || !currentHits.hasNext()) {
- // Do a new request
- final ScrolledPage scroll = continueScroll(scrollId, scrollTimeInMillis, clazz, mapper);
- // Save hits and scroll id
- currentHits = scroll.iterator();
- finished = !currentHits.hasNext();
- scrollId = scroll.getScrollId();
- }
- return currentHits.hasNext();
- }
-
- @Override
- public T next() {
- if (hasNext()) {
- return currentHits.next();
- }
- throw new NoSuchElementException();
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException("remove");
- }
- };
+ private CloseableIterator doStream(long scrollTimeInMillis, ScrolledPage page, Class clazz,
+ SearchResultMapper mapper) {
+ return StreamQueries.streamResults(page, scrollId -> continueScroll(scrollId, scrollTimeInMillis, clazz, mapper),
+ this::clearScroll);
}
@Override
@@ -582,7 +552,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
}
@Override
- public LinkedList multiGet(SearchQuery searchQuery, Class clazz) {
+ public List multiGet(SearchQuery searchQuery, Class clazz) {
return resultsMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
}
@@ -617,7 +587,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
}
@Override
- public LinkedList multiGet(SearchQuery searchQuery, Class clazz, MultiGetResultMapper getResultMapper) {
+ public List multiGet(SearchQuery searchQuery, Class clazz, MultiGetResultMapper getResultMapper) {
return getResultMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
}
@@ -1006,7 +976,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
if (clazz.isAnnotationPresent(Setting.class)) {
String settingPath = clazz.getAnnotation(Setting.class).settingPath();
if (!StringUtils.isEmpty(settingPath)) {
- String settings = readFileFromClasspath(settingPath);
+ String settings = ResourceUtil.readFileFromClasspath(settingPath);
if (!StringUtils.isEmpty(settings)) {
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
}
@@ -1183,35 +1153,6 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
refresh(getPersistentEntityFor(clazz).getIndexName());
}
- @Override
- public Boolean addAlias(AliasQuery query) {
- Assert.notNull(query.getIndexName(), "No index defined for Alias");
- Assert.notNull(query.getAliasName(), "No alias defined");
- final IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
- .alias(query.getAliasName()).index(query.getIndexName());
-
- if (query.getFilterBuilder() != null) {
- aliasAction.filter(query.getFilterBuilder());
- } else if (query.getFilter() != null) {
- aliasAction.filter(query.getFilter());
- } else if (!StringUtils.isEmpty(query.getRouting())) {
- aliasAction.routing(query.getRouting());
- } else if (!StringUtils.isEmpty(query.getSearchRouting())) {
- aliasAction.searchRouting(query.getSearchRouting());
- } else if (!StringUtils.isEmpty(query.getIndexRouting())) {
- aliasAction.indexRouting(query.getIndexRouting());
- }
- return client.admin().indices().prepareAliases().addAliasAction(aliasAction).execute().actionGet().isAcknowledged();
- }
-
- @Override
- public Boolean removeAlias(AliasQuery query) {
- Assert.notNull(query.getIndexName(), "No index defined for Alias");
- Assert.notNull(query.getAliasName(), "No alias defined");
- return client.admin().indices().prepareAliases().removeAlias(query.getIndexName(), query.getAliasName()).execute()
- .actionGet().isAcknowledged();
- }
-
@Override
public List queryForAlias(String indexName) {
return client.admin().indices().getAliases(new GetAliasesRequest().indices(indexName)).actionGet().getAliases()
@@ -1309,34 +1250,9 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
return resultsMapper;
}
+ @Deprecated
public static String readFileFromClasspath(String url) {
- StringBuilder stringBuilder = new StringBuilder();
-
- BufferedReader bufferedReader = null;
-
- try {
- ClassPathResource classPathResource = new ClassPathResource(url);
- InputStreamReader inputStreamReader = new InputStreamReader(classPathResource.getInputStream());
- bufferedReader = new BufferedReader(inputStreamReader);
- String line;
-
- String lineSeparator = System.getProperty("line.separator");
- while ((line = bufferedReader.readLine()) != null) {
- stringBuilder.append(line).append(lineSeparator);
- }
- } catch (Exception e) {
- LOGGER.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage()));
- return null;
- } finally {
- if (bufferedReader != null)
- try {
- bufferedReader.close();
- } catch (IOException e) {
- LOGGER.debug(String.format("Unable to close buffered reader.. %s", e.getMessage()));
- }
- }
-
- return stringBuilder.toString();
+ return ResourceUtil.readFileFromClasspath(url);
}
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) {
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/MappingBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/MappingBuilder.java
index 0b8e9484f..0eab56611 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/MappingBuilder.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/MappingBuilder.java
@@ -418,7 +418,7 @@ class MappingBuilder {
String mappingPath = entity.getRequiredAnnotation(DynamicTemplates.class).mappingPath();
if (hasText(mappingPath)) {
- String jsonString = ElasticsearchTemplate.readFileFromClasspath(mappingPath);
+ String jsonString = ResourceUtil.readFileFromClasspath(mappingPath);
if (hasText(jsonString)) {
ObjectMapper objectMapper = new ObjectMapper();
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/MultiGetResultMapper.java b/src/main/java/org/springframework/data/elasticsearch/core/MultiGetResultMapper.java
index 62a5b70dc..1b2086d36 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/MultiGetResultMapper.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/MultiGetResultMapper.java
@@ -16,7 +16,7 @@
package org.springframework.data.elasticsearch.core;
-import java.util.LinkedList;
+import java.util.List;
import org.elasticsearch.action.get.MultiGetResponse;
@@ -25,5 +25,5 @@ import org.elasticsearch.action.get.MultiGetResponse;
*/
public interface MultiGetResultMapper {
- LinkedList mapResults(MultiGetResponse responses, Class clazz);
+ List mapResults(MultiGetResponse responses, Class clazz);
}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ResourceUtil.java b/src/main/java/org/springframework/data/elasticsearch/core/ResourceUtil.java
new file mode 100644
index 000000000..aa0b8db28
--- /dev/null
+++ b/src/main/java/org/springframework/data/elasticsearch/core/ResourceUtil.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2019 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.elasticsearch.core;
+
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.util.StreamUtils;
+
+/**
+ * Utility to read {@link org.springframework.core.io.Resource}s.
+ *
+ * @author Mark Paluch
+ * @since 3.2
+ */
+abstract class ResourceUtil {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ResourceUtil.class);
+
+ /**
+ * Read a {@link ClassPathResource} into a {@link String}.
+ *
+ * @param url
+ * @return
+ */
+ public static String readFileFromClasspath(String url) {
+
+ ClassPathResource classPathResource = new ClassPathResource(url);
+ try (InputStream is = classPathResource.getInputStream()) {
+ return StreamUtils.copyToString(is, Charset.defaultCharset());
+ } catch (Exception e) {
+ LOGGER.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage()));
+ return null;
+ }
+ }
+
+ // Utility constructor
+ private ResourceUtil() {}
+}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java b/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java
new file mode 100644
index 000000000..2a685525b
--- /dev/null
+++ b/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2019 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.elasticsearch.core;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import org.springframework.data.util.CloseableIterator;
+
+/**
+ * Utility to support streaming queries.
+ *
+ * @author Mark Paluch
+ * @since 3.2
+ */
+abstract class StreamQueries {
+
+ /**
+ * Stream query results using {@link ScrolledPage}.
+ *
+ * @param page the initial page.
+ * @param continueFunction continuation function accepting the current scrollId.
+ * @param clearScroll cleanup function accepting the current scrollId.
+ * @param
+ * @return the {@link CloseableIterator}.
+ */
+ static CloseableIterator streamResults(ScrolledPage page,
+ Function> continueFunction, Consumer clearScroll) {
+
+ return new CloseableIterator() {
+
+ /** As we couldn't retrieve single result with scroll, store current hits. */
+ private volatile Iterator currentHits = page.iterator();
+
+ /** The scroll id. */
+ private volatile String scrollId = page.getScrollId();
+
+ /** If stream is finished (ie: cluster returns no results. */
+ private volatile boolean finished = !currentHits.hasNext();
+
+ @Override
+ public void close() {
+ try {
+ // Clear scroll on cluster only in case of error (cause elasticsearch auto clear scroll when it's done)
+ if (!finished && scrollId != null && currentHits != null && currentHits.hasNext()) {
+ clearScroll.accept(scrollId);
+ }
+ } finally {
+ currentHits = null;
+ scrollId = null;
+ }
+ }
+
+ @Override
+ public boolean hasNext() {
+ // Test if stream is finished
+ if (finished) {
+ return false;
+ }
+ // Test if it remains hits
+ if (currentHits == null || !currentHits.hasNext()) {
+ // Do a new request
+ ScrolledPage scroll = continueFunction.apply(scrollId);
+ // Save hits and scroll id
+ currentHits = scroll.iterator();
+ finished = !currentHits.hasNext();
+ scrollId = scroll.getScrollId();
+ }
+ return currentHits.hasNext();
+ }
+
+ @Override
+ public T next() {
+ if (hasNext()) {
+ return currentHits.next();
+ }
+ throw new NoSuchElementException();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("remove");
+ }
+ };
+ }
+
+ // utility constructor
+ private StreamQueries() {}
+}
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java
index 0fcb3ae0e..43cec5b69 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchMappingContext.java
@@ -39,7 +39,7 @@ public class SimpleElasticsearchMappingContext
@Override
protected SimpleElasticsearchPersistentEntity> createPersistentEntity(TypeInformation typeInformation) {
- final SimpleElasticsearchPersistentEntity persistentEntity = new SimpleElasticsearchPersistentEntity<>(
+ SimpleElasticsearchPersistentEntity persistentEntity = new SimpleElasticsearchPersistentEntity<>(
typeInformation);
if (context != null) {
persistentEntity.setApplicationContext(context);
diff --git a/src/test/java/org/springframework/data/elasticsearch/ElasticsearchVersionRule.java b/src/test/java/org/springframework/data/elasticsearch/ElasticsearchVersionRule.java
index ad70f96ea..5932abc03 100644
--- a/src/test/java/org/springframework/data/elasticsearch/ElasticsearchVersionRule.java
+++ b/src/test/java/org/springframework/data/elasticsearch/ElasticsearchVersionRule.java
@@ -59,7 +59,7 @@ public class ElasticsearchVersionRule implements TestRule {
}
@Override
- public Statement apply(final Statement base, Description description) {
+ public Statement apply(Statement base, Description description) {
return new Statement() {
diff --git a/src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java b/src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java
index 724e9820f..fc9b50fe2 100644
--- a/src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/NestedObjectTests.java
@@ -19,6 +19,7 @@ import static org.apache.commons.lang.RandomStringUtils.*;
import static org.assertj.core.api.Assertions.*;
import static org.elasticsearch.index.query.QueryBuilders.*;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -58,6 +59,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
* @author Mohsin Husen
* @author Artur Konczak
* @author Peter-Josef Meisch
+ * @author Mark Paluch
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/elasticsearch-template-test.xml")
@@ -76,17 +78,17 @@ public class NestedObjectTests {
@Test
public void shouldIndexInitialLevelNestedObject() {
- final List cars = new ArrayList<>();
+ List cars = new ArrayList<>();
- final Car saturn = new Car();
+ Car saturn = new Car();
saturn.setName("Saturn");
saturn.setModel("SL");
- final Car subaru = new Car();
+ Car subaru = new Car();
subaru.setName("Subaru");
subaru.setModel("Imprezza");
- final Car ford = new Car();
+ Car ford = new Car();
ford.setName("Ford");
ford.setModel("Focus");
@@ -94,26 +96,26 @@ public class NestedObjectTests {
cars.add(subaru);
cars.add(ford);
- final Person foo = new Person();
+ Person foo = new Person();
foo.setName("Foo");
foo.setId("1");
foo.setCar(cars);
- final Car car = new Car();
+ Car car = new Car();
car.setName("Saturn");
car.setModel("Imprezza");
- final Person bar = new Person();
+ Person bar = new Person();
bar.setId("2");
bar.setName("Bar");
- bar.setCar(Arrays.asList(car));
+ bar.setCar(Collections.singletonList(car));
- final List indexQueries = new ArrayList<>();
- final IndexQuery indexQuery1 = new IndexQuery();
+ List indexQueries = new ArrayList<>();
+ IndexQuery indexQuery1 = new IndexQuery();
indexQuery1.setId(foo.getId());
indexQuery1.setObject(foo);
- final IndexQuery indexQuery2 = new IndexQuery();
+ IndexQuery indexQuery2 = new IndexQuery();
indexQuery2.setId(bar.getId());
indexQuery2.setObject(bar);
@@ -123,11 +125,11 @@ public class NestedObjectTests {
elasticsearchTemplate.bulkIndex(indexQueries);
elasticsearchTemplate.refresh(Person.class);
- final QueryBuilder builder = nestedQuery("car",
+ QueryBuilder builder = nestedQuery("car",
boolQuery().must(termQuery("car.name", "saturn")).must(termQuery("car.model", "imprezza")), ScoreMode.None);
- final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
- final List persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
+ SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
+ List persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
assertThat(persons).hasSize(1);
}
@@ -136,16 +138,16 @@ public class NestedObjectTests {
public void shouldIndexMultipleLevelNestedObject() {
// given
- final List indexQueries = createPerson();
+ List indexQueries = createPerson();
// when
elasticsearchTemplate.bulkIndex(indexQueries);
elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);
// then
- final GetQuery getQuery = new GetQuery();
+ GetQuery getQuery = new GetQuery();
getQuery.setId("1");
- final PersonMultipleLevelNested personIndexed = elasticsearchTemplate.queryForObject(getQuery,
+ PersonMultipleLevelNested personIndexed = elasticsearchTemplate.queryForObject(getQuery,
PersonMultipleLevelNested.class);
assertThat(personIndexed).isNotNull();
}
@@ -154,18 +156,18 @@ public class NestedObjectTests {
public void shouldIndexMultipleLevelNestedObjectWithIncludeInParent() {
// given
- final List indexQueries = createPerson();
+ List indexQueries = createPerson();
// when
elasticsearchTemplate.bulkIndex(indexQueries);
// then
- final Map mapping = elasticsearchTemplate.getMapping(PersonMultipleLevelNested.class);
+ Map mapping = elasticsearchTemplate.getMapping(PersonMultipleLevelNested.class);
assertThat(mapping).isNotNull();
- final Map propertyMap = (Map) mapping.get("properties");
+ Map propertyMap = (Map) mapping.get("properties");
assertThat(propertyMap).isNotNull();
- final Map bestCarsAttributes = (Map) propertyMap.get("bestCars");
+ Map bestCarsAttributes = (Map) propertyMap.get("bestCars");
assertThat(bestCarsAttributes.get("include_in_parent")).isNotNull();
}
@@ -173,20 +175,20 @@ public class NestedObjectTests {
public void shouldSearchUsingNestedQueryOnMultipleLevelNestedObject() {
// given
- final List indexQueries = createPerson();
+ List indexQueries = createPerson();
// when
elasticsearchTemplate.bulkIndex(indexQueries);
elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);
// then
- final BoolQueryBuilder builder = boolQuery();
+ BoolQueryBuilder builder = boolQuery();
builder.must(nestedQuery("girlFriends", termQuery("girlFriends.type", "temp"), ScoreMode.None)).must(
nestedQuery("girlFriends.cars", termQuery("girlFriends.cars.name", "Ford".toLowerCase()), ScoreMode.None));
- final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
+ SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
- final Page personIndexed = elasticsearchTemplate.queryForPage(searchQuery,
+ Page personIndexed = elasticsearchTemplate.queryForPage(searchQuery,
PersonMultipleLevelNested.class);
assertThat(personIndexed).isNotNull();
assertThat(personIndexed.getTotalElements()).isEqualTo(1);
@@ -195,55 +197,55 @@ public class NestedObjectTests {
private List createPerson() {
- final PersonMultipleLevelNested person1 = new PersonMultipleLevelNested();
+ PersonMultipleLevelNested person1 = new PersonMultipleLevelNested();
person1.setId("1");
person1.setName("name");
- final Car saturn = new Car();
+ Car saturn = new Car();
saturn.setName("Saturn");
saturn.setModel("SL");
- final Car subaru = new Car();
+ Car subaru = new Car();
subaru.setName("Subaru");
subaru.setModel("Imprezza");
- final Car car = new Car();
+ Car car = new Car();
car.setName("Saturn");
car.setModel("Imprezza");
- final Car ford = new Car();
+ Car ford = new Car();
ford.setName("Ford");
ford.setModel("Focus");
- final GirlFriend permanent = new GirlFriend();
+ GirlFriend permanent = new GirlFriend();
permanent.setName("permanent");
permanent.setType("permanent");
permanent.setCars(Arrays.asList(saturn, subaru));
- final GirlFriend temp = new GirlFriend();
+ GirlFriend temp = new GirlFriend();
temp.setName("temp");
temp.setType("temp");
temp.setCars(Arrays.asList(car, ford));
person1.setGirlFriends(Arrays.asList(permanent, temp));
- final IndexQuery indexQuery1 = new IndexQuery();
+ IndexQuery indexQuery1 = new IndexQuery();
indexQuery1.setId(person1.getId());
indexQuery1.setObject(person1);
- final PersonMultipleLevelNested person2 = new PersonMultipleLevelNested();
+ PersonMultipleLevelNested person2 = new PersonMultipleLevelNested();
person2.setId("2");
person2.setName("name");
person2.setGirlFriends(Collections.singletonList(permanent));
- final IndexQuery indexQuery2 = new IndexQuery();
+ IndexQuery indexQuery2 = new IndexQuery();
indexQuery2.setId(person2.getId());
indexQuery2.setObject(person2);
- final List indexQueries = new ArrayList<>();
+ List indexQueries = new ArrayList<>();
indexQueries.add(indexQuery1);
indexQueries.add(indexQuery2);
@@ -254,17 +256,17 @@ public class NestedObjectTests {
public void shouldSearchBooksForPersonInitialLevelNestedType() {
// given
- final List cars = new ArrayList<>();
+ List cars = new ArrayList<>();
- final Car saturn = new Car();
+ Car saturn = new Car();
saturn.setName("Saturn");
saturn.setModel("SL");
- final Car subaru = new Car();
+ Car subaru = new Car();
subaru.setName("Subaru");
subaru.setModel("Imprezza");
- final Car ford = new Car();
+ Car ford = new Car();
ford.setName("Ford");
ford.setModel("Focus");
@@ -272,43 +274,43 @@ public class NestedObjectTests {
cars.add(subaru);
cars.add(ford);
- final Book java = new Book();
+ Book java = new Book();
java.setId("1");
java.setName("java");
- final Author javaAuthor = new Author();
+ Author javaAuthor = new Author();
javaAuthor.setId("1");
javaAuthor.setName("javaAuthor");
java.setAuthor(javaAuthor);
- final Book spring = new Book();
+ Book spring = new Book();
spring.setId("2");
spring.setName("spring");
- final Author springAuthor = new Author();
+ Author springAuthor = new Author();
springAuthor.setId("2");
springAuthor.setName("springAuthor");
spring.setAuthor(springAuthor);
- final Person foo = new Person();
+ Person foo = new Person();
foo.setName("Foo");
foo.setId("1");
foo.setCar(cars);
foo.setBooks(Arrays.asList(java, spring));
- final Car car = new Car();
+ Car car = new Car();
car.setName("Saturn");
car.setModel("Imprezza");
- final Person bar = new Person();
+ Person bar = new Person();
bar.setId("2");
bar.setName("Bar");
- bar.setCar(Arrays.asList(car));
+ bar.setCar(Collections.singletonList(car));
- final List indexQueries = new ArrayList<>();
- final IndexQuery indexQuery1 = new IndexQuery();
+ List indexQueries = new ArrayList<>();
+ IndexQuery indexQuery1 = new IndexQuery();
indexQuery1.setId(foo.getId());
indexQuery1.setObject(foo);
- final IndexQuery indexQuery2 = new IndexQuery();
+ IndexQuery indexQuery2 = new IndexQuery();
indexQuery2.setId(bar.getId());
indexQuery2.setObject(bar);
@@ -319,11 +321,10 @@ public class NestedObjectTests {
elasticsearchTemplate.refresh(Person.class);
// when
- final QueryBuilder builder = nestedQuery("books", boolQuery().must(termQuery("books.name", "java")),
- ScoreMode.None);
+ QueryBuilder builder = nestedQuery("books", boolQuery().must(termQuery("books.name", "java")), ScoreMode.None);
- final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
- final List persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
+ SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
+ List persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
// then
assertThat(persons).hasSize(1);
@@ -333,8 +334,8 @@ public class NestedObjectTests {
public void shouldIndexAndSearchMapAsNestedType() {
// given
- final Book book1 = new Book();
- final Book book2 = new Book();
+ Book book1 = new Book();
+ Book book2 = new Book();
book1.setId(randomNumeric(5));
book1.setName("testBook1");
@@ -342,21 +343,21 @@ public class NestedObjectTests {
book2.setId(randomNumeric(5));
book2.setName("testBook2");
- final Map> map1 = new HashMap<>();
+ Map> map1 = new HashMap<>();
map1.put(1, Arrays.asList("test1", "test2"));
- final Map> map2 = new HashMap<>();
+ Map> map2 = new HashMap<>();
map2.put(1, Arrays.asList("test3", "test4"));
book1.setBuckets(map1);
book2.setBuckets(map2);
- final List indexQueries = new ArrayList<>();
- final IndexQuery indexQuery1 = new IndexQuery();
+ List indexQueries = new ArrayList<>();
+ IndexQuery indexQuery1 = new IndexQuery();
indexQuery1.setId(book1.getId());
indexQuery1.setObject(book1);
- final IndexQuery indexQuery2 = new IndexQuery();
+ IndexQuery indexQuery2 = new IndexQuery();
indexQuery2.setId(book2.getId());
indexQuery2.setObject(book2);
@@ -368,9 +369,9 @@ public class NestedObjectTests {
elasticsearchTemplate.refresh(Book.class);
// then
- final SearchQuery searchQuery = new NativeSearchQueryBuilder()
+ SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.None)).build();
- final Page books = elasticsearchTemplate.queryForPage(searchQuery, Book.class);
+ Page books = elasticsearchTemplate.queryForPage(searchQuery, Book.class);
assertThat(books.getContent()).hasSize(1);
assertThat(books.getContent().get(0).getId()).isEqualTo(book2.getId());
@@ -378,7 +379,8 @@ public class NestedObjectTests {
@Setter
@Getter
- @Document(indexName = "test-index-book-nested-objects", type = "book", shards = 1, replicas = 0, refreshInterval = "-1")
+ @Document(indexName = "test-index-book-nested-objects", type = "book", shards = 1, replicas = 0,
+ refreshInterval = "-1")
static class Book {
@Id private String id;
@@ -390,6 +392,7 @@ public class NestedObjectTests {
searchAnalyzer = "standard") }) private String description;
}
+ @Data
@Document(indexName = "test-index-person", type = "user", shards = 1, replicas = 0, refreshInterval = "-1")
static class Person {
@@ -400,60 +403,13 @@ public class NestedObjectTests {
@Field(type = FieldType.Nested) private List car;
@Field(type = FieldType.Nested, includeInParent = true) private List books;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public List getCar() {
- return car;
- }
-
- public void setCar(List car) {
- this.car = car;
- }
-
- public List getBooks() {
- return books;
- }
-
- public void setBooks(List books) {
- this.books = books;
- }
}
+ @Data
static class Car {
private String name;
private String model;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getModel() {
- return model;
- }
-
- public void setModel(String model) {
- this.model = model;
- }
}
/**
@@ -461,6 +417,7 @@ public class NestedObjectTests {
* @author Mohsin Husen
* @author Artur Konczak
*/
+ @Data
@Document(indexName = "test-index-person-multiple-level-nested", type = "user", shards = 1, replicas = 0,
refreshInterval = "-1")
static class PersonMultipleLevelNested {
@@ -474,52 +431,12 @@ public class NestedObjectTests {
@Field(type = FieldType.Nested) private List cars;
@Field(type = FieldType.Nested, includeInParent = true) private List bestCars;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public List getGirlFriends() {
- return girlFriends;
- }
-
- public void setGirlFriends(List girlFriends) {
- this.girlFriends = girlFriends;
- }
-
- public List getCars() {
- return cars;
- }
-
- public void setCars(List cars) {
- this.cars = cars;
- }
-
- public List getBestCars() {
- return bestCars;
- }
-
- public void setBestCars(List bestCars) {
- this.bestCars = bestCars;
- }
}
/**
* @author Mohsin Husen
*/
-
+ @Data
static class GirlFriend {
private String name;
@@ -527,56 +444,17 @@ public class NestedObjectTests {
private String type;
@Field(type = FieldType.Nested) private List cars;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public List getCars() {
- return cars;
- }
-
- public void setCars(List cars) {
- this.cars = cars;
- }
}
/**
* @author Rizwan Idrees
* @author Mohsin Husen
*/
+ @Data
static class Author {
private String id;
private String name;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
}
}
diff --git a/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedElasticsearchRepositoriesTests.java b/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedElasticsearchRepositoriesTests.java
index 7f895fdf7..6d254c8cb 100644
--- a/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedElasticsearchRepositoriesTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedElasticsearchRepositoriesTests.java
@@ -18,12 +18,8 @@ package org.springframework.data.elasticsearch.config.nested;
import static org.junit.Assert.*;
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
-import lombok.AllArgsConstructor;
import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
+import lombok.Data;
import java.lang.Double;
import java.lang.Long;
@@ -31,6 +27,7 @@ import java.lang.Long;
import org.elasticsearch.node.NodeValidationException;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -71,22 +68,12 @@ public class EnableNestedElasticsearchRepositoriesTests {
@Autowired(required = false) private SampleRepository nestedRepository;
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Chris White
- * @author Sascha Woo
- */
@Test
public void hasNestedRepository() {
assertNotNull(nestedRepository);
}
- @Setter
- @Getter
- @NoArgsConstructor
- @AllArgsConstructor
- @ToString
+ @Data
@Builder
@Document(indexName = "test-index-sample-config-nested", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
static class SampleEntity {
diff --git a/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableElasticsearchRepositoriesTests.java b/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableElasticsearchRepositoriesTests.java
index dc9c13c83..d3b699903 100644
--- a/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableElasticsearchRepositoriesTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableElasticsearchRepositoriesTests.java
@@ -18,12 +18,7 @@ package org.springframework.data.elasticsearch.config.notnested;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
+import lombok.Data;
import java.lang.Double;
import java.lang.Long;
@@ -33,6 +28,7 @@ import org.elasticsearch.node.NodeValidationException;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
@@ -97,7 +93,6 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
@Before
public void before() {
-
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
}
@@ -126,18 +121,7 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
assertThat(nestedRepository).isNull();
}
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Chris White
- * @author Sascha Woo
- */
- @Setter
- @Getter
- @NoArgsConstructor
- @AllArgsConstructor
- @ToString
- @Builder
+ @Data
@Document(indexName = "test-index-sample-config-not-nested", type = "test-type", shards = 1, replicas = 0,
refreshInterval = "-1")
static class SampleEntity {
@@ -152,20 +136,9 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
private GeoPoint location;
@Version private Long version;
@Score private float score;
-
}
- /**
- * @author Gad Akuka
- * @author Rizwan Idrees
- * @author Mohsin Husen
- */
-
- @Setter
- @Getter
- @NoArgsConstructor
- @AllArgsConstructor
- @Builder
+ @Data
@Document(indexName = "test-index-uuid-keyed-config-not-nested", type = "test-type-uuid-keyed", shards = 1,
replicas = 0, refreshInterval = "-1")
static class SampleEntityUUIDKeyed {
@@ -177,10 +150,7 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
@ScriptedField private Long scriptedRate;
private boolean available;
private String highlightedMessage;
-
private GeoPoint location;
-
@Version private Long version;
-
}
}
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/AliasTests.java b/src/test/java/org/springframework/data/elasticsearch/core/AliasTests.java
index f88e39af5..2909c4014 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/AliasTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/AliasTests.java
@@ -22,11 +22,9 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
-import lombok.Getter;
+import lombok.Data;
import lombok.NoArgsConstructor;
-import lombok.Setter;
-import java.lang.Double;
import java.lang.Long;
import java.lang.Object;
import java.util.HashMap;
@@ -37,14 +35,12 @@ import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.Score;
-import org.springframework.data.elasticsearch.annotations.ScriptedField;
-import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.core.query.AliasBuilder;
import org.springframework.data.elasticsearch.core.query.AliasQuery;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
@@ -89,7 +85,7 @@ public class AliasTests {
elasticsearchTemplate.createIndex(INDEX_NAME_2, settings);
elasticsearchTemplate.refresh(INDEX_NAME_2);
- IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
+ IndexInitializer.init(elasticsearchTemplate, AliasedEntity.class);
}
@Test
@@ -141,11 +137,11 @@ public class AliasTests {
elasticsearchTemplate.addAlias(aliasQuery);
String documentId = randomNumeric(5);
- SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
+ AliasedEntity aliasedEntity = AliasedEntity.builder().id(documentId).message("some message")
.version(System.currentTimeMillis()).build();
- IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias).withId(sampleEntity.getId())
- .withType(TYPE_NAME).withObject(sampleEntity).build();
+ IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias).withId(aliasedEntity.getId())
+ .withType(TYPE_NAME).withObject(aliasedEntity).build();
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(INDEX_NAME_1);
@@ -157,7 +153,7 @@ public class AliasTests {
// then
List aliases = elasticsearchTemplate.queryForAlias(INDEX_NAME_1);
assertThat(aliases).isNotNull();
- final AliasMetaData aliasMetaData = aliases.get(0);
+ AliasMetaData aliasMetaData = aliases.get(0);
assertThat(aliasMetaData.alias()).isEqualTo(alias);
assertThat(aliasMetaData.searchRouting()).isEqualTo("0");
assertThat(aliasMetaData.indexRouting()).isEqualTo("0");
@@ -185,24 +181,24 @@ public class AliasTests {
elasticsearchTemplate.addAlias(aliasQuery2);
String documentId = randomNumeric(5);
- SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
+ AliasedEntity aliasedEntity = AliasedEntity.builder().id(documentId).message("some message")
.version(System.currentTimeMillis()).build();
IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias1).withType(TYPE_NAME)
- .withId(sampleEntity.getId()).withObject(sampleEntity).build();
+ .withId(aliasedEntity.getId()).withObject(aliasedEntity).build();
elasticsearchTemplate.index(indexQuery);
// then
List responseAlias1 = elasticsearchTemplate.queryForAlias(INDEX_NAME_1);
assertThat(responseAlias1).isNotNull();
- final AliasMetaData aliasMetaData1 = responseAlias1.get(0);
+ AliasMetaData aliasMetaData1 = responseAlias1.get(0);
assertThat(aliasMetaData1.alias()).isEqualTo(alias1);
assertThat(aliasMetaData1.indexRouting()).isEqualTo("0");
List responseAlias2 = elasticsearchTemplate.queryForAlias(INDEX_NAME_2);
assertThat(responseAlias2).isNotNull();
- final AliasMetaData aliasMetaData2 = responseAlias2.get(0);
+ AliasMetaData aliasMetaData2 = responseAlias2.get(0);
assertThat(aliasMetaData2.alias()).isEqualTo(alias2);
assertThat(aliasMetaData2.searchRouting()).isEqualTo("1");
@@ -212,22 +208,15 @@ public class AliasTests {
}
@Builder
- @Setter
- @Getter
+ @Data
@NoArgsConstructor
@AllArgsConstructor
- @Document(indexName = "test-index-sample-core-alias", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
- static class SampleEntity {
+ @Document(indexName = "test-index-sample-core-alias", type = "test-type", shards = 1, replicas = 0,
+ refreshInterval = "-1")
+ static class AliasedEntity {
@Id private String id;
- @Field(type = Text, store = true, fielddata = true) private String type;
@Field(type = Text, store = true, fielddata = true) private String message;
- private int rate;
- @ScriptedField private Double scriptedRate;
- private boolean available;
- private String highlightedMessage;
- private GeoPoint location;
@Version private Long version;
- @Score private float score;
}
}
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/CustomResultMapper.java b/src/test/java/org/springframework/data/elasticsearch/core/CustomResultMapper.java
index a571a6cc4..50e4ceb28 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/CustomResultMapper.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/CustomResultMapper.java
@@ -15,11 +15,12 @@
*/
package org.springframework.data.elasticsearch.core;
-import java.util.LinkedList;
+import java.util.List;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.search.SearchResponse;
+
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
@@ -52,7 +53,7 @@ public class CustomResultMapper implements ResultsMapper {
}
@Override
- public LinkedList mapResults(MultiGetResponse responses, Class clazz) {
+ public List mapResults(MultiGetResponse responses, Class clazz) {
return null;
}
}
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/DefaultEntityMapperTests.java b/src/test/java/org/springframework/data/elasticsearch/core/DefaultEntityMapperTests.java
index 95fffa9dd..055469561 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/DefaultEntityMapperTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/DefaultEntityMapperTests.java
@@ -19,15 +19,15 @@ import static org.assertj.core.api.Assertions.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
-import lombok.Getter;
+import lombok.Data;
import lombok.NoArgsConstructor;
-import lombok.Setter;
import java.io.IOException;
import java.util.Locale;
import org.junit.Before;
import org.junit.Test;
+
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.ReadOnlyProperty;
import org.springframework.data.annotation.Transient;
@@ -35,10 +35,7 @@ import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.GeoPointField;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
-import org.springframework.data.geo.Box;
-import org.springframework.data.geo.Circle;
import org.springframework.data.geo.Point;
-import org.springframework.data.geo.Polygon;
/**
* @author Artur Konczak
@@ -64,7 +61,7 @@ public class DefaultEntityMapperTests {
// given
// when
- String jsonResult = entityMapper.mapToString(Car.builder().model(CAR_MODEL).name(CAR_NAME).build());
+ String jsonResult = entityMapper.mapToString(new Car(CAR_NAME, CAR_MODEL));
// then
assertThat(jsonResult).isEqualTo(JSON_STRING);
@@ -86,11 +83,11 @@ public class DefaultEntityMapperTests {
@Test
public void shouldMapGeoPointElasticsearchNames() throws IOException {
// given
- final Point point = new Point(10, 20);
- final String pointAsString = point.getX() + "," + point.getY();
- final double[] pointAsArray = { point.getX(), point.getY() };
- final GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point))
- .pointC(pointAsString).pointD(pointAsArray).build();
+ Point point = new Point(10, 20);
+ String pointAsString = point.getX() + "," + point.getY();
+ double[] pointAsArray = { point.getX(), point.getY() };
+ GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point)).pointC(pointAsString)
+ .pointD(pointAsArray).build();
// when
String jsonResult = entityMapper.mapToString(geoEntity);
@@ -135,43 +132,16 @@ public class DefaultEntityMapperTests {
public String property;
}
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Artur Konczak
- */
- @Setter
- @Getter
- @NoArgsConstructor
+ @Data
@AllArgsConstructor
- @Builder
+ @NoArgsConstructor
static class Car {
private String name;
private String model;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getModel() {
- return model;
- }
-
- public void setModel(String model) {
- this.model = model;
- }
}
- /**
- * @author Artur Konczak
- */
- @Setter
- @Getter
+ @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@@ -181,11 +151,6 @@ public class DefaultEntityMapperTests {
@Id private String id;
- // geo shape - Spring Data
- private Box box;
- private Circle circle;
- private Polygon polygon;
-
// geo point - Custom implementation + Spring Data
@GeoPointField private Point pointA;
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/DefaultResultMapperTests.java b/src/test/java/org/springframework/data/elasticsearch/core/DefaultResultMapperTests.java
index 6a0a34d0f..e2ffcd2b8 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/DefaultResultMapperTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/DefaultResultMapperTests.java
@@ -20,12 +20,9 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
+import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
import java.lang.Double;
import java.lang.Long;
@@ -33,7 +30,7 @@ import java.lang.Object;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
-import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import org.elasticsearch.action.get.GetResponse;
@@ -54,6 +51,7 @@ import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
@@ -206,7 +204,7 @@ public class DefaultResultMapperTests {
when(response.getSourceAsString()).thenReturn("{}");
when(response.getVersion()).thenReturn(1234L);
- SampleEntity result = resultMapper.mapResult(response, SampleEntity.class);
+ MappedEntity result = resultMapper.mapResult(response, MappedEntity.class);
assertThat(result).isNotNull();
assertThat(result.getVersion()).isEqualTo(1234);
@@ -229,7 +227,7 @@ public class DefaultResultMapperTests {
when(multiResponse.getResponses()).thenReturn(new MultiGetItemResponse[] {
new MultiGetItemResponse(response1, null), new MultiGetItemResponse(response2, null) });
- LinkedList results = resultMapper.mapResults(multiResponse, SampleEntity.class);
+ List results = resultMapper.mapResults(multiResponse, MappedEntity.class);
assertThat(results).isNotNull().hasSize(2);
@@ -255,7 +253,7 @@ public class DefaultResultMapperTests {
SearchResponse searchResponse = mock(SearchResponse.class);
when(searchResponse.getHits()).thenReturn(searchHits);
- AggregatedPage results = resultMapper.mapResults(searchResponse, SampleEntity.class,
+ AggregatedPage results = resultMapper.mapResults(searchResponse, MappedEntity.class,
mock(Pageable.class));
assertThat(results).isNotNull();
@@ -288,7 +286,7 @@ public class DefaultResultMapperTests {
private String createJsonCar(String name, String model) {
- final String q = "\"";
+ String q = "\"";
StringBuffer sb = new StringBuffer();
sb.append("{").append(q).append("name").append(q).append(":").append(q).append(name).append(q).append(",");
sb.append(q).append("model").append(q).append(":").append(q).append(model).append(q).append("}");
@@ -311,52 +309,16 @@ public class DefaultResultMapperTests {
private final String id, name;
}
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Artur Konczak
- */
- @Setter
- @Getter
- @NoArgsConstructor
- @AllArgsConstructor
- @Builder
+ @Data
static class Car {
private String name;
private String model;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getModel() {
- return model;
- }
-
- public void setModel(String model) {
- this.model = model;
- }
}
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Chris White
- * @author Sascha Woo
- */
- @Setter
- @Getter
- @NoArgsConstructor
- @AllArgsConstructor
- @ToString
- @Builder
- @Document(indexName = "test-index-sample-default-result-mapper", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
- static class SampleEntity {
+ @Data
+ @Document(indexName = "test-index-sample-default-result-mapper", type = "test-type")
+ static class MappedEntity {
@Id private String id;
@Field(type = Text, store = true, fielddata = true) private String type;
@@ -368,49 +330,6 @@ public class DefaultResultMapperTests {
private GeoPoint location;
@Version private Long version;
@Score private float score;
-
- @Override
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- SampleEntity that = (SampleEntity) o;
-
- if (available != that.available)
- return false;
- if (rate != that.rate)
- return false;
- if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
- : that.highlightedMessage != null)
- return false;
- if (id != null ? !id.equals(that.id) : that.id != null)
- return false;
- if (location != null ? !location.equals(that.location) : that.location != null)
- return false;
- if (message != null ? !message.equals(that.message) : that.message != null)
- return false;
- if (type != null ? !type.equals(that.type) : that.type != null)
- return false;
- if (version != null ? !version.equals(that.version) : that.version != null)
- return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = id != null ? id.hashCode() : 0;
- result = 31 * result + (type != null ? type.hashCode() : 0);
- result = 31 * result + (message != null ? message.hashCode() : 0);
- result = 31 * result + rate;
- result = 31 * result + (available ? 1 : 0);
- result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
- result = 31 * result + (location != null ? location.hashCode() : 0);
- result = 31 * result + (version != null ? version.hashCode() : 0);
- return result;
- }
}
}
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapperUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapperUnitTests.java
index 7b04f9928..a7d1fb4c1 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapperUnitTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapperUnitTests.java
@@ -24,7 +24,6 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
-import lombok.Setter;
import java.io.IOException;
import java.util.ArrayList;
@@ -39,6 +38,7 @@ import java.util.Map;
import org.junit.Before;
import org.junit.Test;
+
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.data.annotation.Id;
@@ -210,11 +210,11 @@ public class ElasticsearchEntityMapperUnitTests {
@Test // DATAES-530
public void shouldMapGeoPointElasticsearchNames() throws IOException {
// given
- final Point point = new Point(10, 20);
- final String pointAsString = point.getX() + "," + point.getY();
- final double[] pointAsArray = { point.getX(), point.getY() };
- final GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point))
- .pointC(pointAsString).pointD(pointAsArray).build();
+ Point point = new Point(10, 20);
+ String pointAsString = point.getX() + "," + point.getY();
+ double[] pointAsArray = { point.getX(), point.getY() };
+ GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point)).pointC(pointAsString)
+ .pointD(pointAsArray).build();
// when
String jsonResult = entityMapper.mapToString(geoEntity);
@@ -682,13 +682,7 @@ public class ElasticsearchEntityMapperUnitTests {
}
}
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Artur Konczak
- */
- @Setter
- @Getter
+ @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@@ -696,29 +690,9 @@ public class ElasticsearchEntityMapperUnitTests {
private String name;
private String model;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getModel() {
- return model;
- }
-
- public void setModel(String model) {
- this.model = model;
- }
}
- /**
- * @author Artur Konczak
- */
- @Setter
- @Getter
+ @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java
index 1e809966c..4d4b20acb 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java
@@ -18,29 +18,18 @@ package org.springframework.data.elasticsearch.core;
import static org.apache.commons.lang.RandomStringUtils.*;
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
-import lombok.AllArgsConstructor;
import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
-
-import java.lang.Double;
-import java.lang.Long;
-import java.lang.Object;
+import lombok.Data;
import org.elasticsearch.ElasticsearchStatusException;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import org.springframework.data.annotation.Id;
-import org.springframework.data.annotation.Version;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.Score;
-import org.springframework.data.elasticsearch.annotations.ScriptedField;
-import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.core.query.UpdateQuery;
import org.springframework.data.elasticsearch.core.query.UpdateQueryBuilder;
import org.springframework.test.context.ContextConfiguration;
@@ -75,73 +64,13 @@ public class ElasticsearchRestTemplateTests extends ElasticsearchTemplateTests {
elasticsearchTemplate.update(updateQuery);
}
- /**
- * @author Rizwan Idrees
- * @author Mohsin Husen
- * @author Chris White
- * @author Sascha Woo
- */
- @Setter
- @Getter
- @NoArgsConstructor
- @AllArgsConstructor
- @ToString
+ @Data
@Builder
- @Document(indexName = "test-index-sample-core-rest-template", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
+ @Document(indexName = "test-index-sample-core-rest-template", type = "test-type", shards = 1, replicas = 0,
+ refreshInterval = "-1")
static class SampleEntity {
@Id private String id;
@Field(type = Text, store = true, fielddata = true) private String type;
- @Field(type = Text, store = true, fielddata = true) private String message;
- private int rate;
- @ScriptedField private Double scriptedRate;
- private boolean available;
- private String highlightedMessage;
- private GeoPoint location;
- @Version private Long version;
- @Score private float score;
-
- @Override
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- SampleEntity that = (SampleEntity) o;
-
- if (available != that.available)
- return false;
- if (rate != that.rate)
- return false;
- if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
- : that.highlightedMessage != null)
- return false;
- if (id != null ? !id.equals(that.id) : that.id != null)
- return false;
- if (location != null ? !location.equals(that.location) : that.location != null)
- return false;
- if (message != null ? !message.equals(that.message) : that.message != null)
- return false;
- if (type != null ? !type.equals(that.type) : that.type != null)
- return false;
- if (version != null ? !version.equals(that.version) : that.version != null)
- return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = id != null ? id.hashCode() : 0;
- result = 31 * result + (type != null ? type.hashCode() : 0);
- result = 31 * result + (message != null ? message.hashCode() : 0);
- result = 31 * result + rate;
- result = 31 * result + (available ? 1 : 0);
- result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
- result = 31 * result + (location != null ? location.hashCode() : 0);
- result = 31 * result + (version != null ? version.hashCode() : 0);
- return result;
- }
}
}
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateParentChildTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateParentChildTests.java
index ee08f9631..6c9e211dc 100644
--- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateParentChildTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateParentChildTests.java
@@ -105,7 +105,7 @@ public class ElasticsearchTemplateParentChildTests {
XContentBuilder builder;
builder = jsonBuilder().startObject().field("name", newChildName).endObject();
updateRequest.doc(builder);
- final UpdateResponse response = update(updateRequest);
+ UpdateResponse response = update(updateRequest);
assertThat(response.getShardInfo().getSuccessful()).isEqualTo(1);
}
@@ -170,7 +170,7 @@ public class ElasticsearchTemplateParentChildTests {
private UpdateResponse update(UpdateRequest updateRequest) {
- final UpdateQuery update = new UpdateQuery();
+ UpdateQuery update = new UpdateQuery();
update.setId(updateRequest.id());
update.setType(updateRequest.type());
update.setIndexName(updateRequest.index());
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java
index f8b89989a..2fc73e061 100755
--- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java
@@ -23,10 +23,9 @@ import static org.springframework.data.elasticsearch.utils.IndexBuilder.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
-import lombok.Getter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
import java.lang.Double;
import java.lang.Integer;
@@ -44,8 +43,6 @@ import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
import org.assertj.core.util.Lists;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetResponse;
@@ -65,6 +62,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
@@ -259,7 +257,7 @@ public class ElasticsearchTemplateTests {
// when
SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2)).build();
- LinkedList sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class);
+ List sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class);
// then
assertThat(sampleEntities).hasSize(2);
@@ -289,7 +287,7 @@ public class ElasticsearchTemplateTests {
// when
SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2))
.withFields("message", "type").build();
- LinkedList sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class,
+ List sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class,
new MultiGetResultMapper() {
@Override
public LinkedList mapResults(MultiGetResponse responses, Class clazz) {
@@ -893,7 +891,7 @@ public class ElasticsearchTemplateTests {
// when
boolean created = elasticsearchTemplate.createIndex(SampleEntity.class);
elasticsearchTemplate.putMapping(SampleEntity.class);
- final Map setting = elasticsearchTemplate.getSetting(SampleEntity.class);
+ Map setting = elasticsearchTemplate.getSetting(SampleEntity.class);
// then
assertThat(created).isTrue();
@@ -1470,7 +1468,7 @@ public class ElasticsearchTemplateTests {
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class);
- final List message = new HighlightBuilder().field("message").fields();
+ List message = new HighlightBuilder().field("message").fields();
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "test"))
.withHighlightFields(message.toArray(new HighlightBuilder.Field[message.size()])).build();
@@ -1878,7 +1876,7 @@ public class ElasticsearchTemplateTests {
Page sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
- final List content = sampleEntities.getContent();
+ List content = sampleEntities.getContent();
assertThat(content.get(0).getId()).isNotNull();
assertThat(content.get(1).getId()).isNotNull();
}
@@ -1949,7 +1947,7 @@ public class ElasticsearchTemplateTests {
});
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
- final List