Exploit Event class hierarchy when extracting properties Between when the property extraction was written and now, the events received a class hierarchy that allows to avoid DRY. We now take advantage of that. Change-Id: I95e102000e5096d69e2e64009b0e438777e5f709
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java index 8c30a0c..03bff09 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
@@ -19,6 +19,8 @@ import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.server.data.ApprovalAttribute; +import com.google.gerrit.server.data.ChangeAttribute; +import com.google.gerrit.server.data.PatchSetAttribute; import com.google.gerrit.server.events.ChangeAbandonedEvent; import com.google.gerrit.server.events.ChangeEvent; import com.google.gerrit.server.events.ChangeMergedEvent; @@ -27,6 +29,7 @@ import com.google.gerrit.server.events.DraftPublishedEvent; import com.google.gerrit.server.events.Event; import com.google.gerrit.server.events.PatchSetCreatedEvent; +import com.google.gerrit.server.events.PatchSetEvent; import com.google.gerrit.server.events.RefUpdatedEvent; import com.google.inject.Inject; @@ -72,54 +75,42 @@ } } - private Map<String,Set<String>> extractFrom(ChangeAbandonedEvent event, + private Map<String,Set<String>> extractFrom(PatchSetEvent event, Set<Property> common) { common.add(propertyFactory.create("event-type", event.type)); - common.addAll(propertyAttributeExtractor.extractFrom(event.change.get())); + ChangeAttribute change = event.change.get(); + PatchSetAttribute patchSet = event.patchSet.get(); + common.addAll(propertyAttributeExtractor.extractFrom(change)); + common.addAll(propertyAttributeExtractor.extractFrom(patchSet)); + PatchSet.Id patchSetId = newPatchSetId(change.number, patchSet.number); + return issueExtractor.getIssueIds(change.project, + patchSet.revision, patchSetId); + } + + private Map<String,Set<String>> extractFrom(ChangeAbandonedEvent event, + Set<Property> common) { common.addAll(propertyAttributeExtractor.extractFrom(event.abandoner.get(), "abandoner")); - common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet.get())); common.add(propertyFactory.create("reason", event.reason)); - PatchSet.Id patchSetId = newPatchSetId(event.change.get().number, - event.patchSet.get().number); - return issueExtractor.getIssueIds(event.change.get().project, - event.patchSet.get().revision, patchSetId); + return extractFrom((PatchSetEvent) event, common); } private Map<String,Set<String>> extractFrom(ChangeMergedEvent event, Set<Property> common) { - common.add(propertyFactory.create("event-type", event.type)); - common.addAll(propertyAttributeExtractor.extractFrom(event.change.get())); common.addAll(propertyAttributeExtractor.extractFrom(event.submitter.get(), "submitter")); - common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet.get())); - PatchSet.Id patchSetId = newPatchSetId(event.change.get().number, - event.patchSet.get().number); - return issueExtractor.getIssueIds(event.change.get().project, - event.patchSet.get().revision, patchSetId); + return extractFrom((PatchSetEvent) event, common); } private Map<String,Set<String>> extractFrom(ChangeRestoredEvent event, Set<Property> common) { - common.add(propertyFactory.create("event-type", event.type)); - common.addAll(propertyAttributeExtractor.extractFrom(event.change.get())); common.addAll(propertyAttributeExtractor.extractFrom(event.restorer.get(), "restorer")); - common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet.get())); common.add(propertyFactory.create("reason", event.reason)); - PatchSet.Id patchSetId = newPatchSetId(event.change.get().number, - event.patchSet.get().number); - return issueExtractor.getIssueIds(event.change.get().project, - event.patchSet.get().revision, patchSetId); + return extractFrom((PatchSetEvent) event, common); } 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.get())); - common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet.get())); common.addAll(propertyAttributeExtractor.extractFrom(event.uploader.get(), "uploader")); - PatchSet.Id patchSetId = newPatchSetId(event.change.get().number, - event.patchSet.get().number); - return issueExtractor.getIssueIds(event.change.get().project, - event.patchSet.get().revision, patchSetId); + return extractFrom((PatchSetEvent) event, common); } private Map<String,Set<String>> extractFrom(RefUpdatedEvent event, @@ -127,27 +118,18 @@ common.add(propertyFactory.create("event-type", event.type)); common.addAll(propertyAttributeExtractor.extractFrom(event.submitter.get(), "submitter")); common.addAll(propertyAttributeExtractor.extractFrom(event.refUpdate.get())); - return issueExtractor.getIssueIds(event.refUpdate.get().project, + return issueExtractor.getIssueIds(event.getProjectNameKey().get(), event.refUpdate.get().newRev); } private Map<String,Set<String>> extractFrom(PatchSetCreatedEvent event, Set<Property> common) { - common.add(propertyFactory.create("event-type", event.type)); - common.addAll(propertyAttributeExtractor.extractFrom(event.change.get())); - common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet.get())); common.addAll(propertyAttributeExtractor.extractFrom(event.uploader.get(), "uploader")); - PatchSet.Id patchSetId = newPatchSetId(event.change.get().number, - event.patchSet.get().number); - return issueExtractor.getIssueIds(event.change.get().project, - event.patchSet.get().revision, patchSetId); + return extractFrom((PatchSetEvent) event, common); } private Map<String,Set<String>> extractFrom(CommentAddedEvent event, Set<Property> common) { - common.add(propertyFactory.create("event-type", event.type)); - common.addAll(propertyAttributeExtractor.extractFrom(event.change.get())); - common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet.get())); common.addAll(propertyAttributeExtractor.extractFrom(event.author.get(), "commenter")); if (event.approvals != null) { for (ApprovalAttribute approvalAttribute : event.approvals.get()) { @@ -156,10 +138,7 @@ } } common.add(propertyFactory.create("comment", event.comment)); - PatchSet.Id patchSetId = newPatchSetId(event.change.get().number, - event.patchSet.get().number); - return issueExtractor.getIssueIds(event.change.get().project, - event.patchSet.get().revision, patchSetId); + return extractFrom((PatchSetEvent) event, common); } /**