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