Package examples

Class TieringAuthenticator

  • All Implemented Interfaces:
    Authenticator

    public class TieringAuthenticator
    extends java.lang.Object
    implements Authenticator

    A simple Authenticator implementation that demonstrates: - mapping of requested symbols onto different underlying symbols (at request time) - dynamic mapping of subscribed symbols (at any time) - a naive example of underlying symbols being altered at run-time

    • Constructor Detail

      • TieringAuthenticator

        public TieringAuthenticator()
    • Method Detail

      • stripCurrencyPair

        public static java.lang.String stripCurrencyPair​(java.lang.String subscription)
        Helper method to extract the currency pair from a subscription symbol.
        Parameters:
        subscription - An FX subscription
        Returns:
        The currency pair associated with the passed in symbol
      • stripBranch

        public java.lang.String stripBranch​(java.lang.String subscription)
        Helper method to extract the branch from a subscription symbol.
        Parameters:
        subscription - An FX subscription
        Returns:
        The currency pair associated with the passed in symbol
      • stripAmount

        public int stripAmount​(java.lang.String subscription)
        Helper method to extract the amount from a subscription symbol.
        Parameters:
        subscription - An FX subscription
        Returns:
        The currency pair associated with the passed in symbol
      • changeTiers

        public void changeTiers()
        NOTE: This is a naive algorithm to change the tier values from one set to another, (and back again next time) In a production system this would be achieved by the receipt of permission objects sent from a DataSource. For the purposes of this example, this code should suffice to demonstrate that it is possible to dynamically change mappings at runtime. The cache will maintain tier information for branch and currency pair combination. The key for each tier is formed from the BRANCH|CURRENCY_PAIR The 'value' for each tier is an array of integers containing the maximum amount for each tier, in USD Example: For EURUSD and BRANCHA combination, following tiers could be available 0 - 1000 1 - 5000 2 - 10000
      • calculateMappedObject

        public java.lang.String calculateMappedObject​(java.lang.String subscription)
        Given an FX subscription, extract the branch and currency pair, and use them to convert the associated amount into a tier. For example, "EURUSD|CUSTA|BRANCHA|SP|1000|EUR" may map to "BRANCHA|EURUSD|Tier1"
        Parameters:
        subscription - An FX subscription
        Returns:
        A mapping for the passed in subscription, to reduce the number of unique objects in the system.
      • initialise

        public void initialise​(SessionManager sessionManager,
                               DelayedResultReceiver delayedResultReceiver,
                               ServerNode serverNode,
                               java.lang.String loggerName)
        Description copied from interface: Authenticator

        Called on startup of the Liberator Auth Module.

        Allows initialisation of required resources and connections. e.g. reading configuration files, connecting to a database or other external application, or constructing internal data structures.

        The logger name can be used for obtaining the native logger java.util.logging.Logger.getLogger(String). This logger will log messages to the Liberator's auth log file.

        Specified by:
        initialise in interface Authenticator
        Parameters:
        sessionManager - a SessionManager instance that can be used for invalidating and ejecting user sessions in the Liberator.
        delayedResultReceiver - a DelayedResultReceiver instance that can be used for sending delayed authentication results after an AuthenticationResult.DELAYED is used.
        serverNode - a ServerNode instance that provides access to information about the server and its session count.
        loggerName - the name of the logger that provides native logging output to the Liberator's auth log file (by default auth-rttpd.log).
      • releaseUser

        public AuthenticationResult releaseUser​(UserSession session)
        Description copied from interface: Authenticator

        This method will be called when the Liberator deletes the user session due to logout or timeout.

        Use this call to clean-up any resources that may have been allocated to a session.

        Specified by:
        releaseUser in interface Authenticator
        Parameters:
        session - the UserSession object for the released session.
        Returns:
        an AuthenticationResult instance - this is currently ignored, so use only AuthenticationResult.OK.
      • newObject

        public AuthenticationResult newObject​(RTTPObject object,
                                              RTTPObject parent)
        Description copied from interface: Authenticator

        This method is called when a new object is created in the Liberator.

        This is a notification method that can be used, for example, to pre-cache authentication information for the object. It will be called at the point of object creation in the Liberator, regardless of whether this object is created by a broadcast datasource, as the result of a user request or by an RTTP object creation by a user

        Specified by:
        newObject in interface Authenticator
        Parameters:
        object - the new RTTPObject that has been created.
        parent - the parent object of the newly created object, or null if the new object is at the root level in the Liberator.
        Returns:
        an AuthenticationResult instance - this is currently ignored, so use only AuthenticationResult.OK.
      • releaseObject

        public AuthenticationResult releaseObject​(RTTPObject object)
        Description copied from interface: Authenticator

        This method will be called when the Liberator deletes an object.

        Use this call to clean-up any resources that may have been allocated to the object.

        Specified by:
        releaseObject in interface Authenticator
        Parameters:
        object - the RTTPObject that has been deleted.
        Returns:
        an AuthenticationResult instance - this is currently ignored, so use only AuthenticationResult.OK.
      • requestObject

        public AuthenticationResult requestObject​(UserSession session,
                                                  RTTPObject object)
        Description copied from interface: Authenticator

        This method will be called when a user's session becomes subscribed to an object.

        A user session may become subscribed to the same object multiple times. In this case there will be multiple calls to this method and corresponding calls to discardObject for each discard the session performs

        N.B. This method will be called after a successful checkRead call has completed

        Specified by:
        requestObject in interface Authenticator
        Parameters:
        session - the user's session. This will be the same session object that is passed on the Authenticator.checkUser(com.caplin.server.auth.UserSession) call when the user logs in.
        object - the RTTPObject to which the user is now subscribed.
        Returns:
        an AuthenticationResult instance - this is currently ignored, so use only AuthenticationResult.OK.
      • checkUpdate

        public AuthenticationResult checkUpdate​(UserSession session,
                                                RTTPObject object,
                                                java.lang.String data)
        Description copied from interface: Authenticator

        Called on every update to an object (currently only news headline objects) to allow the Authenticator to authenticate each update based on content.

        Allows an Authenticator to perform permissioning on news headlines / alerts. Can be useful where only certain content is to be sent to particular users or groups of users.

        Specified by:
        checkUpdate in interface Authenticator
        Parameters:
        session - the user's session. This will be the same session object that is passed on the Authenticator.checkUser(com.caplin.server.auth.UserSession) call when the user logs in.
        object - the RTTPObject that has been updated (currently only news headline objects).
        data - the content of the update to the object.
        Returns:
        either AuthenticationResult.OK or AuthenticationResult.DENY.
      • globalPermissionUpdate

        public void globalPermissionUpdate​(RTTPObject object,
                                           java.lang.String key,
                                           java.util.Map<java.lang.String,​java.lang.String> fieldValues,
                                           PermissionUpdateType type)
        Description copied from interface: Authenticator

        Called on every update to a global permission object to allow the Authenticator to receive structured control messages.

        Specified by:
        globalPermissionUpdate in interface Authenticator
        Parameters:
        object - the RTTPObject that has been updated.
        key - The permission key that has been updated
        fieldValues - The field/value pairs for this permission
        type - an enum value specifying the type of update.
      • shutdown

        public void shutdown()
        Description copied from interface: Authenticator

        Called when the Liberator is shutting down.

        Allows clean shutdown of connections, files and resources by the Authenticator.

        Specified by:
        shutdown in interface Authenticator