Class StreamBaseURI


  • public final class StreamBaseURI
    extends Object
    A Uniform Resource Identifier containing information necessary to connect to a StreamBase server. For more information about URIs, please see the StreamBase documentation.
    • Field Detail

      • DEFAULT_PORT

        public static final int DEFAULT_PORT
        The default StreamBase TCP port number (10000).
        See Also:
        Constant Field Values
      • DEFAULT_URI

        public static final StreamBaseURI DEFAULT_URI
        The default URI (sb://localhost:10000/) pointing to localhost, no container, port 10000).
      • SECONDARY_HOST_PARAM

        public static final String SECONDARY_HOST_PARAM
        URI parameter used for secondary host name. ("host2")
        See Also:
        Constant Field Values
      • SECONDARY_PORT_PARAM

        public static final String SECONDARY_PORT_PARAM
        URI parameter used for secondary port name. ("port2")
        See Also:
        Constant Field Values
      • KEYSTORE_PARAM

        public static final String KEYSTORE_PARAM
        URI parameter used for a keystore for SSL with client authentication (2-way ssl). ("keystore")
        See Also:
        Constant Field Values
      • KEYSTORE_PASS_PARAM

        public static final String KEYSTORE_PASS_PARAM
        URI parameter used for the passphrase for a keystore for SSL with client authentication (2-way ssl). ("keystorepass")
        See Also:
        Constant Field Values
      • KEY_PASS_PARAM

        public static final String KEY_PASS_PARAM
        URI parameter used for the passphrase for a key within a keystore for SSL with client authentication (2-way ssl). ("keypass")
        See Also:
        Constant Field Values
      • STREAM_PARAM

        public static final String STREAM_PARAM
        URI parameter used internally (only) as part of container stream connection logic
        See Also:
        Constant Field Values
      • QT_PARAM

        public static final String QT_PARAM
        URI parameter used internally as part of container table connection logic
        See Also:
        Constant Field Values
      • URI_PROPERTY_NAME

        public static final String URI_PROPERTY_NAME
        That java property used to define the uri to the server
        See Also:
        Constant Field Values
      • URI_ENVIRONMENT_VARIABLE

        public static final String URI_ENVIRONMENT_VARIABLE
        That environment variable used to define the uri to the server
        See Also:
        Constant Field Values
      • MASKED_PARAMS

        public static final Set<String> MASKED_PARAMS
        default set of parameter containing sensitive data
    • Constructor Detail

      • StreamBaseURI

        public StreamBaseURI​(String uri)
                      throws URIException
        Constructor that parses a StreamBase URI passed in as a String. The format for a StreamBase URI is:

        scheme://host[:port][/container][/][[;param=value]...]

        • scheme: use sb or sbs, the latter to enable a secure SSL connection
        • host: an ip address or hostname of the target server
        • port: (optional) target TCP port number, defaults to DEFAULT_PORT
        • container: (optional) target container name, defaults to NO_CONTAINER
        • ;param=value: (optional) each occurrence sets a key/value parameter mapping for additional arguments; unknown arguments result in a URIException being thrown. Refer to the documentation or the public constants defined in StreamBaseURI ending in _PARAM for valid parameter names
        Parameters:
        uri - a URI to parse
        Throws:
        URIException - if the URI syntax is invalid, or if an unknown parameter name is found
      • StreamBaseURI

        public StreamBaseURI​(String host,
                             String container,
                             int port)
        Constructor roughly equivalent to new StreamBaseURI("sb://host:port/container").
        Parameters:
        host - a host name to connect to
        container - a container to connect to
        port - a port number to connect to
        See Also:
        StreamBaseURI(String)
      • StreamBaseURI

        public StreamBaseURI​(String host,
                             int port)
        Constructor roughly equivalent to new StreamBaseURI("sb://host:port/").
        Parameters:
        host - a host name to connect to
        port - a port number to connect to
        See Also:
        StreamBaseURI(String)
      • StreamBaseURI

        public StreamBaseURI​(String host,
                             String container,
                             int port,
                             String user,
                             String password)
        Constructor roughly equivalent to new StreamBaseURI("sb://host:port/container;user=user;password=password").
        Parameters:
        host - a host name to connect to
        container - a container to connect to
        port - a port number to connect to
        user - a user name for the connection
        password - a password for the connection
        See Also:
        StreamBaseURI(String)
      • StreamBaseURI

        public StreamBaseURI​(String host,
                             String container,
                             int port,
                             boolean useSSL,
                             Map<String,​String> params)
        Constructor roughly equivalent to new StreamBaseURI("scheme://host:port/container;param1=value1(...)"), where scheme is either "sb" or "sbs" depending on whether useSSL is true or false, and param1=value1(...) stands for every entry in the params Map
        Parameters:
        host - a host name to connect to
        container - a container to connect to
        port - a port number to connect to
        useSSL - whether to use an SSL connection to the server or not
        params - a Map of String parameters for the URI, or null to indicate no parameters. This map is not checked for correctness.
      • StreamBaseURI

        public StreamBaseURI​(String host,
                             String container,
                             int port,
                             Map<String,​String> params)
        Equivalent to StreamBaseURI(host, container, port, false, params)
        Parameters:
        host - a host name to connect to
        container - a container to connect to
        port - a port number to connect to
        params - a Map of String parameters for the URI, or null to indicate no parameters. This map is not checked for correctness.
        See Also:
        StreamBaseURI(String, String, int, boolean, Map)
      • StreamBaseURI

        public StreamBaseURI​(String host,
                             int port,
                             Map<String,​String> params)
        Equivalent to StreamBaseURI(host, NO_CONTAINER, port, params)
        Parameters:
        host - a host name to connect to
        port - a port number to connect to
        params - a Map of String parameters for the URI, or null to indicate no parameters. This map is not checked for correctness.
        See Also:
        StreamBaseURI(String, String, int, Map)
    • Method Detail

      • listFromString

        public static List<StreamBaseURI> listFromString​(String uriStrings)
                                                  throws URIException
        Parse a comma-separated list of URIs in a string into a List<StreamBaseURI>. The string of URIs supplied must conform to a valid HA URI list, for example they must all reference the same container.
        Parameters:
        uriStrings -
        Returns:
        list of StreamBaseURI's
        Throws:
        URIException
      • toString

        public static String toString​(Collection<StreamBaseURI> uris)

        Create a string representation of a list of uris.

        Use toSafeString(Collection) if sensitive data need to be masked.

        Parameters:
        uris -
        Returns:
        string representation of a list of uris
        Since:
        6.1
      • toSafeString

        public static String toSafeString​(Collection<StreamBaseURI> uris)
        Create a string representation of a list of uris, that is safe for logging. See safeString()
        Parameters:
        uris -
        Returns:
        string representation of a list of uris
        Since:
        10.4
      • toString

        public String toString()

        Returns a string representation of the URI.

        Log messages should use safeString() instead, where sensitive data are masked.

        Overrides:
        toString in class Object
      • getBaseURI

        public StreamBaseURI getBaseURI()
        Return a copy of this URI without any params
      • getHost

        public String getHost()
        Returns the host name component of the URI.
      • getContainer

        public String getContainer()
        Returns the container name component of the URI. May return an empty string if no container was specified.
      • getPort

        public int getPort()
        Returns the port number.
      • getParam

        public String getParam​(String key)
        Returns a parameter with a given key, or null if none exists.
        Parameters:
        key - the key for the parameter or null if not found
      • getParameter

        public String getParameter​(String key)
        Returns a parameter with a given key, or null if none exists.
        Parameters:
        key - the key for the parameter or null if not found
      • getNumParameters

        public int getNumParameters()
        Return the number of URI parameters
        Returns:
        number of URI parameters
      • getParams

        public Map<String,​String> getParams()
        Returns an unmodifiable map of all parameters.
      • getUser

        public String getUser()
        Return the user name for the connection.
        Returns:
        The user name for the connection, or null if none.
      • getPassword

        public String getPassword()
        Return the password for the connection.
        Returns:
        The password for the connection, or null if none.
      • getKeystore

        public String getKeystore()
        Return the keystore for the connection.
        Returns:
        The keystore for the connection, or null if none.
      • getKeystorePassphrase

        public String getKeystorePassphrase()
        Return the passphrase for the keystore for the connection.
        Returns:
        The passphrase for the keystore for the connection, or null if none.
      • getKeyPassphrase

        public String getKeyPassphrase()
        Return the passphrase for the key within the keystore for the connection.
        Returns:
        The passphrase for the key within the keystore for the connection, or null if none.
        Since:
        7.3.10
      • isSSL

        public boolean isSSL()
        Returns:
        true if this is an SSL URI.
      • fromEnvironment

        public static StreamBaseURI fromEnvironment()
                                             throws URIException
        Returns the URI found by searching the following property and environment variables:
        1. Using the string value found in the streambase.uri system property, if set
        2. Using the string value found in the STREAMBASE_URI environment variable, if set
        3. Using the string value found in the STREAMBASE_SERVER environment variable, if set
        4. DEFAULT_URI if no value has been found above
        Throws:
        URIException - if the URI found in any of the search locations is invalid
      • listFromEnvironment

        public static List<StreamBaseURI> listFromEnvironment()
                                                       throws URIException
        Returns the list of URIs found by searching the following property and environment variables for a comma separated URI list:
        1. Using the string value found in the streambase.uri system property, if set
        2. Using the string value found in the STREAMBASE_URI environment variable, if set
        3. Using the string value found in the STREAMBASE_SERVER environment variable, if set
        4. DEFAULT_URI if no value has been above
        The supplied URIs must conform to a valid High Availability URI list, for example they must all reference the same container.
        Throws:
        URIException - if any URI found is invalid
      • getBasicAuthenticationString

        public String getBasicAuthenticationString()
        Returns a Base64-encoded username + password if authentication is enabled, or null otherwise.
      • equals

        public boolean equals​(Object obj)
        Compares this URI against the supplied one. Note that the host names must textually match exactly (i.e., no cleverness is applied to implement "host equality").
        Overrides:
        equals in class Object
      • hasPrefix

        public static boolean hasPrefix​(String s)
        Parameters:
        s -
        Returns:
        true iff the supplied string looks like the beginning of a StreamBase URI