Context
The NakedObjectContext provide access to the main components of the NOF. If the system is started in a multi-user mode then the context will hold specific components for specific execution contexts, allowing the same process to access the same components and different processes to access unique instances.
Each execution context will have its own Persistor, Message Broker and Update Notifier.
The Reflector and Configuration are shared among all execution contexts.
Persistor
During startup the persistor is given a set of service objects. During intialisation the persistor must determine the OIDs for these service objects. If the persistor does not know about a service (by its ID) from a previous run then it must generate an OID for the service and persist that with the ID of the service. This allows references to be held persistently to service objects despite the fact that they are singletons.
Naked objects
Identity map
Any object that has identity (whether it is persisted or not) must be registered with the identity map. This maps two relationships: domain objects to proxies and OIDs to proxies.
Whenever a domain object is handled by the system, and before a proxy is created, it must be checked against the identity map and if it exists the proxy already in the identity map must be used instead of creating a new proxy.