Page MenuHomePhabricator

Implement interfaces for domain events
Closed, ResolvedPublic

Description

Background

The domain events feature depends on extensions implementing methods like handlePageDeletedEvent, in order to subscribe to the events. The initial implementation did not contain any interfaces prescribing how those methods looked like – extensions just had to "know" and implement the correct one. Since that is not sustainable in the long term, those interfaces were added in T387012 and are now usable.

Extensions (like GrowthExperiments) that started using domain events very early on do not implement those interfaces, which has two issues:

  • it is easy to accidentally change the signature of the method, breaking the feature without "something" (the interface) complaining about that,
  • developers often learn by copying; if a well-established extension is not implementing the interfaces, it increases the risk of other extensions not doing it as well
Solution

Audit usages of domain events, adding implements XxxListener as appropriate.

Event Timeline

Change #1176764 had a related patch set uploaded (by Urbanecm; author: Urbanecm):

[mediawiki/extensions/GrowthExperiments@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176764

Change #1176765 had a related patch set uploaded (by Urbanecm; author: Urbanecm):

[mediawiki/extensions/CommunityConfiguration@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176765

Change #1176766 had a related patch set uploaded (by Urbanecm; author: Urbanecm):

[mediawiki/extensions/Gadgets@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176766

Change #1176767 had a related patch set uploaded (by Urbanecm; author: Urbanecm):

[mediawiki/extensions/Linter@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176767

Change #1176768 had a related patch set uploaded (by Urbanecm; author: Urbanecm):

[mediawiki/extensions/Wikistories@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176768

Change #1176768 merged by jenkins-bot:

[mediawiki/extensions/Wikistories@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176768

Change #1176766 merged by jenkins-bot:

[mediawiki/extensions/Gadgets@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176766

Change #1176765 merged by jenkins-bot:

[mediawiki/extensions/CommunityConfiguration@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176765

Change #1176764 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176764

Change #1176767 merged by jenkins-bot:

[mediawiki/extensions/Linter@master] Implement domain events interfaces

https://gerrit.wikimedia.org/r/1176767