// Path: src/main/java/com/indeed/proctor/webapp/db/StoreFactory.java
// public interface StoreFactory {
//     public ProctorStore createStore(final String relativePath) throws ConfigurationException;
// }


import com.indeed.proctor.common.model.TestDefinition;
import com.indeed.proctor.common.model.TestMatrixVersion;
import com.indeed.proctor.store.ProctorStore;
import com.indeed.proctor.store.Revision;
import com.indeed.proctor.store.StoreException;
import com.indeed.proctor.webapp.db.StoreFactory;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
package com.indeed.proctor.store.async;



public class AsyncProctorStore implements ProctorStore {
    private static final Logger LOGGER = Logger.getLogger(AsyncProctorStore.class);
    private volatile ProctorStore proctorStore = null;
    private static final ExecutorService executorService = Executors.newCachedThreadPool();

// Path: src/main/java/com/indeed/proctor/webapp/db/StoreFactory.java
// public interface StoreFactory {
//     public ProctorStore createStore(final String relativePath) throws ConfigurationException;
// }


// Path: src/main/java/com/indeed/proctor/store/async/AsyncProctorStore.java
import com.indeed.proctor.common.model.TestDefinition;
import com.indeed.proctor.common.model.TestMatrixVersion;
import com.indeed.proctor.store.ProctorStore;
import com.indeed.proctor.store.Revision;
import com.indeed.proctor.store.StoreException;
import com.indeed.proctor.webapp.db.StoreFactory;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

package com.indeed.proctor.store.async;



public class AsyncProctorStore implements ProctorStore {
    private static final Logger LOGGER = Logger.getLogger(AsyncProctorStore.class);
    private volatile ProctorStore proctorStore = null;
    private static final ExecutorService executorService = Executors.newCachedThreadPool();

    public AsyncProctorStore(final StoreFactory factory, final String relativePath) {