// Path: examples/multi-db/job-default-base/src/main/java/com/palominolabs/benchpress/example/multidb/task/ComponentFactoryBase.java
// public abstract class ComponentFactoryBase implements ComponentFactory {
// 
//     private final KeyGeneratorFactoryFactoryRegistry keyGeneratorFactoryFactoryRegistry;
//     private final ValueGeneratorFactoryFactoryRegistry valueGeneratorFactoryFactoryRegistry;
// 
//     protected ComponentFactoryBase(KeyGeneratorFactoryFactoryRegistry keyGeneratorFactoryFactoryRegistry,
//         ValueGeneratorFactoryFactoryRegistry valueGeneratorFactoryFactoryRegistry) {
//         this.keyGeneratorFactoryFactoryRegistry = keyGeneratorFactoryFactoryRegistry;
//         this.valueGeneratorFactoryFactoryRegistry = valueGeneratorFactoryFactoryRegistry;
//     }
// 
//     protected KeyGeneratorFactory getKeyGeneratorFactory(TaskConfigBase config) {
//         return keyGeneratorFactoryFactoryRegistry.get(config.getKeyGen().keyGenType)
//             .getKeyGeneratorFactory(config.getKeyGen().getConfig());
//     }
// 
//     protected ValueGeneratorFactory getValueGeneratorFactory(TaskConfigBase config) {
//         return valueGeneratorFactoryFactoryRegistry.get(config.getValueGen().getValueGenType())
//             .getFactory(config.getValueGen().getConfig());
//     }
// }
// 
// Path: examples/multi-db/key-gen/src/main/java/com/palominolabs/benchpress/example/multidb/key/KeyGeneratorFactoryFactoryRegistry.java
// public final class KeyGeneratorFactoryFactoryRegistry extends IdRegistry<KeyGeneratorFactoryFactory> {
// 
//     @Inject
//     KeyGeneratorFactoryFactoryRegistry(Set<KeyGeneratorFactoryFactory> instances) {
//         super(instances);
//     }
// }
// 
// Path: job/src/main/java/com/palominolabs/benchpress/job/task/ComponentFactory.java
// public interface ComponentFactory {
//     /**
//      * Read config data out of the config node using the supplied ObjectReader and create a TaskFactory.
//      *
//      * @return a configured task factory
//      */
//     @Nonnull
//     TaskFactory getTaskFactory();
// }
// 
// Path: job/src/main/java/com/palominolabs/benchpress/job/task/TaskFactory.java
// @NotThreadSafe
// public interface TaskFactory {
// 
//     /**
//      * @param jobId                      job id
//      * @param sliceId                    the slice of the overall job that these tasks are part of
//      * @param workerId                   the worker that these tasks are running in
//      * @param progressClient             client the workers can use to hand any notable data back to the controller
//      * @return runnables
//      * @throws IOException if task creation fails
//      */
//     @Nonnull
//     Collection<Runnable> getRunnables(@Nonnull UUID jobId, int sliceId, @Nonnull UUID workerId,
//             @Nonnull ScopedProgressClient progressClient) throws
//             IOException;
// 
//     // TODO actually call this somewhere
//     void shutdown();
// }
// 
// Path: examples/multi-db/value-gen/src/main/java/com/palominolabs/benchpress/example/multidb/value/ValueGeneratorFactoryFactoryRegistry.java
// public final class ValueGeneratorFactoryFactoryRegistry extends IdRegistry<ValueGeneratorFactoryFactory> {
// 
//     @Inject
//     ValueGeneratorFactoryFactoryRegistry(Set<ValueGeneratorFactoryFactory> instances) {
//         super(instances);
//     }
// }


import com.palominolabs.benchpress.example.multidb.task.ComponentFactoryBase;
import com.palominolabs.benchpress.example.multidb.key.KeyGeneratorFactoryFactoryRegistry;
import com.palominolabs.benchpress.job.task.ComponentFactory;
import com.palominolabs.benchpress.job.task.TaskFactory;
import com.palominolabs.benchpress.example.multidb.value.ValueGeneratorFactoryFactoryRegistry;
import javax.annotation.Nonnull;
package com.palominolabs.benchpress.example.multidb.hbaseasync;



final class HbaseAsyncComponentFactory extends ComponentFactoryBase implements ComponentFactory {

    private final HbaseAsyncConfig config;

