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();