Caplin Trader 4.8.0

Class: module:br/ServiceRegistryClass

module:br/ServiceRegistryClass

The ServiceRegistryClass is used to allow a given application access to application services. The ServiceRegistryClass is a static class and does not need to be constructed.

Services are typically registered or requested using an alias name, but older applications may still register and request using interfaces, which is also still supported. Applications that use aliases don't normally need to manually register services as these are created lazily upon first request, but will still need to manually register services that can't be created using a zero-arg constructor.

The ServiceRegistryClass is initialized as follows:

  1. The application invokes module:br/ServiceRegistryClass/initializeServices which causes all delayed readiness services to be created.
  2. Once module:br/ServiceRegistryClass/initializeServices has finished (once one of the call-backs fire), the application should then register any services that can't be created lazily using zero-arg constructors.
  3. The application can now start doing it's proper work.

Because blades aren't allowed to depend directly on classes in other blades, interface definitions are instead created for particular pieces of functionality, and blades can choose to register themselves as being providers of that functionality. The ServiceRegistryClass and the module:br/EventHub are both useful in this regard:

  • Many-To-One dependencies are resolved by having a single service instance available via the ServiceRegistryClass.
  • Many-To-Many dependencies are resolved by having zero or more classes register with the module:br/EventHub.

Methods

deregisterService(sIdentifier)

De-register a service that is currently registered in the ServiceRegistryClass.
Parameters:
Name Type Description
sIdentifier String The alias or interface name used to uniquely identify the service.

getService(identifier)

Retrieve the service linked to the identifier within the application. The identifier could be a service alias or a service interface.
Parameters:
Name Type Description
identifier String The alias or interface name used to uniquely identify the service.
Throws:
If no service could be found for the given identifier.
Type
Error

isServiceRegistered(identifier)

Determine whether a service has been registered for a given identifier.
Parameters:
Name Type Description
identifier String The alias or interface name used to uniquely identify the service.

legacyClear()

Resets the ServiceRegistryClass back to its initial state.

This method isn't normally called within an application, but is called automatically before each test is run.

registerService(identifier, serviceInstance)

Register an object that will be responsible for implementing the given interface within the application.
Parameters:
Name Type Description
identifier String The alias used to uniquely identify the service.
serviceInstance Object The object responsible for providing the service.
Throws:
If a service has already been registered for the given interface or if no instance object is provided.
Type
Error