    HbaseAsyncComponentFactory(KeyGeneratorFactoryFactoryRegistry keyGeneratorFactoryFactoryRegistry,
        ValueGeneratorFactoryFactoryRegistry valueGeneratorFactoryFactoryRegistry, HbaseAsyncConfig config) {
        super(keyGeneratorFactoryFactoryRegistry, valueGeneratorFactoryFactoryRegistry);
// Path: examples/multi-db/job-default-base/src/main/java/com/palominolabs/benchpress/example/multidb/task/ComponentFactoryBase.java
// public abstract class ComponentFactoryBase implements ComponentFactory {
// 
//     private final KeyGeneratorFactoryFactoryRegistry keyGeneratorFactoryFactoryRegistry;
//     private final ValueGeneratorFactoryFactoryRegistry valueGeneratorFactoryFactoryRegistry;
// 
//     protected ComponentFactoryBase(KeyGeneratorFactoryFactoryRegistry keyGeneratorFactoryFactoryRegistry,
//         ValueGeneratorFactoryFactoryRegistry valueGeneratorFactoryFactoryRegistry) {
//         this.keyGeneratorFactoryFactoryRegistry = keyGeneratorFactoryFactoryRegistry;
//         this.valueGeneratorFactoryFactoryRegistry = valueGeneratorFactoryFactoryRegistry;
//     }
// 
//     protected KeyGeneratorFactory getKeyGeneratorFactory(TaskConfigBase config) {
//         return keyGeneratorFactoryFactoryRegistry.get(config.getKeyGen().keyGenType)
//             .getKeyGeneratorFactory(config.getKeyGen().getConfig());
//     }
// 
//     protected ValueGeneratorFactory getValueGeneratorFactory(TaskConfigBase config) {
//         return valueGeneratorFactoryFactoryRegistry.get(config.getValueGen().getValueGenType())
//             .getFactory(config.getValueGen().getConfig());
//     }
// }
// 
// Path: examples/multi-db/key-gen/src/main/java/com/palominolabs/benchpress/example/multidb/key/KeyGeneratorFactoryFactoryRegistry.java
// public final class KeyGeneratorFactoryFactoryRegistry extends IdRegistry<KeyGeneratorFactoryFactory> {
// 
//     @Inject
//     KeyGeneratorFactoryFactoryRegistry(Set<KeyGeneratorFactoryFactory> instances) {
//         super(instances);
//     }
// }
// 
// Path: job/src/main/java/com/palominolabs/benchpress/job/task/ComponentFactory.java
// public interface ComponentFactory {
//     /**
//      * Read config data out of the config node using the supplied ObjectReader and create a TaskFactory.
//      *
//      * @return a configured task factory
//      */
//     @Nonnull
//     TaskFactory getTaskFactory();
// }
// 
// Path: job/src/main/java/com/palominolabs/benchpress/job/task/TaskFactory.java
// @NotThreadSafe
// public interface TaskFactory {
// 
//     /**
//      * @param jobId                      job id
//      * @param sliceId                    the slice of the overall job that these tasks are part of
//      * @param workerId                   the worker that these tasks are running in
//      * @param progressClient             client the workers can use to hand any notable data back to the controller
//      * @return runnables
//      * @throws IOException if task creation fails
//      */
//     @Nonnull
//     Collection<Runnable> getRunnables(@Nonnull UUID jobId, int sliceId, @Nonnull UUID workerId,
//             @Nonnull ScopedProgressClient progressClient) throws
//             IOException;
// 
//     // TODO actually call this somewhere
//     void shutdown();
// }
// 
// Path: examples/multi-db/value-gen/src/main/java/com/palominolabs/benchpress/example/multidb/value/ValueGeneratorFactoryFactoryRegistry.java
// public final class ValueGeneratorFactoryFactoryRegistry extends IdRegistry<ValueGeneratorFactoryFactory> {
// 
//     @Inject
//     ValueGeneratorFactoryFactoryRegistry(Set<ValueGeneratorFactoryFactory> instances) {
//         super(instances);
//     }
// }


// Path: examples/multi-db/hbase-async/src/main/java/com/palominolabs/benchpress/example/multidb/hbaseasync/HbaseAsyncComponentFactory.java
import com.palominolabs.benchpress.example.multidb.task.ComponentFactoryBase;
import com.palominolabs.benchpress.example.multidb.key.KeyGeneratorFactoryFactoryRegistry;
import com.palominolabs.benchpress.job.task.ComponentFactory;
import com.palominolabs.benchpress.job.task.TaskFactory;
import com.palominolabs.benchpress.example.multidb.value.ValueGeneratorFactoryFactoryRegistry;
import javax.annotation.Nonnull;

package com.palominolabs.benchpress.example.multidb.hbaseasync;



final class HbaseAsyncComponentFactory extends ComponentFactoryBase implements ComponentFactory {

    private final HbaseAsyncConfig config;

    HbaseAsyncComponentFactory(KeyGeneratorFactoryFactoryRegistry keyGeneratorFactoryFactoryRegistry,
        ValueGeneratorFactoryFactoryRegistry valueGeneratorFactoryFactoryRegistry, HbaseAsyncConfig config) {
        super(keyGeneratorFactoryFactoryRegistry, valueGeneratorFactoryFactoryRegistry);
        this.config = config;