package net.floodlightcontroller.core.internal;

import java.util.Set;

import com.thinkaurelius.titan.core.TitanGraph;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.TransactionalGraph.Conclusion;

/**
 * Seam that allows me to set up a testable instance of SwitchStorageImpl that 
 * writes to a file database rather than a Cassandra cluster. 
 * It seems the init() API on SwitchStorageImpl might change so I won't rely
 * on it yet.
 * 
 * @author jono
 *
 */

public class TestableSwitchStorageImpl extends SwitchStorageImpl {
	
	public TestableSwitchStorageImpl(){
	}
	
	@Override
	public void init(String conf){
        
		super.init(conf);
		
	}
}
