package org.jboss.as.clustering.infinispan; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import org.infinispan.commons.executors.ThreadPoolExecutorFactory; import org.infinispan.server.commons.concurrent.ManagedExecutorService; import org.infinispan.server.commons.concurrent.ManagedScheduledExecutorService; public final class ThreadPoolExecutorFactories { private ThreadPoolExecutorFactories() { } public static ThreadPoolExecutorFactory mkManagedExecutorFactory(Executor executor) { return new ManagedThreadPoolExecutorFactory(executor); } public static ThreadPoolExecutorFactory mkManagedScheduledExecutorFactory(ScheduledExecutorService executor) { return new ManagedThreadPoolScheduledExecutorFactory(executor); } private static final class ManagedThreadPoolExecutorFactory implements ThreadPoolExecutorFactory { private final Executor executor; public ManagedThreadPoolExecutorFactory(Executor executor) { this.executor = executor; } @Override public void validate() { } @Override public ManagedExecutorService createExecutor(ThreadFactory factory) { return new ManagedExecutorService(this.executor); } } private static final class ManagedThreadPoolScheduledExecutorFactory implements ThreadPoolExecutorFactory { private final ScheduledExecutorService executor; public ManagedThreadPoolScheduledExecutorFactory(ScheduledExecutorService executor) { this.executor = executor; } @Override public void validate() { } @Override public ManagedExecutorService createExecutor(ThreadFactory factory) { return new ManagedScheduledExecutorService(this.executor); } } }