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]
