Remove duplicated executor creation code Change-Id: Ie6c7c9aa56360fa083b64aa9224de90d2da4d841
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java new file mode 100644 index 0000000..0a87074 --- /dev/null +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java
@@ -0,0 +1,48 @@ +// Copyright (C) 2017 Ericsson +// +// Licensed 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 com.ericsson.gerrit.plugins.highavailability; + +import com.google.gerrit.extensions.events.LifecycleListener; +import com.google.gerrit.server.git.WorkQueue; +import com.google.inject.Provider; + +import java.util.concurrent.ScheduledThreadPoolExecutor; + +public abstract class ExecutorProvider + implements Provider<ScheduledThreadPoolExecutor>, LifecycleListener { + private WorkQueue.Executor executor; + + protected ExecutorProvider(WorkQueue workQueue, int threadPoolSize, + String threadNamePrefix) { + executor = workQueue.createQueue(threadPoolSize, threadNamePrefix); + } + + @Override + public void start() { + // do nothing + } + + @Override + public void stop() { + executor.shutdown(); + executor.unregisterWorkQueue(); + executor = null; + } + + @Override + public ScheduledThreadPoolExecutor get() { + return executor; + } +}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheExecutorProvider.java index c427d17..98324a9 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheExecutorProvider.java +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheExecutorProvider.java
@@ -14,42 +14,20 @@ package com.ericsson.gerrit.plugins.highavailability.cache; -import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.server.git.WorkQueue; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; import com.ericsson.gerrit.plugins.highavailability.Configuration; - -import java.util.concurrent.ScheduledThreadPoolExecutor; +import com.ericsson.gerrit.plugins.highavailability.ExecutorProvider; @Singleton -class CacheExecutorProvider - implements Provider<ScheduledThreadPoolExecutor>, LifecycleListener { - private WorkQueue.Executor executor; +class CacheExecutorProvider extends ExecutorProvider { @Inject CacheExecutorProvider(WorkQueue workQueue, Configuration config) { - executor = workQueue.createQueue(config.getCacheThreadPoolSize(), + super(workQueue, config.getCacheThreadPoolSize(), "Forward-cache-eviction-event"); } - - @Override - public void start() { - // do nothing - } - - @Override - public void stop() { - executor.shutdown(); - executor.unregisterWorkQueue(); - executor = null; - } - - @Override - public ScheduledThreadPoolExecutor get() { - return executor; - } }
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/event/EventExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/event/EventExecutorProvider.java index 6a6c3c3..95b595d 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/event/EventExecutorProvider.java +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/event/EventExecutorProvider.java
@@ -14,42 +14,19 @@ package com.ericsson.gerrit.plugins.highavailability.event; -import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.server.git.WorkQueue; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; import com.ericsson.gerrit.plugins.highavailability.Configuration; - -import java.util.concurrent.ScheduledThreadPoolExecutor; +import com.ericsson.gerrit.plugins.highavailability.ExecutorProvider; @Singleton -class EventExecutorProvider - implements Provider<ScheduledThreadPoolExecutor>, LifecycleListener { - private WorkQueue.Executor executor; +class EventExecutorProvider extends ExecutorProvider { @Inject EventExecutorProvider(WorkQueue workQueue, Configuration config) { - executor = workQueue.createQueue(config.getEventThreadPoolSize(), - "Forward-stream-event"); - } - - @Override - public void start() { - // do nothing - } - - @Override - public void stop() { - executor.shutdown(); - executor.unregisterWorkQueue(); - executor = null; - } - - @Override - public ScheduledThreadPoolExecutor get() { - return executor; + super(workQueue, config.getEventThreadPoolSize(), "Forward-stream-event"); } }
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexExecutorProvider.java index 73aa3be..f0a2b62 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexExecutorProvider.java +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexExecutorProvider.java
@@ -14,41 +14,19 @@ package com.ericsson.gerrit.plugins.highavailability.index; -import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.server.git.WorkQueue; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; import com.ericsson.gerrit.plugins.highavailability.Configuration; - -import java.util.concurrent.Executor; +import com.ericsson.gerrit.plugins.highavailability.ExecutorProvider; @Singleton -class IndexExecutorProvider implements Provider<Executor>, - LifecycleListener { - private WorkQueue.Executor executor; +class IndexExecutorProvider extends ExecutorProvider { @Inject - IndexExecutorProvider(WorkQueue workQueue, Configuration config) { - executor = workQueue.createQueue(config.getIndexThreadPoolSize(), - "Forward-index-event"); - } - - @Override - public void start() { - //do nothing - } - - @Override - public void stop() { - executor.shutdown(); - executor.unregisterWorkQueue(); - executor = null; - } - - @Override - public Executor get() { - return executor; + IndexExecutorProvider(WorkQueue workQueue, + Configuration config) { + super(workQueue, config.getIndexThreadPoolSize(), "Forward-index-event"); } }