Class StreamBaseURI

java.lang.Object
com.streambase.sb.client.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 Details

    • DEFAULT_PORT

      public static final int DEFAULT_PORT
      The default StreamBase TCP port number (10000).
      See Also:
    • DEFAULT_HOST

      public static final String DEFAULT_HOST
      The default StreamBase server ("localhost").
      See Also:
    • DEFAULT_CONTAINER

      public static final String DEFAULT_CONTAINER
      The default container ("default")
      See Also:
    • SYSTEM_CONTAINER

      public static final String SYSTEM_CONTAINER
      The system container ("system")
      See Also:
    • NO_CONTAINER

      public static final String NO_CONTAINER
      No container specified ("")
      See Also:
    • DEFAULT_URI

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

      public static final String USER_PARAM
      URI parameter used for username.
      See Also:
    • PASSWORD_PARAM

      public static final String PASSWORD_PARAM
      URI parameter used for password.
      See Also:
    • SECONDARY_HOST_PARAM

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

      public static final String SECONDARY_PORT_PARAM
      URI parameter used for secondary port name. ("port2")
      See Also:
    • 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:
    • 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:
    • 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:
    • STREAM_PARAM

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

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

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

      public static final String URI_ENVIRONMENT_VARIABLE
      That environment variable used to define the uri to the server
      See Also:
    • KEY_PASSWORD_MASK

      public static final String KEY_PASSWORD_MASK
      default keypass mask
      See Also:
    • MASKED_PARAMS

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

    • 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

      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

      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

      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

      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:
  • Method Details

    • 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
    • safeString

      public String safeString()
      Like toString() except that all sensitive data defined in the set MASKED_PARAMS are masked with KEY_PASSWORD_MASK
    • 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