Installing the Watchlist Service
The Watchlist Service provides server-hosted, persisted watchlists that can be shared between a user’s devices.
To use the Watchlist Service in your client application, use Caplin Trader’s Watchlist API.
Transformer hosted watchlists are available from version 6.2.2 of the CPB_WatchlistService blade. Prior to version 6.2.2, watchlist configurations were persisted to the Webcentric database. Support for Webcentric-persisted watchlists is disabled by default from version 6.2.2 of the CPB_WatchlistService blade, but may be re-enabled if required.
Requirements
To use Transformer hosted watchlists, you will need:
-
Transformer 6.2.3 or greater
-
CPB_WatchlistService 6.2.2 or greater
Installing the service
To install Transformer’s Watchlist Service:
Activate the Persistence Service
The Watchlist Service is dependent on the Persistence Service, which is included with version 6.2.3 and later of Transformer.
See Activating the Persistence Service, in conjunction with the notes below:
-
Of the Persistence Service’s two blades, only the PersistenceService blade must be activated.
-
With regard to the Persistence Service’s database schema:
-
the size of the 'key' column must be at least 100 characters.
-
the size of the 'value' column must be calculated with regard to the maximum number of watchlist entries supported by your applications. As a rough guide, a watchlist of eight currency pairs serialises to approximately 350 characters.
-
Deploy the Watchlist Service blade
The Watchlist Service is packaged as an optional Caplin-supplied Service blade, CPB_WatchlistService-<version>.zip.
For instructions on how to deploy a service blade, see Deploy a Caplin supplied blade.
Re-enable support for Webcentric-persisted watchlists
Support for Webcentric-persisted watchlists is disabled by default from version 6.2.0 of the Watchlist Service. If you intend to run both Webcentric and Transformer persisted watchlists during a transition period, you must re-enable support for Webcentric-persisted watchlists.
To re-enable support for Webcentric-persisted watchlists, edit the file <Framework-root>/global_config/overrides/WatchlistService/blade_config/watchlist.conf
and set the configuration macro USE_COMPATIBLE_WATCHLIST
to ENABLED
.
define USE_COMPATIBLE_WATCHLIST ENABLED
Configure permissioning
To allow users to interact with the Watchlist Service, configure Liberator’s Permissioning Service according to the specification below. For more information about permissioning, see User Authentication and Permissioning.
Rules
Define a rule that triggers when users contribute messages to the watchlist control subject. The strings used for the 'permission namespace' and 'action' are arbitrary; you are free to customise them to your own naming scheme.
Message Subject | Rule Type | Permission Namespace | Action | Action Ref | Product Ref |
---|---|---|---|---|---|
^/PRIVATE/WATCHLIST/%u/CONTROL |
WRITE |
WATCHLIST |
WATCHLIST_OPERATION |
- |
ALL_PRODUCTS |
Permissions
Assign users the following permissions.
Product set | Permission Namespace | Action | Authorisation |
---|---|---|---|
.* |
WATCHLIST |
WATCHLIST_OPERATION |
ALLOW |
^/PRIVATE/WATCHLIST/%u/.* |
- |
VIEW |
ALLOW |
^/FILTER/PRIVATE/WATCHLIST/%u/.* |
- |
VIEW |
ALLOW |
Java Permissioning Integration API example
See the code below for an example of how to set the rules and permissions using the Java Permissioning Integration API.
// Rules
permissioningDataSource.createActionRule("^/PRIVATE/WATCHLIST/%u/CONTROL",
"WATCHLIST", "WATCHLIST_OPERATION", Constants.ALL_PRODUCTS);
// WRITE permissions
java.util.HashSet<String> allProducts = new java.util.HashSet<String>();
allProducts.add(".*");
user.permit(allProducts, "WATCHLIST", "WATCHLIST_OPERATION");
// VIEW permissions
java.util.HashSet<String> viewProductSets = new java.util.HashSet<String>();
viewProductSets.add("^/PRIVATE/WATCHLIST/%u/.*");
viewProductSets.add("^/FILTER/PRIVATE/WATCHLIST/%u/.*");
user.permit(viewProductSets, Constants.DEFAULT_PERMISSION_NAMESPACE, "VIEW");
See also: