diff options
author | kwilk | 2012-01-10 22:35:52 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2012-01-10 22:35:52 +0000 |
commit | 969e97555ee0bab63242463dc88b4f4bec2e3e7e (patch) | |
tree | 2ef92ece789b18329ea754de680c7a79798882d1 | |
parent | 3717d2cb4831dcbf0991d86050e196bb3ee8f689 (diff) | |
download | org.eclipse.osee-969e97555ee0bab63242463dc88b4f4bec2e3e7e.tar.gz org.eclipse.osee-969e97555ee0bab63242463dc88b4f4bec2e3e7e.tar.xz org.eclipse.osee-969e97555ee0bab63242463dc88b4f4bec2e3e7e.zip |
bug[ats_6WFC6]: SkynetTransaction multiple transaction problem
29 files changed, 436 insertions, 152 deletions
diff --git a/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/config/DemoDbGroups.java b/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/config/DemoDbGroups.java index 3721e82ef1e..5f19ef5e323 100644 --- a/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/config/DemoDbGroups.java +++ b/plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/config/DemoDbGroups.java @@ -40,7 +40,7 @@ public class DemoDbGroups { if (DEBUG) { OseeLog.log(Activator.class, Level.INFO, "Create Groups and add objects"); } - Artifact groupArt = UniversalGroup.addGroup(TEST_GROUP_NAME, AtsUtil.getAtsBranch()); + Artifact groupArt = UniversalGroup.addGroup(TEST_GROUP_NAME, AtsUtil.getAtsBranch(), transaction); for (TeamWorkFlowArtifact codeArt : DemoDbUtil.getSampleCodeWorkflows()) { // Add Action to Universal Group diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtil.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtil.java index 08e8edd3e25..919db54b786 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtil.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtil.java @@ -408,6 +408,7 @@ public class AtsTestUtil { actionArt2.deleteAndPersist(transaction); } transaction.execute(); + transaction = new SkynetTransaction(AtsUtilCore.getAtsBranch(), AtsTestUtil.class.getSimpleName() + " - cleanup 2"); if (testAi != null) { diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtilTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtilTest.java index a0b64a5f46b..ed36e4b6df0 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtilTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/AtsTestUtilTest.java @@ -137,6 +137,9 @@ public class AtsTestUtilTest extends AtsTestUtil { Assert.assertEquals(teamArt.getCurrentStateName(), TeamState.Completed.getPageName()); teamArt.reloadAttributesAndRelations(); + + transaction.execute(); + AtsTestUtil.cleanup(); } @@ -157,6 +160,9 @@ public class AtsTestUtilTest extends AtsTestUtil { Assert.assertEquals(teamArt.getCurrentStateName(), TeamState.Cancelled.getPageName()); teamArt.reloadAttributesAndRelations(); + + transaction.execute(); + AtsTestUtil.cleanup(); } } diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/notify/AtsNotificationManagerTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/notify/AtsNotificationManagerTest.java index 0e60e81f472..7550c54ca01 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/notify/AtsNotificationManagerTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/notify/AtsNotificationManagerTest.java @@ -369,12 +369,19 @@ public class AtsNotificationManagerTest { Assert.assertTrue(mgr.getNotificationEvents().iterator().next().getDescription().startsWith( "You have subscribed for email notification for Team ")); - actionArt.getTeams().iterator().next().deleteAndPersist(); - actionArt.deleteAndPersist(); + transaction.execute(); + + SkynetTransaction transaction2 = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + + actionArt.getTeams().iterator().next().deleteAndPersist(transaction2); + actionArt.deleteAndPersist(transaction2); + User user = UserManager.getUser(DemoUsers.Alex_Kay); user.setSoleAttributeValue(CoreAttributeTypes.Email, ""); user.deleteRelations(AtsRelationTypes.SubscribedUser_Artifact); - user.persist(AtsNotificationManagerTest.class.getSimpleName()); + user.persist(transaction2); + + transaction2.execute(); AtsTestUtil.cleanup(); } @@ -414,12 +421,19 @@ public class AtsNotificationManagerTest { Assert.assertTrue(mgr.getNotificationEvents().iterator().next().getDescription().startsWith( "You have subscribed for email notification for Actionable Item ")); - actionArt.getTeams().iterator().next().deleteAndPersist(); - actionArt.deleteAndPersist(); + transaction.execute(); + + SkynetTransaction transaction2 = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + + actionArt.getTeams().iterator().next().deleteAndPersist(transaction2); + actionArt.deleteAndPersist(transaction2); + User user = UserManager.getUser(DemoUsers.Alex_Kay); user.setSoleAttributeValue(CoreAttributeTypes.Email, ""); user.deleteRelations(AtsRelationTypes.SubscribedUser_Artifact); - user.persist(AtsNotificationManagerTest.class.getSimpleName()); + user.persist(transaction2); + + transaction2.execute(); AtsTestUtil.cleanup(); } diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/task/TaskManagerTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/task/TaskManagerTest.java index 51c67455dfb..3ab734e15f7 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/task/TaskManagerTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/task/TaskManagerTest.java @@ -37,6 +37,7 @@ public class TaskManagerTest extends TaskManager { @org.junit.Test public void testTransitionToCompletedThenInWork() throws OseeCoreException { + AtsTestUtil.cleanupAndReset("TaskManagerTest - TransitionToCompleted"); TaskArtifact taskArt = AtsTestUtil.getOrCreateTask(); @@ -45,7 +46,9 @@ public class TaskManagerTest extends TaskManager { AtsTestUtil.validateArtifactCache(); // transition to Completed - SkynetTransaction transaction = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + SkynetTransaction transaction = + new SkynetTransaction(AtsUtilCore.getAtsBranch(), + getClass().getSimpleName() + " testTransitionToCompletedThenInWork() 1"); Result result = TaskManager.transitionToCompleted(taskArt, 0.0, 3, transaction); Assert.assertEquals(Result.TrueResult, result); transaction.execute(); @@ -58,7 +61,9 @@ public class TaskManagerTest extends TaskManager { AtsTestUtil.validateArtifactCache(); // transition back to InWork - transaction = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + transaction = + new SkynetTransaction(AtsUtilCore.getAtsBranch(), + getClass().getSimpleName() + " testTransitionToCompletedThenInWork() 2"); result = TaskManager.transitionToInWork(taskArt, UserManager.getUser(), 45, .5, transaction); Assert.assertEquals(Result.TrueResult, result); transaction.execute(); @@ -66,11 +71,13 @@ public class TaskManagerTest extends TaskManager { Assert.assertEquals(TaskStates.InWork.getPageName(), taskArt.getCurrentStateName()); Assert.assertEquals(3.5, HoursSpentUtil.getHoursSpentTotal(taskArt)); Assert.assertEquals("Joe Smith", taskArt.getStateMgr().getAssigneesStr()); - } @org.junit.Test public void testStatusPercentChanged() throws OseeCoreException { + + System.out.println("\n\n...testStatusPercentChanged Start..."); + AtsTestUtil.cleanupAndReset("TaskManagerTest - StatusPercentChanged"); TaskArtifact taskArt = AtsTestUtil.getOrCreateTask(); @@ -79,7 +86,8 @@ public class TaskManagerTest extends TaskManager { AtsTestUtil.validateArtifactCache(); // status 34% completed - SkynetTransaction transaction = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + SkynetTransaction transaction = + new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName() + " testStatusPercentChanged() 1"); Result result = TaskManager.statusPercentChanged(taskArt, 3, 34, transaction); Assert.assertEquals(Result.TrueResult, result); transaction.execute(); @@ -93,7 +101,8 @@ public class TaskManagerTest extends TaskManager { AtsTestUtil.validateArtifactCache(); // status 100% completed - transaction = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + transaction = + new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName() + " testStatusPercentChanged() 2"); result = TaskManager.statusPercentChanged(taskArt, 3, 100, transaction); Assert.assertEquals(Result.TrueResult, result); transaction.execute(); @@ -107,7 +116,8 @@ public class TaskManagerTest extends TaskManager { AtsTestUtil.validateArtifactCache(); // status back to 25% - transaction = new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName()); + transaction = + new SkynetTransaction(AtsUtilCore.getAtsBranch(), getClass().getSimpleName() + " testStatusPercentChanged() 3"); result = TaskManager.statusPercentChanged(taskArt, 1, 25, transaction); Assert.assertEquals(Result.TrueResult, result); transaction.execute(); @@ -120,6 +130,6 @@ public class TaskManagerTest extends TaskManager { // ensure nothing dirty AtsTestUtil.validateArtifactCache(); + System.out.println("...testStatusPercentChanged End..."); } - } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/action/ActionManager.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/action/ActionManager.java index 94785106aef..14cb0582741 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/action/ActionManager.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/action/ActionManager.java @@ -173,7 +173,7 @@ public class ActionManager { */ public static void setArtifactIdentifyData(Artifact art, String title, String desc, ChangeType changeType, String priority, Boolean validationRequired, Date needByDate) throws OseeCoreException { art.setName(title); - if (!desc.equals("")) { + if (!Strings.emptyString().equals(desc)) { art.setSoleAttributeValue(AtsAttributeTypes.Description, desc); } ChangeTypeUtil.setChangeType(art, changeType); diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/workflow/SMAPromptChangeStatusTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/workflow/SMAPromptChangeStatusTest.java index 965e01247bb..ecda1f2d703 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/workflow/SMAPromptChangeStatusTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/workflow/SMAPromptChangeStatusTest.java @@ -162,7 +162,7 @@ public class SMAPromptChangeStatusTest { TransitionHelper helper = new TransitionHelper("Transition to Cancelled", Arrays.asList(cancelTask), TaskStates.Cancelled.getPageName(), null, null, TransitionOption.None); - TransitionManager transitionMgr = new TransitionManager(helper); + TransitionManager transitionMgr = new TransitionManager(helper, transaction); TransitionResults results = transitionMgr.handleAll(); transitionMgr.getTransaction().execute(); Assert.assertTrue("Transition should have no errors", results.isEmpty()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java index cec0a1333a8..ae507978af3 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/DeletePurgeAtsArtifactsAction.java @@ -22,11 +22,12 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; */ public class DeletePurgeAtsArtifactsAction extends AbstractAtsAction { + private static final String MSG = "Delete/Purge Ats Artifact(s)"; private final ISelectedAtsArtifacts selectedAtsArtifacts; private boolean prompt = true; public DeletePurgeAtsArtifactsAction(ISelectedAtsArtifacts selectedAtsArtifacts) { - super("Delete/Purge Ats Artifact(s)", ImageManager.getImageDescriptor(FrameworkImage.ARTIFACT_EDITOR)); + super(MSG, ImageManager.getImageDescriptor(FrameworkImage.ARTIFACT_EDITOR)); this.selectedAtsArtifacts = selectedAtsArtifacts; setToolTipText(getText()); } diff --git a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/CoveragePackageImportTest.java b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/CoveragePackageImportTest.java index aa5f4135879..118c213ec64 100644 --- a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/CoveragePackageImportTest.java +++ b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/CoveragePackageImportTest.java @@ -53,17 +53,27 @@ import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; +import org.eclipse.osee.framework.skynet.core.rule.OseeHousekeepingRule; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TestName; /** * @author Donald G. Dunne */ public class CoveragePackageImportTest { + @Rule + public OseeHousekeepingRule hk = new OseeHousekeepingRule(); + + @Rule + public TestName testName = new TestName(); + public static CoveragePackage coveragePackage = null; public static CoverageImport coverageImport = null; private static boolean testWithDb = true; @@ -107,18 +117,9 @@ public class CoveragePackageImportTest { Assert.assertEquals(60, coverageImport.getCoverageItemsCovered(CoverageOptionManager.Test_Unit).size()); Assert.assertEquals(62, coverageImport.getCoverageItemsCovered(CoverageOptionManager.Not_Covered).size()); - // Ensure all coverageItems have valid name for (CoverageItem coverageItem : coverageImport.getCoverageItems()) { Assert.assertTrue(Strings.isValid(coverageItem.getName())); - } - - // Ensure all coverageItems have valid namespace - for (CoverageItem coverageItem : coverageImport.getCoverageItems()) { Assert.assertTrue(Strings.isValid(coverageItem.getNamespace())); - } - - // Ensure all coverageItems have valid orderNumber - for (CoverageItem coverageItem : coverageImport.getCoverageItems()) { Assert.assertTrue(Strings.isValid(coverageItem.getOrderNumber())); } @@ -226,20 +227,22 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); OseeSystemArtifacts.getDefaultHierarchyRootArtifact(artifact.getBranch()).addChild(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -278,6 +281,7 @@ public class CoveragePackageImportTest { Assert.assertTrue(mergeManager.getMergeItems(null).iterator().next() instanceof MessageMergeItem); } + @Ignore @Test // Re-import two new Coverage Unit files // com.screenA.ComScrnButton3 and epu.PowerUnit3 @@ -338,19 +342,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -365,6 +371,7 @@ public class CoveragePackageImportTest { } + @Ignore @Test // Add PowerUnit1.initAdded to end; Change getColumnCount.line1 from TestUnit2 to TestUnit3 public void testImport3() throws Exception { @@ -372,16 +379,20 @@ public class CoveragePackageImportTest { coverageImport = coverageImport3TestBlam.run(null); Assert.assertNotNull(coverageImport); + SkynetTransaction testLoadCovPackageTransaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); if (testWithDb) { // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(testLoadCovPackageTransaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); } + testLoadCovPackageTransaction.execute(); // Look at file contents for PowerUnit1.java CoverageUnit coverageUnit = @@ -471,19 +482,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -528,16 +541,20 @@ public class CoveragePackageImportTest { coverageImport = coverageImport4TestBlam.run(null); Assert.assertNotNull(coverageImport); + SkynetTransaction testLoadTransaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); if (testWithDb) { // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(testLoadTransaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); } + testLoadTransaction.execute(); // Look at file contents for PowerUnit1.java CoverageUnit coverageUnit = @@ -607,19 +624,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -649,14 +668,19 @@ public class CoveragePackageImportTest { Assert.assertNotNull(coverageImport); if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + + transaction.execute(); } // Look at file contents for NavigationButton.setImage and make sure only one coverageitem exists @@ -727,19 +751,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -761,14 +787,19 @@ public class CoveragePackageImportTest { Assert.assertNotNull(coverageImport); if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + + transaction.execute(); } // Get and store off coverage unit to delete so can confirm deletion occurred @@ -860,19 +891,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -920,14 +953,20 @@ public class CoveragePackageImportTest { Assert.assertNotNull(coverageImport); if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); + // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + + transaction.execute(); } // Get and store off coverage unit to delete so can confirm deletion occurred @@ -1024,19 +1063,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -1109,14 +1150,18 @@ public class CoveragePackageImportTest { Assert.assertNotNull(coverageImport); if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + transaction.execute(); } // Get and store off coverage unit to delete so can confirm deletion occurred @@ -1207,19 +1252,20 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -1261,14 +1307,18 @@ public class CoveragePackageImportTest { Assert.assertNotNull(coverageImport); if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + transaction.execute(); } CoverageUnit navigationButton2Unit = @@ -1349,19 +1399,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -1404,15 +1456,23 @@ public class CoveragePackageImportTest { coverageImport = coverageImport10TestBlam.run(null); Assert.assertNotNull(coverageImport); + SkynetTransaction importingTransaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), + CoveragePackageImportTest.class.getSimpleName() + ".testImport10"); + if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), + CoveragePackageImportTest.class.getSimpleName() + ".testImport10"); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + transaction.execute(); } // Change NavigateButton1.java methods to insert user disposition item as Coverage_Method for 2 items @@ -1421,14 +1481,18 @@ public class CoveragePackageImportTest { // reload coverage package from store if (testWithDb) { + SkynetTransaction transaction = + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s.%s", + CoveragePackageImportTest.class.getSimpleName(), testName.getMethodName())); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); coveragePackage = packageStore.getCoveragePackage(); + transaction.execute(); } // Confirm that programatic changes were recorded @@ -1508,19 +1572,21 @@ public class CoveragePackageImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save " + testName.getMethodName()); store.save(transaction, getTestCoveragePackageEvent()); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + + transaction.execute(); } else { loadedCp = coveragePackage; } @@ -1572,7 +1638,7 @@ public class CoveragePackageImportTest { * Setup test by changing two lines in NavigateButton2.java to be user dispositioned and getText line 3 rationale */ public static Result setupCoveragePackageForImport10(CoveragePackage coveragePackage) { - String errStr = ""; + String errStr = null; CoverageItem item = getNavigateButton2getTextLine3CoverageItem(coveragePackage); if (item == null) { @@ -1589,7 +1655,7 @@ public class CoveragePackageImportTest { item.setRationale("This is the rationale"); } - if (!errStr.isEmpty()) { + if (Strings.isValid(errStr)) { return new Result(errStr); } diff --git a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/VectorCastImportTest.java b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/VectorCastImportTest.java index 9ecaa60b0f0..5fe4a4c5002 100644 --- a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/VectorCastImportTest.java +++ b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/VectorCastImportTest.java @@ -43,17 +43,25 @@ import org.eclipse.osee.framework.plugin.core.PluginUtil; import org.eclipse.osee.framework.plugin.core.util.OseeData; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; +import org.eclipse.osee.framework.skynet.core.rule.OseeHousekeepingRule; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TestName; /** * @author Donald G. Dunne */ public class VectorCastImportTest { + @Rule + public TestName testName = new TestName(); + @Rule + public OseeHousekeepingRule houseKeepingRule = new OseeHousekeepingRule(); + public static CoveragePackage coveragePackage = null; public static CoverageImport coverageImport = null; private static boolean testWithDb = true; @@ -216,20 +224,24 @@ public class VectorCastImportTest { // Test Persist of CoveragePackage OseeCoverageStore store = OseeCoveragePackageStore.get(coveragePackage, CoverageTestUtil.getTestBranch()); SkynetTransaction transaction = - new SkynetTransaction(CoverageTestUtil.getTestBranch(), "Coverage Package Save"); + new SkynetTransaction(CoverageTestUtil.getTestBranch(), String.format("%s: %s.%s", + VectorCastImportTest.class.getSimpleName(), "Coverage Package Save ", testName.getMethodName())); CoveragePackageEvent coverageEvent = new CoveragePackageEvent(coveragePackage, CoverageEventType.Modified); store.save(transaction, coverageEvent); - transaction.execute(); + store.getArtifact(false).persist(transaction); // Test Load of Coverage Package Artifact artifact = ArtifactQuery.getArtifactFromId(coveragePackage.getGuid(), CoverageTestUtil.getTestBranch()); CoverageTestUtil.registerAsTestArtifact(artifact); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); OseeCoveragePackageStore packageStore = new OseeCoveragePackageStore(artifact); Assert.assertNotNull(packageStore.getArtifact(false)); loadedCp = packageStore.getCoveragePackage(); + packageStore.getArtifact(false).persist(transaction); + + transaction.execute(); } else { loadedCp = coveragePackage; } diff --git a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/model/CoverageItemPersistTest.java b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/model/CoverageItemPersistTest.java index 94954a12933..bc84eec0a61 100644 --- a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/model/CoverageItemPersistTest.java +++ b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/model/CoverageItemPersistTest.java @@ -100,6 +100,8 @@ public class CoverageItemPersistTest { CoveragePackageEvent coverageEvent = new CoveragePackageEvent(coverageName, coverageGuid, CoverageEventType.Modified, GUID.create()); new OseeCoverageUnitStore(parentCu, CoverageTestUtil.getTestBranch()).save(transaction, coverageEvent); + artifact.persist(transaction); + transaction.execute(); // Not name/guid cause not attached to coverage package diff --git a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/ArtifactTestUnitStoreTest.java b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/ArtifactTestUnitStoreTest.java index b5be22f42bb..8717f4a64fb 100644 --- a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/ArtifactTestUnitStoreTest.java +++ b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/ArtifactTestUnitStoreTest.java @@ -24,6 +24,7 @@ import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.support.test.util.TestUtil; import org.junit.After; import org.junit.Assert; @@ -80,17 +81,20 @@ public class ArtifactTestUnitStoreTest { @Test public void testStore() throws OseeCoreException { + SkynetTransaction transaction = new SkynetTransaction(testBranch, getClass().getSimpleName()); ArtifactTestUnitStore store = new ArtifactTestUnitStore(testBranch); TestUnitCache tc = new TestUnitCache(store); CoverageItem ci = createCoverageItem(tc); ci.addTestUnitName("test1"); ci.addTestUnitName("test10"); - store.store(tc); + store.store(tc, transaction); Artifact testArtifact = ArtifactQuery.getOrCreate(ArtifactTestUnitStore.COVERAGE_GUID, null, CoreArtifactTypes.GeneralData, testBranch); String actual = testArtifact.getSoleAttributeValueAsString(CoreAttributeTypes.GeneralStringData, ""); String expected = testInputData + "\n4|test10"; Assert.assertEquals(expected, actual); + testArtifact.persist(transaction); + transaction.execute(); } } diff --git a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/MockTestUnitStore.java b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/MockTestUnitStore.java index 84d8adf5e84..4e53eaaf221 100644 --- a/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/MockTestUnitStore.java +++ b/plugins/org.eclipse.osee.coverage.test/src/org/eclipse/osee/coverage/test/store/MockTestUnitStore.java @@ -13,6 +13,7 @@ package org.eclipse.osee.coverage.test.store; import org.eclipse.osee.coverage.store.ITestUnitStore; import org.eclipse.osee.coverage.store.TestUnitCache; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author John Misinco @@ -27,7 +28,7 @@ public class MockTestUnitStore implements ITestUnitStore { @SuppressWarnings("unused") @Override - public void store(TestUnitCache cache) throws OseeCoreException { + public void store(TestUnitCache cache, SkynetTransaction transaction) throws OseeCoreException { // do nothing } diff --git a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/ITestUnitProvider.java b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/ITestUnitProvider.java index 9293c236986..c9357fd0cd7 100644 --- a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/ITestUnitProvider.java +++ b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/ITestUnitProvider.java @@ -12,6 +12,7 @@ package org.eclipse.osee.coverage.model; import java.util.Collection; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * Allow external mechnism for test units to be provided to UI @@ -32,4 +33,6 @@ public interface ITestUnitProvider { public void fromXml(CoverageItem coverageItem, String xml) throws OseeCoreException; + public void save(SkynetTransaction transaction) throws OseeCoreException; + } diff --git a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/SimpleTestUnitProvider.java b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/SimpleTestUnitProvider.java index e0a0ec4cf40..7b61a5d9015 100644 --- a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/SimpleTestUnitProvider.java +++ b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/SimpleTestUnitProvider.java @@ -14,6 +14,7 @@ import java.util.Collection; import org.eclipse.osee.framework.jdk.core.type.HashCollection; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * Simple provider that optimizes how test units are stored by sharing test unit names. @@ -70,4 +71,9 @@ public class SimpleTestUnitProvider implements ITestUnitProvider { coverageItemToTestUnits.removeValue(coverageItem, testUnitName); } + @Override + public void save(SkynetTransaction transaction) { + // do nothing cause storeage is in memory only + } + } diff --git a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ArtifactTestUnitStore.java b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ArtifactTestUnitStore.java index 8e3000c88b4..112ea9d4673 100644 --- a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ArtifactTestUnitStore.java +++ b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ArtifactTestUnitStore.java @@ -26,6 +26,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author John Misinco @@ -56,7 +57,7 @@ public class ArtifactTestUnitStore implements ITestUnitStore { } @Override - public void store(TestUnitCache cache) throws OseeCoreException { + public void store(TestUnitCache cache, SkynetTransaction transaction) throws OseeCoreException { Artifact artifact = getCoverageTestUnitArtifact(); Set<Entry<Integer, String>> entries = cache.getAllCachedTestUnitEntries(); @@ -71,7 +72,7 @@ public class ArtifactTestUnitStore implements ITestUnitStore { String storage = asStorage(entriesList); artifact.setSoleAttributeFromString(CoreAttributeTypes.GeneralStringData, storage); - artifact.persist(getClass().getSimpleName()); + artifact.persist(transaction); } protected String asStorage(List<Entry<Integer, String>> entries) { diff --git a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ITestUnitStore.java b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ITestUnitStore.java index e3d3b33571c..6c7142ac0be 100644 --- a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ITestUnitStore.java +++ b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/ITestUnitStore.java @@ -11,6 +11,7 @@ package org.eclipse.osee.coverage.store; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author John Misinco @@ -19,6 +20,6 @@ public interface ITestUnitStore { public void load(TestUnitCache cache) throws OseeCoreException; - public void store(TestUnitCache cache) throws OseeCoreException; + public void store(TestUnitCache cache, SkynetTransaction transaction) throws OseeCoreException; }
\ No newline at end of file diff --git a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/OseeCoverageUnitStore.java b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/OseeCoverageUnitStore.java index 9eceb311adb..56e7a58addf 100644 --- a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/OseeCoverageUnitStore.java +++ b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/OseeCoverageUnitStore.java @@ -249,6 +249,7 @@ public class OseeCoverageUnitStore extends OseeCoverageStore { } coverageEvent.getCoverages().add(change); } + getTestUnitProvider().save(transaction); return Result.TrueResult; } diff --git a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/TestUnitCache.java b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/TestUnitCache.java index c8b91c9c0e8..33fc7f73285 100644 --- a/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/TestUnitCache.java +++ b/plugins/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/store/TestUnitCache.java @@ -26,6 +26,7 @@ import org.eclipse.osee.framework.jdk.core.type.HashCollection; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import com.google.common.collect.HashBiMap; /** @@ -156,14 +157,15 @@ public class TestUnitCache implements ITestUnitProvider { } @Override - public String toXml(CoverageItem coverageItem) throws OseeCoreException { - String toReturn = ""; + public String toXml(CoverageItem coverageItem) { + + String toReturn = Strings.emptyString(); + Collection<Integer> values = itemsToTestUnit.getValues(coverageItem); if (values != null) { List<Integer> testIdEntries = (List<Integer>) values; java.util.Collections.sort(testIdEntries); toReturn = Collections.toString(";", testIdEntries); - persist(); } return toReturn; } @@ -180,14 +182,6 @@ public class TestUnitCache implements ITestUnitProvider { itemsToTestUnit.put(coverageItem, entries); } - public void persist() throws OseeCoreException { - ensurePopulated(); - if (cacheIsDirty) { - testUnitStore.store(this); - cacheIsDirty = false; - } - } - private synchronized void ensurePopulated() throws OseeCoreException { if (!ensurePopulatedRanOnce) { ensurePopulatedRanOnce = true; @@ -199,4 +193,13 @@ public class TestUnitCache implements ITestUnitProvider { } } -}
\ No newline at end of file + @Override + public void save(SkynetTransaction transaction) throws OseeCoreException { + ensurePopulated(); + if (cacheIsDirty) { + testUnitStore.store(this, transaction); + cacheIsDirty = false; + } + } + +} diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java index 23c432ae2e0..da4a0cc0e85 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java +++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java @@ -47,6 +47,7 @@ import org.eclipse.osee.framework.skynet.core.importing.parsers.ParsersSuite; import org.eclipse.osee.framework.skynet.core.relation.CrossBranchLinkTest; import org.eclipse.osee.framework.skynet.core.relation.RelationTestSuite; import org.eclipse.osee.framework.skynet.core.revision.ConflictTest; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionTest; import org.eclipse.osee.framework.skynet.core.transaction.TransactionManagerTest; import org.eclipse.osee.framework.skynet.core.utility.CsvArtifactTest; import org.eclipse.osee.framework.skynet.core.word.UpdateBookmarkIdTest; @@ -75,6 +76,7 @@ import org.junit.runners.Suite; EventBasicGuidRelationTest.class, EventChangeTypeBasicGuidArtifactTest.class, ArtifactQueryTestDemo.class, + SkynetTransactionTest.class, TransactionManagerTest.class, ArtifactTestSuite.class, RelationTestSuite.class, @@ -98,7 +100,7 @@ import org.junit.runners.Suite; /** * @author Donald G. Dunne */ -public class FrameworkCore_Demo_Suite { +public final class FrameworkCore_Demo_Suite { @BeforeClass public static void setUp() throws Exception { System.out.println("\n\nBegin " + FrameworkCore_Demo_Suite.class.getSimpleName()); diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/relation/order/RelationOrderMergeUtilityTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/relation/order/RelationOrderMergeUtilityTest.java index 66c99ac7849..54a0a4b5140 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/relation/order/RelationOrderMergeUtilityTest.java +++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/relation/order/RelationOrderMergeUtilityTest.java @@ -21,13 +21,13 @@ import org.eclipse.osee.framework.core.enums.RelationSide; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.model.type.RelationType; -import org.eclipse.osee.framework.jdk.core.util.GUID; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; import org.eclipse.osee.framework.skynet.core.relation.RelationManager; import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager; import org.eclipse.osee.framework.skynet.core.rule.OseeHousekeepingRule; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.skynet.core.util.FrameworkTestUtil; import org.junit.After; import org.junit.Assert; @@ -55,7 +55,9 @@ public class RelationOrderMergeUtilityTest { @Before public void createBranch() throws OseeCoreException { - destBranch = BranchManager.createWorkingBranch(BranchManager.getSystemRootBranch(), GUID.create(), null); + destBranch = + BranchManager.createWorkingBranch(BranchManager.getSystemRootBranch(), + "RelationOrderMergeUtilityTest.createBranch", null); hierType = RelationTypeManager.getType(defaultHierarchy); hierSide = defaultHierarchy.getSide(); } @@ -69,12 +71,12 @@ public class RelationOrderMergeUtilityTest { public void testTrivialMerge() throws OseeCoreException { Artifact parent = FrameworkTestUtil.createSimpleArtifact(Artifact, "Parent", destBranch); Artifact[] children = - FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[0]); + FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[5]); for (int i = 0; i < 5; i++) { setAsChild(parent, children[i], ascOrder); } - parent.persist(getClass().getSimpleName()); + parent.persist(getClass().getSimpleName() + ".testTrivialMerge()"); RelationOrderData mergedOrder = RelationOrderMergeUtility.mergeRelationOrder(parent, parent); Assert.assertNotNull(mergedOrder); @@ -86,18 +88,18 @@ public class RelationOrderMergeUtilityTest { public void testOrderMerge() throws OseeCoreException { Artifact destParent = FrameworkTestUtil.createSimpleArtifact(Artifact, "Parent", destBranch); Artifact[] destChildren = - FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[0]); + FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[5]); for (int i = 0; i <= 3; i++) { setAsChild(destParent, destChildren[i], USER_DEFINED); } - destParent.persist(getClass().getSimpleName()); + destParent.persist(getClass().getSimpleName() + ".testOrderMerge()_1"); Branch sourceBranch = BranchManager.createWorkingBranch(destBranch, "Source Branch", null); Artifact srcParent = ArtifactQuery.getArtifactFromId(destParent.getGuid(), sourceBranch); Artifact srcChild = ArtifactQuery.getArtifactFromId(destChildren[4].getGuid(), sourceBranch); setAsChild(srcParent, srcChild, USER_DEFINED); - srcParent.persist(getClass().getSimpleName()); + srcParent.persist(getClass().getSimpleName() + ".testOrderMerge()_2"); RelationManager.deleteRelationsAll(destChildren[0], true); RelationOrderData mergedOrder = RelationOrderMergeUtility.mergeRelationOrder(destParent, srcParent); @@ -115,20 +117,29 @@ public class RelationOrderMergeUtilityTest { @Test public void testStrategyMerge() throws OseeCoreException { + Artifact ascParent = FrameworkTestUtil.createSimpleArtifact(Artifact, "Parent", destBranch); Artifact[] ascRelatives = - FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[0]); + FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[5]); Artifact descParent = FrameworkTestUtil.createSimpleArtifact(Artifact, "Parent", destBranch); Artifact[] descRelatives = - FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[0]); + FrameworkTestUtil.createSimpleArtifacts(Artifact, 5, "Relative", destBranch).toArray(new Artifact[5]); for (int i = 0; i < 5; i++) { setAsChild(ascParent, ascRelatives[i], ascOrder); setAsChild(descParent, descRelatives[i], descOrder); } - ascParent.persist(getClass().getSimpleName()); - descParent.persist(getClass().getSimpleName()); + SkynetTransaction transaction1 = + new SkynetTransaction(destBranch, getClass().getSimpleName() + ".testStrategyMerge()_1"); + ascParent.persist(transaction1); + transaction1.execute(); + + SkynetTransaction transaction2 = + new SkynetTransaction(destBranch, getClass().getSimpleName() + ".testStrategyMerge()_2"); + descParent.persist(transaction2); + transaction2.execute(); + RelationOrderData mergedOrder = RelationOrderMergeUtility.mergeRelationOrder(ascParent, descParent); Assert.assertNull(mergedOrder); } diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/rule/OseeHousekeepingRule.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/rule/OseeHousekeepingRule.java index ae594d7d6b9..4e06591dfa2 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/rule/OseeHousekeepingRule.java +++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/rule/OseeHousekeepingRule.java @@ -14,6 +14,7 @@ import java.util.Collection; import junit.framework.Assert; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache; +import org.eclipse.osee.framework.skynet.core.utility.Artifacts; import org.junit.rules.MethodRule; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.Statement; @@ -32,6 +33,10 @@ import org.junit.runners.model.Statement; */ public final class OseeHousekeepingRule implements MethodRule { + private static final String MSG = "\n[%s] of type [%s] found while executing: %s.%s()\nDirty report:[%s]\r\n"; + private static final String DIRTY_ARTIFACTS_IN_ARTIFACT_CACHE = + OseeHousekeepingRule.class.getSimpleName() + " Dirty artifacts in Artifact Cache:"; + @Override public Statement apply(final Statement base, final FrameworkMethod method, final Object target) { return new Statement() { @@ -47,11 +52,11 @@ public final class OseeHousekeepingRule implements MethodRule { final Collection<Artifact> dirtyArtifacts = ArtifactCache.getDirtyArtifacts(); if (!dirtyArtifacts.isEmpty()) { - StringBuilder entireMessage = new StringBuilder(); - entireMessage.append("Dirty artifacts in Artifact Cache:"); + StringBuilder entireMessage = new StringBuilder(DIRTY_ARTIFACTS_IN_ARTIFACT_CACHE.length() + MSG.length() * 2); + entireMessage.append(DIRTY_ARTIFACTS_IN_ARTIFACT_CACHE); for (Artifact artifact : dirtyArtifacts) { - entireMessage.append(String.format("\n[%s] of type [%s] found while executing: %s.%s()", - artifact.getName(), artifact.getArtifactType(), className, methodName)); + entireMessage.append(String.format(MSG, artifact.getName(), artifact.getArtifactType(), + className, methodName, Artifacts.getDirtyReport(artifact))); } Assert.fail(entireMessage.toString()); } diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransactionTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransactionTest.java new file mode 100644 index 00000000000..a8c913dc5ed --- /dev/null +++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransactionTest.java @@ -0,0 +1,127 @@ +/******************************************************************************* + * Copyright (c) 2011 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.skynet.core.transaction; + +import org.eclipse.osee.framework.core.data.IOseeBranch; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.support.test.util.DemoSawBuilds; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestName; + +/** + * @author Karol M Wilk + */ +public final class SkynetTransactionTest { + + public static final String MSG = "%s.%s %d"; + + @Rule + public TestName testName = new TestName(); + + @Test(expected = OseeCoreException.class) + public void test_overalappingTransactions() throws OseeCoreException { + + new SkynetTransaction(DemoSawBuilds.SAW_Bld_1, String.format(MSG, SkynetTransactionTest.class.getSimpleName(), + testName.getMethodName(), 1)); + + new SkynetTransaction(DemoSawBuilds.SAW_Bld_1, String.format(MSG, SkynetTransactionTest.class.getSimpleName(), + testName.getMethodName(), 2)); + } + + @Test + public void test_overalappingTransactionsDifferentBranches() throws OseeCoreException { + + SkynetTransaction trans1 = + new SkynetTransaction(DemoSawBuilds.SAW_Bld_2, String.format(MSG, SkynetTransactionTest.class.getSimpleName(), + testName.getMethodName(), 1)); + + SkynetTransaction trans2 = + new SkynetTransaction(DemoSawBuilds.SAW_Bld_1, String.format(MSG, SkynetTransactionTest.class.getSimpleName(), + testName.getMethodName(), 2)); + + trans1.execute(); + trans2.execute(); + } + + @Test + public void test_multiThreadedOveralappingTransactions() throws Exception { + new SkynetTransaction(DemoSawBuilds.SAW_Bld_1, String.format(MSG, SkynetTransactionTest.class.getSimpleName(), + testName.getMethodName(), 1)); + + ThreadedWorker worker = new ThreadedWorker(2, DemoSawBuilds.SAW_Bld_1); + worker.execute(); + + worker.join(); + + worker.finish(); + Assert.assertTrue(worker.caughtOseeCoreException); + } + + @Test + public void test_multiThreadedDifferentBranches() throws Exception { + new SkynetTransaction(DemoSawBuilds.SAW_Bld_1, String.format(MSG, SkynetTransactionTest.class.getSimpleName(), + testName.getMethodName(), 1)); + ThreadedWorker worker = new ThreadedWorker(2, DemoSawBuilds.SAW_Bld_2); + worker.execute(); + worker.join(); + worker.finish(); + Assert.assertFalse(worker.caughtOseeCoreException); + } + + private class ThreadedWorker implements Runnable { + + private static final String TRANS_COMMENT = "%s Id: %d"; + private final Thread myThread; + private SkynetTransaction governingTransaction; + private final IOseeBranch branch; + public boolean caughtOseeCoreException; + private final int manualId; + + public ThreadedWorker(int id, IOseeBranch branchToken) { + this.manualId = id; + this.branch = branchToken; + this.caughtOseeCoreException = false; + this.myThread = new Thread(this, "Threaded Worker #" + id); + } + + @Override + public void run() { + try { + governingTransaction = + new SkynetTransaction(branch, String.format(TRANS_COMMENT, SkynetTransactionTest.class.getSimpleName(), + manualId)); + //hold onto this transaction + } catch (OseeCoreException ex) { + caughtOseeCoreException = true; + } + } + + public void join() throws InterruptedException { + myThread.join(); + } + + public void execute() { + myThread.start(); + } + + public void finish() throws OseeCoreException { + finish(false); + } + + public void finish(boolean executeTransaction) throws OseeCoreException { + if (executeTransaction && governingTransaction != null) { + governingTransaction.execute(); + } + } + } +} diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/User.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/User.java index 57752cf206b..47dc87055f7 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/User.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/User.java @@ -29,6 +29,7 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory; import org.eclipse.osee.framework.skynet.core.artifact.Attribute; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author Donald G. Dunne @@ -151,6 +152,10 @@ public class User extends Artifact implements IBasicUser { } public void saveSettings() throws OseeCoreException { + saveSettings(null); + } + + public void saveSettings(SkynetTransaction transaction) throws OseeCoreException { if (userSettings != null) { StringWriter stringWriter = new StringWriter(); try { @@ -159,7 +164,11 @@ public class User extends Artifact implements IBasicUser { OseeExceptions.wrapAndThrow(ex); } setSoleAttributeFromString(CoreAttributeTypes.UserSettings, stringWriter.toString()); - persist("User - Save Settings"); + if (transaction == null) { + persist("User - Save Settings"); + } else { + persist(transaction); + } } } diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/UniversalGroup.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/UniversalGroup.java index 1ac2c2c1b2e..7126fff87ea 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/UniversalGroup.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/UniversalGroup.java @@ -24,6 +24,7 @@ import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; import org.eclipse.osee.framework.skynet.core.internal.Activator; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** * @author Donald G. Dunne @@ -60,16 +61,18 @@ public class UniversalGroup { return new ArrayList<Artifact>(); } - public static Artifact addGroup(String name, IOseeBranch branch) throws OseeCoreException { + public static Artifact addGroup(String name, IOseeBranch branch, SkynetTransaction transaction) throws OseeCoreException { if (!getGroups(name, branch).isEmpty()) { throw new OseeArgumentException("Group Already Exists"); } Artifact groupArt = ArtifactTypeManager.addArtifact(CoreArtifactTypes.UniversalGroup, branch, name); - groupArt.persist(UniversalGroup.class.getSimpleName()); + groupArt.persist(transaction); + Artifact groupRoot = getTopUniversalGroupArtifact(branch); groupRoot.addRelation(CoreRelationTypes.Universal_Grouping__Members, groupArt); - groupRoot.persist(UniversalGroup.class.getSimpleName()); + groupRoot.persist(transaction); + return groupArt; } diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransaction.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransaction.java index 84a95b4051c..f379fb3639e 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransaction.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/SkynetTransaction.java @@ -16,6 +16,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.logging.Level; + import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.enums.DeletionFlag; @@ -71,20 +72,18 @@ public final class SkynetTransaction extends AbstractOperation { private final String comment; private User user; - private final TransactionMonitor txMonitor = new TransactionMonitor(); + + private static TransactionMonitor txMonitor = new TransactionMonitor(); + private AccessPolicy access; - public SkynetTransaction(Branch branch, String comment) { + public SkynetTransaction(IOseeBranch branch, String comment) throws OseeCoreException { super(comment, Activator.PLUGIN_ID); - this.branch = branch; + this.branch = BranchManager.getBranch(branch); this.comment = comment; txMonitor.reportTxCreation(this, branch, comment); } - public SkynetTransaction(IOseeBranch branch, String comment) throws OseeCoreException { - this(BranchManager.getBranch(branch), comment); - } - private int getNewAttributeId(Artifact artifact, Attribute<?> attribute) throws OseeCoreException { return StoreSkynetTransactionOperation.getNewAttributeId(artifact, attribute); } @@ -393,4 +392,4 @@ public final class SkynetTransaction extends AbstractOperation { public void execute() throws OseeCoreException { Operations.executeWorkAndCheckStatus(this); } -}
\ No newline at end of file +} diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/TransactionMonitor.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/TransactionMonitor.java index dd4db07cc3f..fbbb34a228f 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/TransactionMonitor.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/TransactionMonitor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. + * Copyright (c) 2011 Boeing. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,19 +12,15 @@ package org.eclipse.osee.framework.skynet.core.transaction; import java.util.Map; import java.util.WeakHashMap; -import java.util.logging.Level; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeExceptions; import org.eclipse.osee.framework.core.exception.OseeStateException; -import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.internal.Activator; /** * @author Roberto E. Escobar */ -public class TransactionMonitor { +public final class TransactionMonitor { - private String lastComment; private enum TxState { CREATED, RUNNING, @@ -37,49 +33,47 @@ public class TransactionMonitor { this.txMap = new WeakHashMap<Object, TxOperation>(); } - public synchronized void reportTxCreation(final Object transaction, Object key, String comment) { - TxOperation currentTx = txMap.get(key); - if (currentTx != null) { - // This log is to support debugging the case where osee transactions are nested and should - // use the same transaction. - // This case may happens legitimately if an exception occurs outside this API before transaction.execute() is called, - // so it is only notification that this is occurring. - OseeLog.logf(Activator.class, Level.SEVERE, currentTx.getError(), - "New transaction [%s] created over Last transaction [%s]", comment, lastComment); - + public synchronized void reportTxCreation(final Object transaction, Object key, String comment) throws OseeCoreException { + TxOperation op = txMap.get(key); + if (op == null) { + txMap.put(key, new TxOperation(transaction)); + } else { + txMap.put(key, null); + throw new OseeCoreException("Branch: [%s]: New transaction [%s] created over Last transaction [%s]", key, + comment, op.getTransaction().toString()); } - lastComment = comment; - txMap.put(key, new TxOperation(transaction)); } public synchronized void reportTxStart(final Object transaction, Object key) throws OseeCoreException { - TxOperation currentTx = txMap.get(key); - if (currentTx == null) { + TxOperation op = txMap.get(key); + if (op == null) { throw new OseeStateException("reportTxStart called for key: [%s] but reportTxCreation had not been called.", key); - } else if (currentTx.getState() != TxState.CREATED) { - OseeExceptions.wrapAndThrow(currentTx.getError()); + } else if (op.getState() != TxState.CREATED) { + OseeExceptions.wrapAndThrow(op.getError()); } - if (currentTx.getTransaction().equals(transaction)) { - currentTx.setState(TxState.RUNNING); + if (op.getTransaction().equals(transaction)) { + op.setState(TxState.RUNNING); } else { throw new OseeStateException("reportTxStart called for key [%s] but was called for incorrect transaction", key); } } public synchronized void reportTxEnd(final Object transaction, Object key) throws OseeCoreException { - TxOperation currentTx = txMap.get(key); - if (currentTx == null) { - throw new OseeStateException("reportTxEnd called for key: [%s] but reportTxCreation had not been called.", key); - } else if (currentTx.getState() != TxState.RUNNING) { + TxOperation op = txMap.get(key); + if (op == null) { + throw new OseeStateException( + "reportTxEnd called for key: [%s] but reportTxCreation had not been called. Comment [%s]", key, + transaction.toString()); + } else if (op.getState() != TxState.RUNNING) { // This is a valid case -- can add a log to detect when a reportTxEnd is called before a transaction has a chance to run } - if (currentTx.getTransaction().equals(transaction)) { + if (op.getTransaction().equals(transaction)) { txMap.put(key, null); } else { - OseeExceptions.wrapAndThrow(currentTx.getError()); + OseeExceptions.wrapAndThrow(op.getError()); } } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet.test/src/org/eclipse/osee/framework/ui/skynet/test/cases/PreviewAndMultiPreviewTest.java b/plugins/org.eclipse.osee.framework.ui.skynet.test/src/org/eclipse/osee/framework/ui/skynet/test/cases/PreviewAndMultiPreviewTest.java index ce0fb73e90d..6357cd3f7d9 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet.test/src/org/eclipse/osee/framework/ui/skynet/test/cases/PreviewAndMultiPreviewTest.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet.test/src/org/eclipse/osee/framework/ui/skynet/test/cases/PreviewAndMultiPreviewTest.java @@ -23,7 +23,6 @@ import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; import org.eclipse.osee.framework.skynet.core.artifact.PurgeArtifacts; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.render.ITemplateRenderer; import org.eclipse.osee.framework.ui.skynet.render.PresentationType; import org.eclipse.osee.framework.ui.skynet.render.RendererManager; @@ -194,8 +193,8 @@ public class PreviewAndMultiPreviewTest { @Test public void testWholeWordPreview() throws Exception { Artifact art = createArtifact(CoreArtifactTypes.TestProcedureWML, BRANCH, addPrefix("4g")); - art.persist(new SkynetTransaction(BRANCH, String.format("%s, persist on %s, guid: %s", - PreviewAndMultiPreviewTest.class.getSimpleName(), BRANCH.getName(), BRANCH.getGuid()))); + art.persist(String.format("%s, persist on %s, guid: %s", PreviewAndMultiPreviewTest.class.getSimpleName(), + BRANCH.getName(), BRANCH.getGuid())); WholeWordRenderer renderer = new WholeWordRenderer(); renderer.open(Arrays.asList(art), PresentationType.PREVIEW); } @@ -203,12 +202,12 @@ public class PreviewAndMultiPreviewTest { @Test public void testWholeWordPreviewUsingRendererManager() throws Exception { Artifact art = createArtifact(CoreArtifactTypes.TestProcedureWML, BRANCH, addPrefix("4h")); - art.persist(new SkynetTransaction(BRANCH, String.format("%s, persist on %s, guid: %s", - PreviewAndMultiPreviewTest.class.getSimpleName(), BRANCH.getName(), BRANCH.getGuid()))); + art.persist(String.format("%s, persist on %s, guid: %s", PreviewAndMultiPreviewTest.class.getSimpleName(), + BRANCH.getName(), BRANCH.getGuid())); RendererManager.openInJob(Arrays.asList(art), PresentationType.PREVIEW); } public String addPrefix(String name) { - return String.format("%s.%s", "Template", name); + return String.format("Template.%s", name); } } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java index 1447ab31d4a..8ecb6464abc 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java @@ -242,7 +242,10 @@ public class GroupExplorer extends ViewPart implements IArtifactEventListener, I MessageDialog.QUESTION, new String[] {"OK", "Cancel"}, 0); if (ed.open() == 0) { try { - UniversalGroup.addGroup(ed.getEntry(), branch); + SkynetTransaction transaction = + new SkynetTransaction(branch, GroupExplorer.class.getSimpleName() + ".handleNewGroup"); + UniversalGroup.addGroup(ed.getEntry(), branch, transaction); + transaction.execute(); treeViewer.refresh(); } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); |