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 765d20aff6fe938a704c799ceabdc303a491f469
Author: LanKhuat <[email protected]>
AuthorDate: Mon Mar 23 10:05:05 2020 +0700

    JAMES-3117 Guice wiring for PeriodicalHealthChecks
---
 .../org/apache/james/CassandraJamesServerMain.java |  2 +
 .../modules/PeriodicalHealthChecksModule.java      | 69 ++++++++++++++++++++++
 .../org/apache/james/MemoryJamesServerMain.java    |  2 +
 3 files changed, 73 insertions(+)

diff --git 
a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
 
b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
index 9bc756c..31b1a38 100644
--- 
a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
+++ 
b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
@@ -25,6 +25,7 @@ import 
org.apache.james.eventsourcing.eventstore.cassandra.EventNestedTypes;
 import org.apache.james.json.DTOModule;
 import org.apache.james.modules.BlobExportMechanismModule;
 import org.apache.james.modules.MailboxModule;
+import org.apache.james.modules.PeriodicalHealthChecksModule;
 import org.apache.james.modules.activemq.ActiveMQQueueModule;
 import org.apache.james.modules.data.CassandraDLPConfigurationStoreModule;
 import org.apache.james.modules.data.CassandraDomainListModule;
@@ -131,6 +132,7 @@ public class CassandraJamesServerMain implements 
JamesServerMain {
         new CassandraSessionModule(),
         new CassandraSieveRepositoryModule(),
         new CassandraUsersRepositoryModule(),
+        new PeriodicalHealthChecksModule(),
         BLOB_MODULE,
         CASSANDRA_EVENT_STORE_JSON_SERIALIZATION_DEFAULT_MODULE);
 
diff --git 
a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/PeriodicalHealthChecksModule.java
 
b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/PeriodicalHealthChecksModule.java
new file mode 100644
index 0000000..c338d00
--- /dev/null
+++ 
b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/PeriodicalHealthChecksModule.java
@@ -0,0 +1,69 @@
+/****************************************************************
+ * 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;
+
+import java.io.FileNotFoundException;
+
+import org.apache.commons.configuration2.Configuration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.james.PeriodicalHealthChecks;
+import org.apache.james.PeriodicalHealthChecksConfiguration;
+import org.apache.james.core.healthcheck.HealthCheck;
+import org.apache.james.utils.InitializationOperation;
+import org.apache.james.utils.InitilizationOperationBuilder;
+import org.apache.james.utils.PropertiesProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import com.google.inject.multibindings.ProvidesIntoSet;
+
+public class PeriodicalHealthChecksModule extends AbstractModule {
+
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(PeriodicalHealthChecksModule.class);
+    private static final String FILENAME = "healthcheck";
+
+    @Override
+    protected void configure() {
+        Multibinder.newSetBinder(binder(), HealthCheck.class);
+    }
+
+    @Singleton
+    @Provides
+    PeriodicalHealthChecksConfiguration 
periodicalHealthChecksConfiguration(PropertiesProvider propertiesProvider) 
throws ConfigurationException {
+        try {
+            Configuration configuration = 
propertiesProvider.getConfigurations(FILENAME);
+            return PeriodicalHealthChecksConfiguration.from(configuration);
+        } catch (FileNotFoundException e) {
+            LOGGER.warn("Could not find {} configuration file, using default 
configuration", FILENAME);
+            return PeriodicalHealthChecksConfiguration.DEFAULT_CONFIGURATION;
+        }
+    }
+
+    @ProvidesIntoSet
+    InitializationOperation 
configurePeriodicalHealthChecks(PeriodicalHealthChecks periodicalHealthChecks) {
+        return InitilizationOperationBuilder
+            .forClass(PeriodicalHealthChecks.class)
+            .init(periodicalHealthChecks::start);
+    }
+}
diff --git 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
index be8595a..bf72a33 100644
--- 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
+++ 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
@@ -26,6 +26,7 @@ import org.apache.james.jwt.JwtConfiguration;
 import org.apache.james.modules.BlobExportMechanismModule;
 import org.apache.james.modules.BlobMemoryModule;
 import org.apache.james.modules.MailboxModule;
+import org.apache.james.modules.PeriodicalHealthChecksModule;
 import org.apache.james.modules.data.MemoryDataJmapModule;
 import org.apache.james.modules.data.MemoryDataModule;
 import org.apache.james.modules.eventstore.MemoryEventStoreModule;
@@ -110,6 +111,7 @@ public class MemoryJamesServerMain implements 
JamesServerMain {
         new MemoryEventStoreModule(),
         new MemoryMailboxModule(),
         new MemoryMailQueueModule(),
+        new PeriodicalHealthChecksModule(),
         new TaskManagerModule());
 
     public static final Module SMTP_ONLY_MODULE = Modules.combine(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to