* Consolidate various duplicate docs to the main entry point.
Especially the duplication that followed after ExternalStoreFactory
and ExternalStoreAccess were introduced with ExternalStore
left as deprecated wrapper.
* Officially mark ExternalStoreFactory as internal, pointing
to ExternalStoreAccess instead. And document why the latter exists,
since it seems all its methods could trivially move to the factory
class. Follows-up I40c3b553, where it was explained that the factory
is meant to be an internal implementation detail, with the access
class meant to resemble ExternalStoreMedium.
* Use consistent terms for "protocol", "location" and "object"
(reduce use of words like medium, backend, type, blob, revision,
etc. within this code).
* Document that ExternalStore is fundamentally designed as an
append-only store (per T247383).
Bug: T247383
Change-Id: I1094af7d35a14f9e47b8791f3e4cc888e8cbfc7f
Exceptions classes are nearly always value objects, and should in most
cases by newable.
Bug: T247862
Change-Id: I4faa8ec6ea8bc44086cfc8075b32d10eea61e9df
* Inject settings and global instances as dependencies to the
ExternalStoreMedium instances. This includes the local wiki
domain, so that wfWikiId() calls are not scattered around.
* Create ExternalStoreAccess service for read/write logic.
* Deprecate the ExternalStore wrapper methods.
* Add some exception cases for bogus store URLs are used instead
of just giving PHP warnings and failing later.
* Make moveToExternal.php require the type/protocol to decide
which ExternalStoreMedium to use instead of assuming "DB".
* Convert logging calls to use LoggerInterface.
Change-Id: I40c3b5534fc8a31116c4c5eb64ee6e4903a6197a