The Yard represents a local cache for {@link Representation}s of the Entities and Symbols managed by a referenced site.
Referenced Sites need to provide the configuration if there representations should be cached locally. This is done by using one of the defined {@link CacheStrategy}.
The Idea is not to have one big Yard that caches all the representations, but to provide the possibility to use different caches. This means, that each {@link Site} can have its own Yard instance. Howeverseveral Sites might also use the same Yard.
The {@link YardManager} is an singleton services that manages the differentYard instances and provides an central point of access for the {@link Entityhub}and the {@link SiteManager}.
This should also allow for implementing Yards that are based on
- Indexes generated by dumps of the referred Site
- local installations of the software used by the referred site
- and so on ...
TODO: The framework need to provide a special Yard for storing {@link Symbol}and {@link EntityMapping} information. This Yard is currently referenced asEntityhub-Yard. Do we need also a special API for this Yard? One could still provide a "default" implementation that implements this interface based on a Component that provides the normal {@link Yard} service.
Side note: The name yard was chosen as name because in farming "yard" refers to a piece of enclosed land for farm animals or other agricultural purpose and the storage component of the entityhub does the same thing for Entities.
@author Rupert Westenthaler