package org.jboss.tools.seam.core.test; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.jboss.tools.seam.core.SeamCoreBuilder; import org.jboss.tools.seam.core.SeamCorePlugin; import org.jboss.tools.seam.internal.core.SeamProject; import org.jboss.tools.test.util.JobUtils; import org.jboss.tools.test.util.TestProjectProvider; import junit.framework.TestCase; public class SeamModelStorageTest extends TestCase { IProject project = null; TestProjectProvider provider = null; boolean makeCopy = true; public SeamModelStorageTest() { super("Seam Model Storage Test"); } @Override public void setUp() throws Exception { project = ResourcesPlugin.getWorkspace().getRoot().getProject("TestStorage"); assertNotNull("Can't load TestStorage", project); //$NON-NLS-1$ if(!project.exists()) { provider = new TestProjectProvider("org.jboss.tools.seam.base.test", null, "TestScanner", true); project = provider.getProject(); } project.build(IncrementalProjectBuilder.FULL_BUILD, null); } public void testStorage() throws Exception { SeamProject seam = (SeamProject)SeamCorePlugin.getSeamProject(project, true); assertNotNull(seam); int mod = seam.getModificationsSinceLastStore(); System.out.println("-->" + mod); assertTrue("Modification index after load must be greater than 0", mod > 0); seam.store(); mod = seam.getModificationsSinceLastStore(); System.out.println("-->" + mod); assertEquals("Modification index after store must be cleared", 0, mod); SeamProject seamProject = (SeamProject)SeamCorePlugin.getSeamProject(project, true); seamProject.setStoreDisabledForTesting(true); try { IFile fromFile = project.getFile(new Path("lib/jboss-seam-1.2.1.GA.jar")); IFolder lib = project.getFolder(new Path("WebContent/WEB-INF/lib")); if(!lib.exists()) { lib.create(true, true, null); } IFile toFile = project.getFile(new Path("WebContent/WEB-INF/lib/jboss-seam.jar")); toFile.create(fromFile.getContents(), true, new NullProgressMonitor()); project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new NullProgressMonitor()); System.out.println("-->" + mod); // Thread.sleep(1000); project.build(IncrementalProjectBuilder.FULL_BUILD, SeamCoreBuilder.BUILDER_ID, null, new NullProgressMonitor()); JobUtils.waitForIdle(); mod = seam.getModificationsSinceLastStore(); System.out.println("-->" + mod); assertTrue("Modification index after adding new library must be greater than 0", mod > 0); } finally { seamProject.setStoreDisabledForTesting(false); } } @Override protected void tearDown() throws Exception { if(provider!=null) { provider.dispose(); } } }