diff options
author | megumi.telles | 2015-10-22 15:10:18 +0000 |
---|---|---|
committer | megumi.telles | 2015-10-23 17:59:57 +0000 |
commit | 1ca04e55c39eefd02db757b61b88d051ca25c099 (patch) | |
tree | aa279b1a799846cbd50f3fb4e049f55d78502316 /plugins | |
parent | 32c45f9e56a579225aef5b0f43ec3b95d8cc5c9d (diff) | |
download | org.eclipse.osee-1ca04e55c39eefd02db757b61b88d051ca25c099.tar.gz org.eclipse.osee-1ca04e55c39eefd02db757b61b88d051ca25c099.tar.xz org.eclipse.osee-1ca04e55c39eefd02db757b61b88d051ca25c099.zip |
bug[ats_ATS250883]: Fix exception during 'Create TRAX Related Action'
Change-Id: I76dd0ca6e6bbf1d4c1b4e326c256471ece68b927
Diffstat (limited to 'plugins')
2 files changed, 32 insertions, 14 deletions
diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java index 38b2b82dde4..0095b44862e 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImplTest.java @@ -29,6 +29,7 @@ import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionService; import org.eclipse.osee.ats.api.workdef.IAtsWorkDefinitionStore; import org.eclipse.osee.ats.api.workdef.IAttributeResolver; import org.eclipse.osee.ats.api.workdef.IWorkDefinitionMatch; +import org.eclipse.osee.ats.api.workflow.IAtsTask; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService; import org.eclipse.osee.ats.core.util.CacheProvider; @@ -49,6 +50,7 @@ import org.mockito.MockitoAnnotations; public class AtsWorkDefinitionAdminImplTest { private static final String MyPeerToPeerWorkDefId = "myPeerToPeerWorkDef"; + private static final String MyTaskWorkDefId = "WorkDef_Task_Test_Review"; // @formatter:off @Mock IAtsTeamDefinition topTeamDef; @@ -63,9 +65,11 @@ public class AtsWorkDefinitionAdminImplTest { @Mock IAtsTeamWorkflow teamWf; @Mock IAtsWorkDefinition defaultPeerToPeerWorkDef; @Mock IAtsWorkDefinition myPeerToPeerWorkDef; + @Mock IAtsWorkDefinition myTaskWorkDef; @Mock ITeamWorkflowProvidersLazy teamWorkflowProviders; @Mock CacheProvider<AtsWorkDefinitionCache> cacheProvider; @Mock IAttributeResolver attributeResolver; + @Mock IAtsTask task; private AtsWorkDefinitionAdminImpl workDefAmin; @@ -87,8 +91,8 @@ public class AtsWorkDefinitionAdminImplTest { AtsWorkDefinitionCache cache = new AtsWorkDefinitionCache(); when(cacheProvider.get()).thenReturn(cache); - workDefAmin = new AtsWorkDefinitionAdminImpl(cacheProvider, workDefinitionService, attributeResolver, - teamWorkflowProviders); + workDefAmin = + new AtsWorkDefinitionAdminImpl(cacheProvider, workDefinitionService, attributeResolver, teamWorkflowProviders); } @Test @@ -221,4 +225,16 @@ public class AtsWorkDefinitionAdminImplTest { assertEquals(defaultPeerToPeerWorkDef, match.getWorkDefinition()); } + @Test + public void testGetWorkDefinitionForTaskWithSpecifiedId() throws Exception { + List<Object> attrValues = new ArrayList<>(); + attrValues.add(MyTaskWorkDefId); + + when(attributeResolver.getAttributeValues(task, AtsAttributeTypes.WorkflowDefinition)).thenReturn(attrValues); + when(workDefinitionService.getWorkDef(eq(MyTaskWorkDefId), any(XResultData.class))).thenReturn(myTaskWorkDef); + + IWorkDefinitionMatch match = workDefAmin.getWorkDefinitionForTask(task); + assertEquals(match.getWorkDefinition(), myTaskWorkDef); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java index d72f98c9ecf..dff66799174 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/AtsWorkDefinitionAdminImpl.java @@ -202,6 +202,7 @@ public class AtsWorkDefinitionAdminImpl implements IAtsWorkDefinitionAdmin { if (!attributeValues.isEmpty()) { workFlowDefId = (String) attributeValues.iterator().next(); } + if (Strings.isValid(workFlowDefId)) { IWorkDefinitionMatch match = getWorkDefinition(workFlowDefId); if (match.isMatched()) { @@ -264,19 +265,20 @@ public class AtsWorkDefinitionAdminImpl implements IAtsWorkDefinitionAdmin { * @param task - if null, returned WorkDefinition will be proposed; else returned will be actual */ private IWorkDefinitionMatch getWorkDefinitionForTask(IAtsTeamWorkflow teamWf, IAtsTask task) throws OseeCoreException { - IWorkDefinitionMatch match = new WorkDefinitionMatch(); - for (ITeamWorkflowProvider provider : TeamWorkflowProviders.getTeamWorkflowProviders()) { - String workFlowDefId = provider.getRelatedTaskWorkflowDefinitionId(teamWf); - if (Strings.isValid(workFlowDefId)) { - match = getWorkDefinition(workFlowDefId); - match.addTrace( - (String.format("from provider [%s] for id [%s]", provider.getClass().getSimpleName(), workFlowDefId))); - break; - } - } + // If task specifies it's own workflow id, use it + IWorkDefinitionMatch match = + task == null ? new WorkDefinitionMatch() : getWorkDefinitionFromArtifactsAttributeValue(task); if (!match.isMatched() && task != null) { - // If task specifies it's own workflow id, use it - match = getWorkDefinitionFromArtifactsAttributeValue(task); + for (ITeamWorkflowProvider provider : TeamWorkflowProviders.getTeamWorkflowProviders()) { + String workFlowDefId = provider.getRelatedTaskWorkflowDefinitionId(teamWf); + attributeResolver.getSoleAttributeValue(task.getStoreObject(), AtsAttributeTypes.WorkflowDefinition, null); + if (Strings.isValid(workFlowDefId)) { + match = getWorkDefinition(workFlowDefId); + match.addTrace((String.format("from provider [%s] for id [%s]", provider.getClass().getSimpleName(), + workFlowDefId))); + break; + } + } } if (!match.isMatched()) { // Else If parent SMA has a related task definition workflow id specified, use it |