Homec4science

Modularize application transactions in Paste, mostly

Authored by epriestley <git@epriestley.com> on Jun 10 2016, 01:00.

Description

Modularize application transactions in Paste, mostly

Summary:
Ref T9789. Transaction and Editor classes are the last major pieces of infrastructure that haven't been fully modularized.

Some of the specific issues are:

  • Editor classes rely on a bunch of instanceof stuff in the base class to pick up transaction types like "subscribe", "projects", etc. Instead, applications should be adding these, and third-party applications should be able to add them.
  • Code is spread across Transaction and Editor classes somewhat oddly. For example, generating old/new values would probably make more sense at the Transaction level, but it currently exists at the Editor level.
  • Both types of classes have a lot of functions based on switch() statements, which require a ton of boilerplate and are just generally kind of hard to work with.

This creates classes for each type of transaction, and moves almost all of the logic to them. These classes are simpler and more focused than the old stuff was, and can organize related code better.

This starts inching toward defining CoreTransactions for features shared across applications. It only defines the "Create" transaction so far, but at some point I plan to move all the other shared transactions to Core and let them control which objects they're available for.

Test Plan:

  • Created pastes with web UI and API.
  • Edited all paste properites.
  • Archived/activated.
  • Verified files got reasonable names.
  • Reviewed timeline and feed.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T9789

Differential Revision: https://secure.phabricator.com/D16111

Details

Committed
epriestley <git@epriestley.com>Jun 14 2016, 15:13
Pushed
aubortJan 31 2017, 17:16
Parents
rPHd68b2cc0e4c4: Fix construction of default settings for users with no settings at all
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPH33ec855449dd: Modularize application transactions in Paste, mostly (authored by epriestley <git@epriestley.com>).Jun 14 2016, 15:13