diff options
author | Sam Davis | 2016-03-04 22:04:34 +0000 |
---|---|---|
committer | Sam Davis | 2016-03-04 22:47:42 +0000 |
commit | 488e8a7b0ace8179e78cc20ff239e8792d79505d (patch) | |
tree | de599d1be696e70b3b7d27c602649a8ca14f0975 | |
parent | f91ed1d2c19a6206b850aa52c4882416cead2d85 (diff) | |
download | org.eclipse.mylyn.reviews-488e8a7b0ace8179e78cc20ff239e8792d79505d.tar.gz org.eclipse.mylyn.reviews-488e8a7b0ace8179e78cc20ff239e8792d79505d.tar.xz org.eclipse.mylyn.reviews-488e8a7b0ace8179e78cc20ff239e8792d79505d.zip |
486145: Gerrit connector gets incoming when build status changes
Change-Id: I91c4a5fd702b8788f0a1b219be90b32b9f78f0ba
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=486145
2 files changed, 43 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.reviews.core.tests/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapperTest.java b/org.eclipse.mylyn.reviews.core.tests/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapperTest.java index 4f747dff6..c48ee4cc9 100644 --- a/org.eclipse.mylyn.reviews.core.tests/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapperTest.java +++ b/org.eclipse.mylyn.reviews.core.tests/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapperTest.java @@ -12,6 +12,7 @@ package org.eclipse.mylyn.reviews.internal.core; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.util.ArrayList; @@ -27,6 +28,25 @@ import org.junit.Test; public class TaskBuildStatusMapperTest { @Test + public void attributeValueDependsOnChildren() { + TaskAttribute attribute1 = createBuildAttribute( + "https://hudson.eclipse.org/mylyn/job/gerrit-mylyn-tasks/1066/"); + TaskAttribute attribute2 = createBuildAttribute( + "https://hudson.eclipse.org/mylyn/job/gerrit-mylyn-tasks/1067/"); + assertFalse(attribute1.getValue().equals(attribute2.getValue())); + } + + private TaskAttribute createBuildAttribute(String url) { + List<BuildResult> results = new ArrayList<BuildResult>(); + final String JOB_NAME = "SameJob"; + results.add(new BuildResult(0, url, BuildStatus.STARTED, 1, JOB_NAME)); + TaskBuildStatusMapper mapper = new TaskBuildStatusMapper(results); + TaskAttribute root = createRootAttribute(); + mapper.applyTo(root); + return root; + } + + @Test public void emptyCollectionReturnsRootWithNoChildren() { List<BuildResult> results = new ArrayList<BuildResult>(); TaskBuildStatusMapper mapper = new TaskBuildStatusMapper(results); @@ -90,8 +110,7 @@ public class TaskBuildStatusMapperTest { assertEquals(BuildStatus.STARTED.toString(), firstBuildResultAttribute.getAttribute(TaskBuildStatusMapper.STATUS_ATTRIBUTE_KEY).getValue()); - TaskAttribute secondBuildResultAttribute = root - .getAttribute(TaskBuildStatusMapper.ATTR_ID_BUILD_RESULT + "1"); + TaskAttribute secondBuildResultAttribute = root.getAttribute(TaskBuildStatusMapper.ATTR_ID_BUILD_RESULT + "1"); assertNotNull(secondBuildResultAttribute); assertEquals("1", secondBuildResultAttribute.getAttribute(TaskBuildStatusMapper.BUILD_NUMBER_ATTRIBUTE_KEY).getValue()); diff --git a/org.eclipse.mylyn.reviews.core/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapper.java b/org.eclipse.mylyn.reviews.core/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapper.java index 8f252223e..c3d411f27 100644 --- a/org.eclipse.mylyn.reviews.core/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapper.java +++ b/org.eclipse.mylyn.reviews.core/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapper.java @@ -16,6 +16,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Map.Entry; +import java.util.Objects; import org.eclipse.core.runtime.Assert; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; @@ -23,6 +24,7 @@ import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper; import org.eclipse.mylyn.tasks.core.data.TaskData; import com.google.common.base.Function; +import com.google.common.collect.FluentIterable; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; @@ -39,7 +41,9 @@ public class TaskBuildStatusMapper { public static final String ATTR_ID_BUILD_RESULT = "BUILD_RESULT-"; //$NON-NLS-1$ - public static final String ATTR_TYPE_PATCH_SET = "PATCH_SET-"; + public static final String ATTR_TYPE_PATCH_SET = "PATCH_SET-"; //$NON-NLS-1$ + + public static final String KIND_PATCH_SET = "review.patch.set"; //$NON-NLS-1$ private final Iterable<BuildResult> buildResults; @@ -52,7 +56,7 @@ public class TaskBuildStatusMapper { TaskData taskData = taskAttribute.getTaskData(); TaskAttributeMapper mapper = taskData.getAttributeMapper(); - taskAttribute.getMetaData().defaults().setType(BUILD_RESULT_TYPE); + taskAttribute.getMetaData().defaults().setType(BUILD_RESULT_TYPE).setKind(TaskBuildStatusMapper.KIND_PATCH_SET); Function<BuildResult, String> groupFunction = new Function<BuildResult, String>() { @Override @@ -100,10 +104,25 @@ public class TaskBuildStatusMapper { child.getMetaData().defaults().setType(BUILD_RESULT_TYPE); mapper.setValue(child, result.getJobName()); } - + buildAttribute.setValue(hashChildAttributeValues(buildAttribute)); i++; } + taskAttribute.setValue(hashChildAttributeValues(taskAttribute)); + } + private String hashChildAttributeValues(TaskAttribute attribute) { + Object[] childValues = FluentIterable.from(attribute.getAttributes().values()) + .transform(toValue()) + .toArray(Object.class); + return Integer.toString(Objects.hash(childValues)); + } + + private static Function<TaskAttribute, Object> toValue() { + return new Function<TaskAttribute, Object>() { + public Object apply(TaskAttribute o) { + return o.getValue(); + } + }; } } |