public class MultiTenantStorage<T>
An abstraction to allow client code to be unaware whether we're running in
multi-tenant sharing mode. It does this by maintaining ServiceUUID specific
values in a multi-tenant sharing environment, or a single value otherwise.
Instances of the class should mostly be used to "stripe" statics in a JVM,
but can be used for certain member variables. If it's used with the latter
there should be a very good reason because the most likely scenario is that
non-static holders will already be tenant-specific. Thus making further
segregation unnecessary and also adversely affecting performance.
Called from the constructor to initialize the final valueStorage member
variable. The default is to initialize with a MultiValueStorage or
SingleValueStorage based on whether multitenancy is supportable.
Allow us to create diagnostic object if allowed,
and to have zero footprint if not in diagnostic mode.
It's important for extends class to use this pinch-point to introduce
their own Holder overrides, especially for the diagnostic alternative.