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/30 02:24:18 UTC
[07/14] james-project git commit: JAMES-2404 Guice injections for
QuotaSearcher
JAMES-2404 Guice injections for QuotaSearcher
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6a327468
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6a327468
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6a327468
Branch: refs/heads/master
Commit: 6a327468174959da22bacf1a7379aeab8948aec0
Parents: 350bc6c
Author: benwa <bt...@linagora.com>
Authored: Mon May 28 12:05:00 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue May 29 15:32:53 2018 +0200
----------------------------------------------------------------------
pom.xml | 5 ++
server/container/guice/cassandra-guice/pom.xml | 4 ++
.../mailbox/ElasticSearchMailboxModule.java | 5 ++
.../ElasticSearchQuotaSearcherModule.java | 67 ++++++++++++++++++++
server/container/guice/jpa-guice/pom.xml | 4 ++
.../james/modules/mailbox/JPAMailboxModule.java | 1 +
.../modules/mailbox/JPAQuotaSearchModule.java | 34 ++++++++++
server/container/guice/memory-guice/pom.xml | 4 ++
.../modules/mailbox/MemoryMailboxModule.java | 1 +
.../mailbox/MemoryQuotaSearchModule.java | 34 ++++++++++
10 files changed, 159 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 805fb3d..6709cf9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -825,6 +825,11 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>apache-james-mailbox-quota-search-elasticsearch</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>apache-james-mailbox-scanning-search</artifactId>
<version>${project.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/cassandra-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index 54f4958..9ec854d 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -78,6 +78,10 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>apache-james-mailbox-quota-search-elasticsearch</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>apache-james-mailbox-tika</artifactId>
<type>test-jar</type>
<scope>test</scope>
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index 27baee3..48e254b 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
+import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil;
import org.apache.james.utils.PropertiesProvider;
import org.apache.james.utils.RetryExecutorUtil;
import org.elasticsearch.client.Client;
@@ -62,6 +63,8 @@ public class ElasticSearchMailboxModule extends AbstractModule {
@Override
protected void configure() {
+ install(new ElasticSearchQuotaSearcherModule());
+
bind(ElasticSearchListeningMessageSearchIndex.class).in(Scopes.SINGLETON);
bind(MessageSearchIndex.class).to(ElasticSearchListeningMessageSearchIndex.class);
bind(ListeningMessageSearchIndex.class).to(ElasticSearchListeningMessageSearchIndex.class);
@@ -129,6 +132,8 @@ public class ElasticSearchMailboxModule extends AbstractModule {
configuration.getWriteAliasMailboxName(),
configuration.getIndexMailboxName());
+ QuotaSearchIndexCreationUtil.prepareDefaultClient(client);
+
return client;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
new file mode 100644
index 0000000..0a10aac
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
@@ -0,0 +1,67 @@
+/****************************************************************
+ * 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.modules.mailbox;
+
+import java.util.concurrent.ExecutorService;
+
+import javax.inject.Named;
+
+import org.apache.james.backends.es.ElasticSearchIndexer;
+import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.quota.search.QuotaSearcher;
+import org.apache.james.quota.search.elasticsearch.ElasticSearchQuotaSearcher;
+import org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants;
+import org.apache.james.quota.search.elasticsearch.events.ElasticSearchQuotaMailboxListener;
+import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson;
+import org.elasticsearch.client.Client;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+
+public class ElasticSearchQuotaSearcherModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ Multibinder.newSetBinder(binder(), MailboxListener.class)
+ .addBinding()
+ .to(ElasticSearchQuotaMailboxListener.class);
+ }
+
+ @Provides
+ @Singleton
+ public QuotaSearcher provideSearcher(Client client, ElasticSearchConfiguration configuration) {
+ return new ElasticSearchQuotaSearcher(client,
+ QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_READ_ALIAS);
+ }
+
+ @Provides
+ @Singleton
+ public ElasticSearchQuotaMailboxListener provideListener(Client client,
+ @Named("AsyncExecutor") ExecutorService executor,
+ ElasticSearchConfiguration configuration) {
+ return new ElasticSearchQuotaMailboxListener(
+ new ElasticSearchIndexer(client,
+ executor,
+ QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS,
+ QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE),
+ new QuotaRatioToElasticSearchJson());
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/jpa-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/pom.xml b/server/container/guice/jpa-guice/pom.xml
index 6e1f5f5..c5ed697 100644
--- a/server/container/guice/jpa-guice/pom.xml
+++ b/server/container/guice/jpa-guice/pom.xml
@@ -51,6 +51,10 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>apache-james-mailbox-quota-search-scanning</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>apache-james-mailbox-lucene</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
index eb3c310..fb8caba 100644
--- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
@@ -78,6 +78,7 @@ public class JPAMailboxModule extends AbstractModule {
@Override
protected void configure() {
install(new JpaQuotaModule());
+ install(new JPAQuotaSearchModule());
bind(JPAMailboxSessionMapperFactory.class).in(Scopes.SINGLETON);
bind(OpenJPAMailboxManager.class).in(Scopes.SINGLETON);
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAQuotaSearchModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAQuotaSearchModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAQuotaSearchModule.java
new file mode 100644
index 0000000..dbb0e3f
--- /dev/null
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAQuotaSearchModule.java
@@ -0,0 +1,34 @@
+/****************************************************************
+ * 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.modules.mailbox;
+
+import org.apache.james.quota.search.QuotaSearcher;
+import org.apache.james.quota.search.scanning.ScanningQuotaSearcher;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+
+public class JPAQuotaSearchModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(ScanningQuotaSearcher.class).in(Scopes.SINGLETON);
+ bind(QuotaSearcher.class).to(ScanningQuotaSearcher.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/memory-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/pom.xml b/server/container/guice/memory-guice/pom.xml
index bb2d483..f671506 100644
--- a/server/container/guice/memory-guice/pom.xml
+++ b/server/container/guice/memory-guice/pom.xml
@@ -50,6 +50,10 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>apache-james-mailbox-quota-search-scanning</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>apache-mailet-base</artifactId>
<type>test-jar</type>
<scope>test</scope>
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
index 34041f5..85c4c5f 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
@@ -79,6 +79,7 @@ public class MemoryMailboxModule extends AbstractModule {
protected void configure() {
install(new DefaultEventModule());
install(new MemoryQuotaModule());
+ install(new MemoryQuotaSearchModule());
bind(MessageMapperFactory.class).to(InMemoryMailboxSessionMapperFactory.class);
bind(MailboxMapperFactory.class).to(InMemoryMailboxSessionMapperFactory.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/6a327468/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaSearchModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaSearchModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaSearchModule.java
new file mode 100644
index 0000000..e3b1bd2
--- /dev/null
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaSearchModule.java
@@ -0,0 +1,34 @@
+/****************************************************************
+ * 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.modules.mailbox;
+
+import org.apache.james.quota.search.QuotaSearcher;
+import org.apache.james.quota.search.scanning.ScanningQuotaSearcher;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+
+public class MemoryQuotaSearchModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(ScanningQuotaSearcher.class).in(Scopes.SINGLETON);
+ bind(QuotaSearcher.class).to(ScanningQuotaSearcher.class);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org