This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 230b51979ce4d2221fec86c9794e8d51ab96e3be Author: Benoit Tellier <[email protected]> AuthorDate: Thu May 16 17:43:34 2019 +0700 JAMES-2765 Migrate quota-search-elasticsearch to ES 6 REST client --- .../plugin/quota-search-elasticsearch-v6/pom.xml | 4 +- .../ElasticSearchQuotaConfiguration.java | 6 +-- .../elasticsearch/ElasticSearchQuotaSearcher.java | 43 +++++++++---------- .../search/elasticsearch/QuotaQueryConverter.java | 6 +-- .../QuotaRatioElasticSearchConstants.java | 8 ++-- .../elasticsearch/QuotaRatioMappingFactory.java | 37 +++++++--------- .../QuotaSearchIndexCreationUtil.java | 21 ++++----- .../events/ElasticSearchQuotaMailboxListener.java | 10 ++--- .../ElasticSearchQuotaConfigurationTest.java | 6 +-- ...lasticSearchQuotaSearchTestSystemExtension.java | 26 +++++------ .../ElasticSearchQuotaSearcherTest.java | 2 +- .../ElasticSearchQuotaMailboxListenerTest.java | 50 +++++++++++----------- pom.xml | 11 +++++ 13 files changed, 112 insertions(+), 118 deletions(-) diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/pom.xml b/mailbox/plugin/quota-search-elasticsearch-v6/pom.xml index c1eeca6..7135337 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/pom.xml +++ b/mailbox/plugin/quota-search-elasticsearch-v6/pom.xml @@ -34,11 +34,11 @@ <dependencies> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>apache-james-backends-es</artifactId> + <artifactId>apache-james-backends-es-v6</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>apache-james-backends-es</artifactId> + <artifactId>apache-james-backends-es-v6</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfiguration.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfiguration.java index c14f339..53e6d9b 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfiguration.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfiguration.java @@ -24,9 +24,9 @@ import java.util.Optional; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; -import org.apache.james.backends.es.IndexName; -import org.apache.james.backends.es.ReadAliasName; -import org.apache.james.backends.es.WriteAliasName; +import org.apache.james.backends.es.v6.IndexName; +import org.apache.james.backends.es.v6.ReadAliasName; +import org.apache.james.backends.es.v6.WriteAliasName; public class ElasticSearchQuotaConfiguration { diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java index 21d55a8..55ce6c9 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java @@ -19,22 +19,24 @@ package org.apache.james.quota.search.elasticsearch; -import static org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE; import static org.apache.james.quota.search.elasticsearch.json.JsonMessageConstants.USER; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; -import org.apache.james.backends.es.AliasName; -import org.apache.james.backends.es.ReadAliasName; -import org.apache.james.backends.es.search.ScrollIterable; +import org.apache.james.backends.es.v6.AliasName; +import org.apache.james.backends.es.v6.NodeMappingFactory; +import org.apache.james.backends.es.v6.ReadAliasName; +import org.apache.james.backends.es.v6.search.ScrollIterable; import org.apache.james.core.User; import org.apache.james.quota.search.QuotaQuery; import org.apache.james.quota.search.QuotaSearcher; -import org.elasticsearch.action.search.SearchRequestBuilder; -import org.elasticsearch.client.Client; +import org.elasticsearch.action.search.SearchRequest; +import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.unit.TimeValue; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; @@ -43,11 +45,11 @@ import com.github.steveash.guavate.Guavate; public class ElasticSearchQuotaSearcher implements QuotaSearcher { private static final TimeValue TIMEOUT = new TimeValue(60000); - private final Client client; + private final RestHighLevelClient client; private final AliasName readAlias; private final QuotaQueryConverter quotaQueryConverter; - public ElasticSearchQuotaSearcher(Client client, ReadAliasName readAlias) { + public ElasticSearchQuotaSearcher(RestHighLevelClient client, ReadAliasName readAlias) { this.client = client; this.readAlias = readAlias; this.quotaQueryConverter = new QuotaQueryConverter(); @@ -59,8 +61,7 @@ public class ElasticSearchQuotaSearcher implements QuotaSearcher { .stream() .flatMap(searchResponse -> Arrays.stream(searchResponse.getHits() .getHits())) - .map(hit -> hit.field(USER)) - .map(field -> (String) field.getValue()) + .map(SearchHit::getId) .map(User::fromUsername) .skip(query.getOffset().getValue()); @@ -70,22 +71,20 @@ public class ElasticSearchQuotaSearcher implements QuotaSearcher { .collect(Guavate.toImmutableList()); } - public SearchRequestBuilder prepareSearch(QuotaQuery query) { - SearchRequestBuilder searchRequestBuilder = client.prepareSearch(readAlias.getValue()) - .setTypes(QUOTA_RATIO_TYPE.getValue()) - .setScroll(TIMEOUT) - .addFields(USER) - .setQuery(quotaQueryConverter.from(query)); + public SearchRequest prepareSearch(QuotaQuery query) { + SearchSourceBuilder sourceBuilder = new SearchSourceBuilder() + .query(quotaQueryConverter.from(query)) + .sort(SortBuilders.fieldSort(USER) + .order(SortOrder.ASC)); query.getLimit() .getValue() - .ifPresent(searchRequestBuilder::setSize); - - searchRequestBuilder.addSort( - SortBuilders.fieldSort(USER) - .order(SortOrder.ASC)); + .ifPresent(sourceBuilder::size); - return searchRequestBuilder; + return new SearchRequest(readAlias.getValue()) + .types(NodeMappingFactory.DEFAULT_MAPPING_NAME) + .scroll(TIMEOUT) + .source(sourceBuilder); } } \ No newline at end of file diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaQueryConverter.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaQueryConverter.java index b02d8ac..a67d063 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaQueryConverter.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaQueryConverter.java @@ -43,10 +43,10 @@ import org.elasticsearch.index.query.TermQueryBuilder; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -public class QuotaQueryConverter { +class QuotaQueryConverter { private final Map<Class<? extends QuotaClause>, Function<QuotaClause, QueryBuilder>> clauseConverter; - public QuotaQueryConverter() { + QuotaQueryConverter() { Builder<Class<? extends QuotaClause>, Function<QuotaClause, QueryBuilder>> builder = ImmutableMap.builder(); builder.put(HasDomain.class, this::convertHasDomain); @@ -57,7 +57,7 @@ public class QuotaQueryConverter { clauseConverter = builder.build(); } - public QueryBuilder from(QuotaQuery query) { + QueryBuilder from(QuotaQuery query) { List<QuotaClause> clauses = query.getClause().getClauses(); if (clauses.isEmpty()) { return matchAllQuery(); diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java index e3ceadd..43cb89e 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java @@ -19,10 +19,9 @@ package org.apache.james.quota.search.elasticsearch; -import org.apache.james.backends.es.IndexName; -import org.apache.james.backends.es.ReadAliasName; -import org.apache.james.backends.es.TypeName; -import org.apache.james.backends.es.WriteAliasName; +import org.apache.james.backends.es.v6.IndexName; +import org.apache.james.backends.es.v6.ReadAliasName; +import org.apache.james.backends.es.v6.WriteAliasName; public interface QuotaRatioElasticSearchConstants { @@ -33,5 +32,4 @@ public interface QuotaRatioElasticSearchConstants { WriteAliasName DEFAULT_QUOTA_RATIO_WRITE_ALIAS = new WriteAliasName("quota_ratio_write_alias"); ReadAliasName DEFAULT_QUOTA_RATIO_READ_ALIAS = new ReadAliasName("quota_ratio_read_alias"); IndexName DEFAULT_QUOTA_RATIO_INDEX = new IndexName("quota_ratio_v1"); - TypeName QUOTA_RATIO_TYPE = new TypeName("quota_ratio"); } diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioMappingFactory.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioMappingFactory.java index 128f1d1..78d7aa3 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioMappingFactory.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioMappingFactory.java @@ -19,12 +19,10 @@ package org.apache.james.quota.search.elasticsearch; -import static org.apache.james.backends.es.NodeMappingFactory.DOUBLE; -import static org.apache.james.backends.es.NodeMappingFactory.INDEX; -import static org.apache.james.backends.es.NodeMappingFactory.NOT_ANALYZED; -import static org.apache.james.backends.es.NodeMappingFactory.PROPERTIES; -import static org.apache.james.backends.es.NodeMappingFactory.STRING; -import static org.apache.james.backends.es.NodeMappingFactory.TYPE; +import static org.apache.james.backends.es.v6.NodeMappingFactory.DOUBLE; +import static org.apache.james.backends.es.v6.NodeMappingFactory.KEYWORD; +import static org.apache.james.backends.es.v6.NodeMappingFactory.PROPERTIES; +import static org.apache.james.backends.es.v6.NodeMappingFactory.TYPE; import static org.apache.james.quota.search.elasticsearch.json.JsonMessageConstants.DOMAIN; import static org.apache.james.quota.search.elasticsearch.json.JsonMessageConstants.QUOTA_RATIO; import static org.apache.james.quota.search.elasticsearch.json.JsonMessageConstants.USER; @@ -34,29 +32,24 @@ import java.io.IOException; import org.elasticsearch.common.xcontent.XContentBuilder; -public class QuotaRatioMappingFactory { +class QuotaRatioMappingFactory { public static XContentBuilder getMappingContent() { try { return jsonBuilder() .startObject() + .startObject(PROPERTIES) - .startObject(QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE.getValue()) - .startObject(PROPERTIES) - - .startObject(USER) - .field(TYPE, STRING) - .field(INDEX, NOT_ANALYZED) - .endObject() + .startObject(USER) + .field(TYPE, KEYWORD) + .endObject() - .startObject(DOMAIN) - .field(TYPE, STRING) - .field(INDEX, NOT_ANALYZED) - .endObject() + .startObject(DOMAIN) + .field(TYPE, KEYWORD) + .endObject() - .startObject(QUOTA_RATIO) - .field(TYPE, DOUBLE) - .endObject() + .startObject(QUOTA_RATIO) + .field(TYPE, DOUBLE) .endObject() .endObject() .endObject(); @@ -64,4 +57,4 @@ public class QuotaRatioMappingFactory { throw new RuntimeException(e); } } -} +} \ No newline at end of file diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaSearchIndexCreationUtil.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaSearchIndexCreationUtil.java index f546230..3555b28 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaSearchIndexCreationUtil.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaSearchIndexCreationUtil.java @@ -19,20 +19,22 @@ package org.apache.james.quota.search.elasticsearch; -import org.apache.james.backends.es.AliasName; -import org.apache.james.backends.es.ElasticSearchConfiguration; -import org.apache.james.backends.es.IndexCreationFactory; -import org.apache.james.backends.es.IndexName; -import org.apache.james.backends.es.NodeMappingFactory; -import org.elasticsearch.client.Client; +import java.io.IOException; + +import org.apache.james.backends.es.v6.AliasName; +import org.apache.james.backends.es.v6.ElasticSearchConfiguration; +import org.apache.james.backends.es.v6.IndexCreationFactory; +import org.apache.james.backends.es.v6.IndexName; +import org.apache.james.backends.es.v6.NodeMappingFactory; +import org.elasticsearch.client.RestHighLevelClient; public class QuotaSearchIndexCreationUtil { - public static Client prepareClient(Client client, + public static RestHighLevelClient prepareClient(RestHighLevelClient client, AliasName readAlias, AliasName writeAlias, IndexName indexName, - ElasticSearchConfiguration configuration) { + ElasticSearchConfiguration configuration) throws IOException { return NodeMappingFactory.applyMapping( new IndexCreationFactory(configuration) @@ -41,11 +43,10 @@ public class QuotaSearchIndexCreationUtil { .addAlias(writeAlias) .createIndexAndAliases(client), indexName, - QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE, QuotaRatioMappingFactory.getMappingContent()); } - public static Client prepareDefaultClient(Client client, ElasticSearchConfiguration configuration) { + public static RestHighLevelClient prepareDefaultClient(RestHighLevelClient client, ElasticSearchConfiguration configuration) throws IOException { return prepareClient(client, QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_READ_ALIAS, QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java index 2b828f2..1a14c0c 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java @@ -18,10 +18,12 @@ ****************************************************************/ package org.apache.james.quota.search.elasticsearch.events; +import java.io.IOException; + import javax.inject.Inject; import javax.inject.Named; -import org.apache.james.backends.es.ElasticSearchIndexer; +import org.apache.james.backends.es.v6.ElasticSearchIndexer; import org.apache.james.core.User; import org.apache.james.mailbox.events.Event; import org.apache.james.mailbox.events.Group; @@ -29,8 +31,6 @@ import org.apache.james.mailbox.events.MailboxListener; import org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; -import com.fasterxml.jackson.core.JsonProcessingException; - public class ElasticSearchQuotaMailboxListener implements MailboxListener.GroupMailboxListener { public static class ElasticSearchQuotaMailboxListenerGroup extends Group { } @@ -59,11 +59,11 @@ public class ElasticSearchQuotaMailboxListener implements MailboxListener.GroupM } @Override - public void event(Event event) throws JsonProcessingException { + public void event(Event event) throws IOException { handleEvent(event.getUser(), (QuotaUsageUpdatedEvent) event); } - private void handleEvent(User user, QuotaUsageUpdatedEvent event) throws JsonProcessingException { + private void handleEvent(User user, QuotaUsageUpdatedEvent event) throws IOException { indexer.index(user.asString(), quotaRatioToElasticSearchJson.convertToJson(user.asString(), event)); } diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfigurationTest.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfigurationTest.java index a57a10e..2027436 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfigurationTest.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaConfigurationTest.java @@ -23,9 +23,9 @@ import static org.assertj.core.api.Assertions.assertThat; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; -import org.apache.james.backends.es.IndexName; -import org.apache.james.backends.es.ReadAliasName; -import org.apache.james.backends.es.WriteAliasName; +import org.apache.james.backends.es.v6.IndexName; +import org.apache.james.backends.es.v6.ReadAliasName; +import org.apache.james.backends.es.v6.WriteAliasName; import org.junit.Test; public class ElasticSearchQuotaConfigurationTest { diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java index 5e63c46..a4194ca 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java @@ -21,13 +21,10 @@ package org.apache.james.quota.search.elasticsearch; import static org.mockito.Mockito.mock; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -import org.apache.james.backends.es.DockerElasticSearch; -import org.apache.james.backends.es.DockerElasticSearchSingleton; -import org.apache.james.backends.es.ElasticSearchConfiguration; -import org.apache.james.backends.es.ElasticSearchIndexer; +import org.apache.james.backends.es.v6.DockerElasticSearch; +import org.apache.james.backends.es.v6.DockerElasticSearchSingleton; +import org.apache.james.backends.es.v6.ElasticSearchConfiguration; +import org.apache.james.backends.es.v6.ElasticSearchIndexer; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.memory.MemoryDomainList; import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; @@ -36,8 +33,7 @@ import org.apache.james.quota.search.QuotaSearchTestSystem; import org.apache.james.quota.search.elasticsearch.events.ElasticSearchQuotaMailboxListener; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; import org.apache.james.user.memory.MemoryUsersRepository; -import org.apache.james.util.concurrent.NamedThreadFactory; -import org.elasticsearch.client.Client; +import org.elasticsearch.client.RestHighLevelClient; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; @@ -57,10 +53,10 @@ public class ElasticSearchQuotaSearchTestSystemExtension implements ParameterRes @Override public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { try { - Client client = QuotaSearchIndexCreationUtil.prepareDefaultClient( + RestHighLevelClient client = QuotaSearchIndexCreationUtil.prepareDefaultClient( elasticSearch.clientProvider().get(), ElasticSearchConfiguration.builder() - .addHost(elasticSearch.getTcpHost()) + .addHost(elasticSearch.getHttpHost()) .build()); InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources(); @@ -71,11 +67,9 @@ public class ElasticSearchQuotaSearchTestSystemExtension implements ParameterRes MemoryDomainList domainList = new MemoryDomainList(dnsService); usersRepository.setDomainList(domainList); - ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); ElasticSearchQuotaMailboxListener listener = new ElasticSearchQuotaMailboxListener( - new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(threadFactory), - QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, - QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE), + new ElasticSearchIndexer(client, + QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS), new QuotaRatioToElasticSearchJson()); resources.getMailboxManager().getEventBus().register(listener); @@ -92,7 +86,7 @@ public class ElasticSearchQuotaSearchTestSystemExtension implements ParameterRes usersRepository, domainList, resources.getCurrentQuotaManager(), - () -> elasticSearch.awaitForElasticSearch()); + elasticSearch::awaitForElasticSearch); } catch (Exception e) { throw new ParameterResolutionException("Error while resolving parameter", e); } diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcherTest.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcherTest.java index ad26532..2d4b79e 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcherTest.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcherTest.java @@ -23,6 +23,6 @@ import org.apache.james.quota.search.QuotaSearcherContract; import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(ElasticSearchQuotaSearchTestSystemExtension.class) -public class ElasticSearchQuotaSearcherTest implements QuotaSearcherContract { +class ElasticSearchQuotaSearcherTest implements QuotaSearcherContract { } diff --git a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java index d3f7811..bfead33 100644 --- a/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java +++ b/mailbox/plugin/quota-search-elasticsearch-v6/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java @@ -23,15 +23,13 @@ import static org.apache.james.quota.search.QuotaSearchFixture.TestConstants.BOB import static org.apache.james.quota.search.QuotaSearchFixture.TestConstants.NOW; import static org.apache.james.quota.search.QuotaSearchFixture.TestConstants.QUOTAROOT; import static org.assertj.core.api.Assertions.assertThat; -import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; -import static org.mockito.Mockito.mock; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; +import java.io.IOException; -import org.apache.james.backends.es.DockerElasticSearchRule; -import org.apache.james.backends.es.ElasticSearchConfiguration; -import org.apache.james.backends.es.ElasticSearchIndexer; +import org.apache.james.backends.es.v6.DockerElasticSearchRule; +import org.apache.james.backends.es.v6.ElasticSearchConfiguration; +import org.apache.james.backends.es.v6.ElasticSearchIndexer; +import org.apache.james.backends.es.v6.NodeMappingFactory; import org.apache.james.mailbox.events.Event; import org.apache.james.mailbox.events.Group; import org.apache.james.mailbox.quota.QuotaFixture.Counts; @@ -40,9 +38,12 @@ import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants; import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; -import org.apache.james.util.concurrent.NamedThreadFactory; +import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.client.Client; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.builder.SearchSourceBuilder; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -51,27 +52,23 @@ public class ElasticSearchQuotaMailboxListenerTest { private static Event.EventId EVENT_ID = Event.EventId.of("6e0dd59d-660e-4d9b-b22f-0354479f47b4"); private static final int BATCH_SIZE = 1; - private static final Event DUMB_EVENT = mock(Event.class); @Rule public DockerElasticSearchRule elasticSearch = new DockerElasticSearchRule(); private ElasticSearchQuotaMailboxListener quotaMailboxListener; - private Client client; + private RestHighLevelClient client; @Before - public void setUp() { - client = QuotaSearchIndexCreationUtil.prepareDefaultClient( - elasticSearch.clientProvider().get(), - ElasticSearchConfiguration.builder() - .addHost(elasticSearch.getTcpHost()) - .build()); + public void setUp() throws IOException { + client = elasticSearch.clientProvider().get(); + + QuotaSearchIndexCreationUtil.prepareDefaultClient(client, ElasticSearchConfiguration.builder() + .addHost(elasticSearch.getDockerElasticSearch().getHttpHost()) + .build()); - ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); quotaMailboxListener = new ElasticSearchQuotaMailboxListener( new ElasticSearchIndexer(client, - Executors.newSingleThreadExecutor(threadFactory), QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, - QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE, BATCH_SIZE), new QuotaRatioToElasticSearchJson()); } @@ -95,11 +92,12 @@ public class ElasticSearchQuotaMailboxListenerTest { elasticSearch.awaitForElasticSearch(); - SearchResponse searchResponse = client.prepareSearch(QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_READ_ALIAS.getValue()) - .setTypes(QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE.getValue()) - .setQuery(matchAllQuery()) - .execute() - .get(); - assertThat(searchResponse.getHits().totalHits()).isEqualTo(1); + SearchResponse searchResponse = client.search(new SearchRequest(QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_READ_ALIAS.getValue()) + .types(NodeMappingFactory.DEFAULT_MAPPING_NAME) + .source(new SearchSourceBuilder() + .query(QueryBuilders.matchAllQuery())), + RequestOptions.DEFAULT); + + assertThat(searchResponse.getHits().getTotalHits()).isEqualTo(1); } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7100134..933c8f8 100644 --- a/pom.xml +++ b/pom.xml @@ -698,6 +698,17 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>apache-james-backends-es-v6</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> + <artifactId>apache-james-backends-es-v6</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>apache-james-backends-jpa</artifactId> <version>${project.version}</version> </dependency> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
