Add handling of DraftPublishedEvent
Change-Id: I7d5d74f1d64d32a654f77375f90f42077ad055fb
diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java
index fe69773..77ef563 100644
--- a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java
+++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java
@@ -26,6 +26,7 @@
import com.google.gerrit.server.events.ChangeMergedEvent;
import com.google.gerrit.server.events.ChangeRestoredEvent;
import com.google.gerrit.server.events.CommentAddedEvent;
+import com.google.gerrit.server.events.DraftPublishedEvent;
import com.google.gerrit.server.events.PatchSetCreatedEvent;
import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.inject.Inject;
@@ -104,6 +105,18 @@
event.patchSet.revision, patchSetId);
}
+ private Map<String,Set<String>> extractFrom(DraftPublishedEvent event,
+ Set<Property> common) {
+ common.add(propertyFactory.create("event-type", event.type));
+ common.addAll(propertyAttributeExtractor.extractFrom(event.change));
+ common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet));
+ common.addAll(propertyAttributeExtractor.extractFrom(event.uploader, "uploader"));
+ PatchSet.Id patchSetId = newPatchSetId(event.change.number,
+ event.patchSet.number);
+ return issueExtractor.getIssueIds(event.change.project,
+ event.patchSet.revision, patchSetId);
+ }
+
private Map<String,Set<String>> extractFrom(RefUpdatedEvent event,
Set<Property> common) {
common.add(propertyFactory.create("event-type", event.type));
@@ -199,6 +212,8 @@
associations = extractFrom((ChangeRestoredEvent) event, common);
} else if (event instanceof CommentAddedEvent) {
associations = extractFrom((CommentAddedEvent) event, common);
+ } else if (event instanceof DraftPublishedEvent) {
+ associations = extractFrom((DraftPublishedEvent) event, common);
} else if (event instanceof PatchSetCreatedEvent) {
associations = extractFrom((PatchSetCreatedEvent) event, common);
} else if (event instanceof RefUpdatedEvent) {
diff --git a/hooks-its/src/main/resources/Documentation/config.md b/hooks-its/src/main/resources/Documentation/config.md
index 2745d9c..2593171 100644
--- a/hooks-its/src/main/resources/Documentation/config.md
+++ b/hooks-its/src/main/resources/Documentation/config.md
@@ -168,6 +168,7 @@
* <<event-properties-ChangeMergedEvent,ChangeMergedEvent>>
* <<event-properties-ChangeRestoredEvent,ChangeRestoredEvent>>
* <<event-properties-CommentAddedEvent,CommentAddedEvent>>
+* <<event-properties-DraftPublishedEvent,DraftPublishedEvent>>
* <<event-properties-PatchSetCreatedEvent,PatchSetCreatedEvent>>
* <<event-properties-RefUpdatedEvent,RefUpdatedEvent>>
* <<event-properties-change,Common properties for events on a change>>
@@ -270,6 +271,19 @@
added for, and it's most recent <<event-properties-patch-set,patch
set>>.
+[[event-properties-DraftPublishedEvent]]
+DraftPublishedEvent
+^^^^^^^^^^^^^^^^^^^
+
+'event'::
+ +com.google.gerrit.server.events.DraftPublishedEvent+
+'event-type'::
+ +draft-published+
+
+In addition to the above properties, the event also provides
+properties for the uploaded <<event-properties-patch-set,patch set>>,
+and the <<event-properties-change,change>> it belongs to.
+
[[event-properties-PatchSetCreatedEvent]]
PatchSetCreatedEvent
^^^^^^^^^^^^^^^^^^^
diff --git a/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java b/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java
index 421038d..dda4173 100644
--- a/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java
+++ b/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java
@@ -33,6 +33,7 @@
import com.google.gerrit.server.events.ChangeMergedEvent;
import com.google.gerrit.server.events.ChangeRestoredEvent;
import com.google.gerrit.server.events.CommentAddedEvent;
+import com.google.gerrit.server.events.DraftPublishedEvent;
import com.google.gerrit.server.events.PatchSetCreatedEvent;
import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.inject.Guice;
@@ -276,6 +277,41 @@
eventHelper(event, "CommentAddedEvent", "comment-added", common, true);
}
+ public void testDraftPublishedEvent() {
+ DraftPublishedEvent event = new DraftPublishedEvent();
+
+ ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ event.change = changeAttribute;
+ Property propertyChange = createMock(Property.class);
+ expect(propertyAttributeExtractor.extractFrom(changeAttribute))
+ .andReturn(Sets.newHashSet(propertyChange));
+
+ AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ event.uploader = accountAttribute;
+ Property propertySubmitter = createMock(Property.class);
+ expect(propertyAttributeExtractor.extractFrom(accountAttribute,
+ "uploader")).andReturn(Sets.newHashSet(propertySubmitter));
+
+ PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ event.patchSet = patchSetAttribute;
+ Property propertyPatchSet = createMock(Property.class);
+ expect(propertyAttributeExtractor.extractFrom(patchSetAttribute))
+ .andReturn(Sets.newHashSet(propertyPatchSet));
+
+ changeAttribute.project = "testProject";
+ changeAttribute.number = "176";
+ patchSetAttribute.revision = "testRevision";
+ patchSetAttribute.number = "3";
+
+ Set<Property> common = Sets.newHashSet();
+ common.add(propertyChange);
+ common.add(propertySubmitter);
+ common.add(propertyPatchSet);
+
+ eventHelper(event, "DraftPublishedEvent", "draft-published", common,
+ true);
+ }
+
public void testPatchSetCreatedEvent() {
PatchSetCreatedEvent event = new PatchSetCreatedEvent();