Class LocalhostSplitClient

  • All Implemented Interfaces:
    SplitClient

    public final class LocalhostSplitClient
    extends Object
    implements SplitClient
    An implementation of SplitClient that considers all partitions passed in the constructor to be 100% on for all users, and any other split to be 100% off for all users. This implementation is useful for using Codigo in localhost environment.
    Author:
    adil
    • Method Detail

      • getTreatment

        public String getTreatment​(String key,
                                   String split)
        Description copied from interface: SplitClient
        Returns the treatment to show this key for this feature. The set of treatments for a feature can be configured on the Split web console.

        This method returns the string 'control' if:

        1. Any of the parameters were null
        2. There was an exception in evaluating the treatment
        3. The SDK does not know of the existence of this feature
        4. The feature was deleted through the web console.
        'control' is a reserved treatment (you cannot create a treatment with the same name) to highlight these exceptional circumstances.

        The sdk returns the default treatment of this feature if:

        1. The feature was killed
        2. The key did not match any of the conditions in the feature roll-out plan
        The default treatment of a feature is set on the Split web console.

        This method does not throw any exceptions. It also never returns null.

        Specified by:
        getTreatment in interface SplitClient
        Parameters:
        key - a unique key of your customer (e.g. user_id, user_email, account_id, etc.) MUST not be null.
        split - the feature we want to evaluate. MUST NOT be null.
        Returns:
        the evaluated treatment, the default treatment of this feature, or 'control'.
      • getTreatment

        public String getTreatment​(String key,
                                   String split,
                                   Map<String,​Object> attributes)
        Description copied from interface: SplitClient
        This method is useful when you want to determine the treatment to show to an customer (user, account etc.) based on an attribute of that customer instead of it's key.

        Examples include showing a different treatment to users on trial plan vs. premium plan. Another example is to show a different treatment to users created after a certain date.

        Specified by:
        getTreatment in interface SplitClient
        Parameters:
        key - a unique key of your customer (e.g. user_id, user_email, account_id, etc.) MUST not be null.
        split - the feature we want to evaluate. MUST NOT be null.
        attributes - of the customer (user, account etc.) to use in evaluation. Can be null or empty.
        Returns:
        the evaluated treatment, the default treatment of this feature, or 'control'.
      • getTreatment

        public String getTreatment​(Key key,
                                   String split,
                                   Map<String,​Object> attributes)
        Description copied from interface: SplitClient
        To understand why this method is useful, consider the following simple Split as an example: if user is in segment employees then split 100%:on else if user is in segment all then split 20%:on,80%:off There are two concepts here: matching and bucketing. Matching refers to ‘user is in segment employees’ or ‘user is in segment all’ whereas bucketing refers to ‘100%:on’ or ‘20%:on,80%:off’. By default, the same customer key is used for both matching and bucketing. However, for some advanced use cases, you may want to use different keys. For such cases, use this method. As an example, suppose you want to rollout to percentages of users in specific accounts. You can achieve that by matching via account id, but bucketing by user id. Another example is when you want to ensure that a user continues to get the same treatment after they sign up for your product that they used to get when they were simply a visitor to your site. In that case, before they sign up, you can use their visitor id for both matching and bucketing, but post log-in you can use their user id for matching and visitor id for bucketing.
        Specified by:
        getTreatment in interface SplitClient
        Parameters:
        key - the matching and bucketing keys. MUST NOT be null.
        split - the feature we want to evaluate. MUST NOT be null.
        attributes - of the entity (user, account etc.) to use in evaluation. Can be null or empty.
        Returns:
        the evaluated treatment, the default treatment of this feature, or 'control'.
      • getTreatmentWithConfig

        public SplitResult getTreatmentWithConfig​(String key,
                                                  String split)
        Description copied from interface: SplitClient
        Same as SplitClient.getTreatment(String, String) but it returns the configuration associated to the matching treatment if any. Otherwise {@link SplitResult.configurations()} will be null.

        Examples include showing a different treatment to users on trial plan vs. premium plan. Another example is to show a different treatment to users created after a certain date.

        Specified by:
        getTreatmentWithConfig in interface SplitClient
        Parameters:
        key - a unique key of your customer (e.g. user_id, user_email, account_id, etc.) MUST not be null.
        split - the feature we want to evaluate. MUST NOT be null.
        Returns:
        SplitResult containing the evaluated treatment (the default treatment of this feature, or 'control') and a configuration associated to this treatment if set.
      • getTreatmentWithConfig

        public SplitResult getTreatmentWithConfig​(String key,
                                                  String split,
                                                  Map<String,​Object> attributes)
        Description copied from interface: SplitClient
        Same as SplitClient.getTreatment(String, String, Map) but it returns the configuration associated to the matching treatment if any. Otherwise {@link SplitResult.configurations()} will be null.

        Examples include showing a different treatment to users on trial plan vs. premium plan. Another example is to show a different treatment to users created after a certain date.

        Specified by:
        getTreatmentWithConfig in interface SplitClient
        Parameters:
        key - a unique key of your customer (e.g. user_id, user_email, account_id, etc.) MUST not be null.
        split - the feature we want to evaluate. MUST NOT be null.
        attributes - of the customer (user, account etc.) to use in evaluation. Can be null or empty.
        Returns:
        SplitResult containing the evaluated treatment (the default treatment of this feature, or 'control') and a configuration associated to this treatment if set.
      • getTreatmentWithConfig

        public SplitResult getTreatmentWithConfig​(Key key,
                                                  String split,
                                                  Map<String,​Object> attributes)
        Description copied from interface: SplitClient
        Same as SplitClient.getTreatment(Key, String, Map) but it returns the configuration associated to the matching treatment if any. Otherwise {@link SplitResult.configurations()} will be null.
        Specified by:
        getTreatmentWithConfig in interface SplitClient
        Parameters:
        key - the matching and bucketing keys. MUST NOT be null.
        split - the feature we want to evaluate. MUST NOT be null.
        attributes - of the entity (user, account etc.) to use in evaluation. Can be null or empty.
        Returns:
        SplitResult containing the evaluated treatment (the default treatment of this feature, or 'control') and a configuration associated to this treatment if set.
      • destroy

        public void destroy()
        Description copied from interface: SplitClient
        Destroys the background processes and clears the cache, releasing the resources used by the any instances of SplitClient or SplitManager generated by the client's parent SplitFactory
        Specified by:
        destroy in interface SplitClient
      • track

        public boolean track​(String key,
                             String trafficType,
                             String eventType)
        Description copied from interface: SplitClient
        Enqueue a new event to be sent to split data collection services Example: client.track(“account”, “Split Software”, “checkout”)
        Specified by:
        track in interface SplitClient
        Parameters:
        key - the identifier of the entity
        trafficType - the type of the event
        eventType - the type of the event
        Returns:
        true if the track was successful, false otherwise
      • track

        public boolean track​(String key,
                             String trafficType,
                             String eventType,
                             double value)
        Description copied from interface: SplitClient
        Enqueue a new event to be sent to split data collection services Example: client.track(“account”, “Split Software”, “checkout”, 200.00)
        Specified by:
        track in interface SplitClient
        Parameters:
        key - the identifier of the entity
        trafficType - the type of the event
        eventType - the type of the event
        value - the value of the event
        Returns:
        true if the track was successful, false otherwise
      • track

        public boolean track​(String key,
                             String trafficType,
                             String eventType,
                             Map<String,​Object> properties)
        Description copied from interface: SplitClient
        Enqueue a new event to be sent to split data collection services Example: client.track(“account”, “Split Software”, “checkout”, Collections.singletonMap("age", 23))
        Specified by:
        track in interface SplitClient
        Parameters:
        key - the identifier of the entity
        trafficType - the type of the event
        eventType - the type of the event
        Returns:
        true if the track was successful, false otherwise
      • track

        public boolean track​(String key,
                             String trafficType,
                             String eventType,
                             double value,
                             Map<String,​Object> properties)
        Description copied from interface: SplitClient
        Enqueue a new event to be sent to split data collection services Example: client.track(“account”, “Split Software”, “checkout”, 123, Collections.singletonMap("age", 23))
        Specified by:
        track in interface SplitClient
        Parameters:
        key - the identifier of the entity
        trafficType - the type of the event
        eventType - the type of the event
        value - the value of the event
        Returns:
        true if the track was successful, false otherwise