You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/05/28 01:06:17 UTC
[07/13] james-project git commit: JAMES-2403 Type safety for read and
write ElasticSearch alias
JAMES-2403 Type safety for read and write ElasticSearch alias
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/35b7ec7e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/35b7ec7e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/35b7ec7e
Branch: refs/heads/master
Commit: 35b7ec7ea32455c708e7ad375dfe81dc4c345c7c
Parents: 4f49aea
Author: benwa <bt...@linagora.com>
Authored: Thu May 24 11:50:31 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon May 28 08:05:35 2018 +0700
----------------------------------------------------------------------
.../james/backends/es/ElasticSearchIndexer.java | 2 +-
.../apache/james/backends/es/ReadAliasName.java | 26 ++++++++++++++++
.../james/backends/es/WriteAliasName.java | 26 ++++++++++++++++
.../MailboxElasticSearchConstants.java | 7 +++--
.../elasticsearch/MailboxIndexCreationUtil.java | 7 +++--
.../search/ElasticSearchSearcher.java | 3 +-
.../ElasticSearchQuotaSearcher.java | 3 +-
.../QuotaRatioElasticSearchConstants.java | 7 +++--
.../mailbox/ElasticSearchConfiguration.java | 31 ++++++++++----------
9 files changed, 85 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
index b7fb311..039b109 100644
--- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
@@ -47,7 +47,7 @@ public class ElasticSearchIndexer {
private final TypeName typeName;
public ElasticSearchIndexer(Client client, ExecutorService executor,
- AliasName aliasName,
+ WriteAliasName aliasName,
TypeName typeName) {
this(client, executor, aliasName, typeName, DEFAULT_BATCH_SIZE);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ReadAliasName.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ReadAliasName.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ReadAliasName.java
new file mode 100644
index 0000000..22c47d6
--- /dev/null
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ReadAliasName.java
@@ -0,0 +1,26 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 *
+ * *
+ * http://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.apache.james.backends.es;
+
+public class ReadAliasName extends AliasName {
+ public ReadAliasName(String value) {
+ super(value);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/WriteAliasName.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/WriteAliasName.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/WriteAliasName.java
new file mode 100644
index 0000000..4c829c9
--- /dev/null
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/WriteAliasName.java
@@ -0,0 +1,26 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 *
+ * *
+ * http://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.apache.james.backends.es;
+
+public class WriteAliasName extends AliasName {
+ public WriteAliasName(String value) {
+ super(value);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxElasticSearchConstants.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxElasticSearchConstants.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxElasticSearchConstants.java
index c347738..79797f4 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxElasticSearchConstants.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxElasticSearchConstants.java
@@ -19,9 +19,10 @@
package org.apache.james.mailbox.elasticsearch;
-import org.apache.james.backends.es.AliasName;
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;
public interface MailboxElasticSearchConstants {
@@ -29,8 +30,8 @@ public interface MailboxElasticSearchConstants {
String MAILBOX = "mailbox";
}
- AliasName DEFAULT_MAILBOX_WRITE_ALIAS = new AliasName("mailboxWriteAlias");
- AliasName DEFAULT_MAILBOX_READ_ALIAS = new AliasName("mailboxReadAlias");
+ WriteAliasName DEFAULT_MAILBOX_WRITE_ALIAS = new WriteAliasName("mailboxWriteAlias");
+ ReadAliasName DEFAULT_MAILBOX_READ_ALIAS = new ReadAliasName("mailboxReadAlias");
IndexName DEFAULT_MAILBOX_INDEX = new IndexName("mailbox_v1");
TypeName MESSAGE_TYPE = new TypeName("message");
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxIndexCreationUtil.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxIndexCreationUtil.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxIndexCreationUtil.java
index 1b92cec..89c7227 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxIndexCreationUtil.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxIndexCreationUtil.java
@@ -19,17 +19,18 @@
package org.apache.james.mailbox.elasticsearch;
-import org.apache.james.backends.es.AliasName;
import org.apache.james.backends.es.IndexCreationFactory;
import org.apache.james.backends.es.IndexName;
import org.apache.james.backends.es.NodeMappingFactory;
+import org.apache.james.backends.es.ReadAliasName;
+import org.apache.james.backends.es.WriteAliasName;
import org.elasticsearch.client.Client;
public class MailboxIndexCreationUtil {
public static Client prepareClient(Client client,
- AliasName readAlias,
- AliasName writeAlias,
+ ReadAliasName readAlias,
+ WriteAliasName writeAlias,
IndexName indexName) {
return NodeMappingFactory.applyMapping(
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
index 68b6a32..3b36de0 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
@@ -24,6 +24,7 @@ import java.util.Optional;
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.TypeName;
import org.apache.james.backends.es.search.ScrollIterable;
import org.apache.james.mailbox.MessageUid;
@@ -62,7 +63,7 @@ public class ElasticSearchSearcher {
public ElasticSearchSearcher(Client client, QueryConverter queryConverter, int size,
MailboxId.Factory mailboxIdFactory, MessageId.Factory messageIdFactory,
- AliasName aliasName, TypeName typeName) {
+ ReadAliasName aliasName, TypeName typeName) {
this.client = client;
this.queryConverter = queryConverter;
this.size = size;
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java b/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java
index 7e0857b..21d55a8 100644
--- a/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java
+++ b/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearcher.java
@@ -27,6 +27,7 @@ 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.core.User;
import org.apache.james.quota.search.QuotaQuery;
@@ -46,7 +47,7 @@ public class ElasticSearchQuotaSearcher implements QuotaSearcher {
private final AliasName readAlias;
private final QuotaQueryConverter quotaQueryConverter;
- public ElasticSearchQuotaSearcher(Client client, AliasName readAlias) {
+ public ElasticSearchQuotaSearcher(Client client, ReadAliasName readAlias) {
this.client = client;
this.readAlias = readAlias;
this.quotaQueryConverter = new QuotaQueryConverter();
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java b/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java
index d2db3a0..6ce049f 100644
--- a/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java
+++ b/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/QuotaRatioElasticSearchConstants.java
@@ -19,9 +19,10 @@
package org.apache.james.quota.search.elasticsearch;
-import org.apache.james.backends.es.AliasName;
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;
public interface QuotaRatioElasticSearchConstants {
@@ -29,8 +30,8 @@ public interface QuotaRatioElasticSearchConstants {
String QUOTA_RATIO = "quotaRatio";
}
- AliasName DEFAULT_QUOTA_RATIO_WRITE_ALIAS = new AliasName("quotaRatioWriteAlias");
- AliasName DEFAULT_QUOTA_RATIO_READ_ALIAS = new AliasName("quotaRatioReadAlias");
+ WriteAliasName DEFAULT_QUOTA_RATIO_WRITE_ALIAS = new WriteAliasName("quotaRatioWriteAlias");
+ ReadAliasName DEFAULT_QUOTA_RATIO_READ_ALIAS = new ReadAliasName("quotaRatioReadAlias");
IndexName DEFAULT_QUOTA_RATIO_INDEX = new IndexName("quota_ratio_v1");
TypeName QUOTA_RATIO_TYPE = new TypeName("quotaRatio");
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/35b7ec7e/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchConfiguration.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchConfiguration.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchConfiguration.java
index f4ed4c9..c19bd96 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchConfiguration.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchConfiguration.java
@@ -26,8 +26,9 @@ import java.util.Optional;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.backends.es.AliasName;
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.mailbox.elasticsearch.IndexAttachments;
import org.apache.james.mailbox.elasticsearch.MailboxElasticSearchConstants;
import org.apache.james.util.Host;
@@ -80,8 +81,8 @@ public class ElasticSearchConfiguration {
int minDelay = configuration.getInt(ELASTICSEARCH_RETRY_CONNECTION_MIN_DELAY, DEFAULT_CONNECTION_MIN_DELAY);
IndexAttachments indexAttachments = provideIndexAttachments(configuration);
ImmutableList<Host> hosts = getHosts(configuration);
- AliasName readAlias = computeMailboxReadAlias(configuration);
- AliasName writeAlias = computeMailboxWriteAlias(configuration);
+ ReadAliasName readAlias = computeMailboxReadAlias(configuration);
+ WriteAliasName writeAlias = computeMailboxWriteAlias(configuration);
IndexName indexName = computeMailboxIndexName(configuration);
return new ElasticSearchConfiguration(
@@ -105,21 +106,21 @@ public class ElasticSearchConfiguration {
.orElse(MailboxElasticSearchConstants.DEFAULT_MAILBOX_INDEX);
}
- public static AliasName computeMailboxWriteAlias(PropertiesConfiguration configuration) {
+ public static WriteAliasName computeMailboxWriteAlias(PropertiesConfiguration configuration) {
return OptionalUtils.or(
Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_WRITE_MAILBOX_NAME))
- .map(AliasName::new),
+ .map(WriteAliasName::new),
Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_WRITE_NAME))
- .map(AliasName::new))
+ .map(WriteAliasName::new))
.orElse(MailboxElasticSearchConstants.DEFAULT_MAILBOX_WRITE_ALIAS);
}
- public static AliasName computeMailboxReadAlias(PropertiesConfiguration configuration) {
+ public static ReadAliasName computeMailboxReadAlias(PropertiesConfiguration configuration) {
return OptionalUtils.or(
Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_READ_MAILBOX_NAME))
- .map(AliasName::new),
+ .map(ReadAliasName::new),
Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_READ_NAME))
- .map(AliasName::new))
+ .map(ReadAliasName::new))
.orElse(MailboxElasticSearchConstants.DEFAULT_MAILBOX_READ_ALIAS);
}
@@ -167,16 +168,16 @@ public class ElasticSearchConfiguration {
private final ImmutableList<Host> hosts;
private final IndexName indexMailboxName;
- private final AliasName readAliasMailboxName;
- private final AliasName writeAliasMailboxName;
+ private final ReadAliasName readAliasMailboxName;
+ private final WriteAliasName writeAliasMailboxName;
private final int nbShards;
private final int nbReplica;
private final int minDelay;
private final int maxRetries;
private final IndexAttachments indexAttachment;
- public ElasticSearchConfiguration(ImmutableList<Host> hosts, IndexName indexMailboxName, AliasName readAliasMailboxName,
- AliasName writeAliasMailboxName, int nbShards, int nbReplica, int minDelay,
+ public ElasticSearchConfiguration(ImmutableList<Host> hosts, IndexName indexMailboxName, ReadAliasName readAliasMailboxName,
+ WriteAliasName writeAliasMailboxName, int nbShards, int nbReplica, int minDelay,
int maxRetries, IndexAttachments indexAttachment) {
this.hosts = hosts;
this.indexMailboxName = indexMailboxName;
@@ -197,11 +198,11 @@ public class ElasticSearchConfiguration {
return indexMailboxName;
}
- public AliasName getReadAliasMailboxName() {
+ public ReadAliasName getReadAliasMailboxName() {
return readAliasMailboxName;
}
- public AliasName getWriteAliasMailboxName() {
+ public WriteAliasName getWriteAliasMailboxName() {
return writeAliasMailboxName;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org