Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Davis2016-03-04 22:04:34 +0000
committerSam Davis2016-03-04 22:47:42 +0000
commit488e8a7b0ace8179e78cc20ff239e8792d79505d (patch)
treede599d1be696e70b3b7d27c602649a8ca14f0975
parentf91ed1d2c19a6206b850aa52c4882416cead2d85 (diff)
downloadorg.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
-rw-r--r--org.eclipse.mylyn.reviews.core.tests/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapperTest.java23
-rw-r--r--org.eclipse.mylyn.reviews.core/src/org/eclipse/mylyn/reviews/internal/core/TaskBuildStatusMapper.java25
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();
+ }
+ };
}
}

Back to the top