package com.eswaraj.base.aspect; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.slf4j.LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.support.Neo4jTemplate; import org.springframework.stereotype.Component; /** * This class keeps track of all DB objects created in a test and then delete after the test * @author ravi * */ @Component public class TestObjectContextManager { private Logger logger = LoggerFactory.getLogger(this.getClass()); private Set<Object> allDbSavedObjects = new HashSet<Object>(); @Autowired Neo4jTemplate neo4jTemplate; private boolean dontDeleteForThisTest; public void addSavedObject(Object object){ logger.trace("Adding Object to test Context "+object); allDbSavedObjects.add(object); } public void clearAllObjectsCreatdDuringTest(){ for(Object oneObject:allDbSavedObjects){ try{ logger.trace("Deleting : "+oneObject); if(!dontDeleteForThisTest){ neo4jTemplate.delete(oneObject); } }catch(Exception ex){ logger.error("Exception occured while deleting data : "+oneObject, ex); Assert.fail("Unable to delete object "+ oneObject); } } allDbSavedObjects.clear(); dontDeleteForThisTest = false; } public boolean isDontDeleteForThisTest() { return dontDeleteForThisTest; } public void setDontDeleteForThisTest(boolean dontDeleteForThisTest) { this.dontDeleteForThisTest = dontDeleteForThisTest; } }