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");
}
}