Class URISupport

java.lang.Object
org.apache.camel.util.URISupport

public final class URISupport extends Object
URI utilities.
  • Field Details

  • Method Details

    • sanitizeUri

      public static String sanitizeUri(String uri)
      Removes detected sensitive information (such as passwords) from the URI and returns the result.
      Parameters:
      uri - The uri to sanitize.
      Returns:
      Returns null if the uri is null, otherwise the URI with the passphrase, password or secretKey sanitized.
      See Also:
      • and #USERINFO_PASSWORD for the matched pattern
    • sanitizePath

      public static String sanitizePath(String path)
      Removes detected sensitive information (such as passwords) from the path part of an URI (that is, the part without the query parameters or component prefix) and returns the result.
      Parameters:
      path - the URI path to sanitize
      Returns:
      null if the path is null, otherwise the sanitized path
    • extractRemainderPath

      public static String extractRemainderPath(URI u, boolean useRaw)
      Extracts the scheme specific path from the URI that is used as the remainder option when creating endpoints.
      Parameters:
      u - the URI
      useRaw - whether to force using raw values
      Returns:
      the remainder path
    • extractQuery

      public static String extractQuery(String uri)
      Extracts the query part of the given uri
      Parameters:
      uri - the uri
      Returns:
      the query parameters or null if the uri has no query
    • stripQuery

      public static String stripQuery(String uri)
      Strips the query parameters from the uri
      Parameters:
      uri - the uri
      Returns:
      the uri without the query parameter
    • parseQuery

      public static Map<String,Object> parseQuery(String uri) throws URISyntaxException
      Parses the query part of the uri (eg the parameters).

      The URI parameters will by default be URI encoded. However you can define a parameter values with the syntax: key=RAW(value) which tells Camel to not encode the value, and use the value as is (eg key=value) and the value has not been encoded.

      Parameters:
      uri - the uri
      Returns:
      the parameters, or an empty map if no parameters (eg never null)
      Throws:
      URISyntaxException - is thrown if uri has invalid syntax.
      See Also:
    • parseQuery

      public static Map<String,Object> parseQuery(String uri, boolean useRaw) throws URISyntaxException
      Parses the query part of the uri (eg the parameters).

      The URI parameters will by default be URI encoded. However you can define a parameter values with the syntax: key=RAW(value) which tells Camel to not encode the value, and use the value as is (eg key=value) and the value has not been encoded.

      Parameters:
      uri - the uri
      useRaw - whether to force using raw values
      Returns:
      the parameters, or an empty map if no parameters (eg never null)
      Throws:
      URISyntaxException - is thrown if uri has invalid syntax.
      See Also:
    • parseQuery

      public static Map<String,Object> parseQuery(String uri, boolean useRaw, boolean lenient) throws URISyntaxException
      Parses the query part of the uri (eg the parameters).

      The URI parameters will by default be URI encoded. However you can define a parameter values with the syntax: key=RAW(value) which tells Camel to not encode the value, and use the value as is (eg key=value) and the value has not been encoded.

      Parameters:
      uri - the uri
      useRaw - whether to force using raw values
      lenient - whether to parse lenient and ignore trailing & markers which has no key or value which can happen when using HTTP components
      Returns:
      the parameters, or an empty map if no parameters (eg never null)
      Throws:
      URISyntaxException - is thrown if uri has invalid syntax.
      See Also:
    • scanRaw

      public static List<Pair<Integer>> scanRaw(String str)
      Scans RAW tokens in the string and returns the list of pair indexes which tell where a RAW token starts and ends in the string.

      This is a companion method with isRaw(int, List) and the returned value is supposed to be used as the parameter of that method.

      Parameters:
      str - the string to scan RAW tokens
      Returns:
      the list of pair indexes which represent the start and end positions of a RAW token
      See Also:
    • isRaw

      public static boolean isRaw(int index, List<Pair<Integer>> pairs)
      Tests if the index is within any pair of the start and end indexes which represent the start and end positions of a RAW token.

      This is a companion method with scanRaw(String) and is supposed to consume the returned value of that method as the second parameter pairs.

      Parameters:
      index - the index to be tested
      pairs - the list of pair indexes which represent the start and end positions of a RAW token
      Returns:
      true if the index is within any pair of the indexes, false otherwise
      See Also:
    • parseParameters

      public static Map<String,Object> parseParameters(URI uri) throws URISyntaxException
      Parses the query parameters of the uri (eg the query part).
      Parameters:
      uri - the uri
      Returns:
      the parameters, or an empty map if no parameters (eg never null)
      Throws:
      URISyntaxException - is thrown if uri has invalid syntax.
    • prepareQuery

      public static String prepareQuery(URI uri)
    • resolveRawParameterValues

      public static void resolveRawParameterValues(Map<String,Object> parameters)
      Traverses the given parameters, and resolve any parameter values which uses the RAW token syntax: key=RAW(value). This method will then remove the RAW tokens, and replace the content of the value, with just the value.
      Parameters:
      parameters - the uri parameters
      See Also:
    • createURIWithQuery

      public static URI createURIWithQuery(URI uri, String query) throws URISyntaxException
      Creates a URI with the given query
      Parameters:
      uri - the uri
      query - the query to append to the uri
      Returns:
      uri with the query appended
      Throws:
      URISyntaxException - is thrown if uri has invalid syntax.
    • stripPrefix

      public static String stripPrefix(String value, String prefix)
      Strips the prefix from the value.

      Returns the value as-is if not starting with the prefix.

      Parameters:
      value - the value
      prefix - the prefix to remove from value
      Returns:
      the value without the prefix
    • stripSuffix

      public static String stripSuffix(String value, String suffix)
      Strips the suffix from the value.

      Returns the value as-is if not ending with the prefix.

      Parameters:
      value - the value
      suffix - the suffix to remove from value
      Returns:
      the value without the suffix
    • createQueryString

      public static String createQueryString(Map<String,Object> options)
      Assembles a query from the given map.
      Parameters:
      options - the map with the options (eg key/value pairs)
      Returns:
      a query string with key1=value&key2=value2&..., or an empty string if there is no options.
    • createQueryString

      public static String createQueryString(Map<String,Object> options, boolean encode)
      Assembles a query from the given map.
      Parameters:
      options - the map with the options (eg key/value pairs)
      encode - whether to URL encode the query string
      Returns:
      a query string with key1=value&key2=value2&..., or an empty string if there is no options.
    • createQueryString

      @Deprecated public static String createQueryString(Collection<String> sortedKeys, Map<String,Object> options, boolean encode)
      Deprecated.
    • createRemainingURI

      public static URI createRemainingURI(URI originalURI, Map<String,Object> params) throws URISyntaxException
      Creates a URI from the original URI and the remaining parameters

      Used by various Camel components

      Throws:
      URISyntaxException
    • appendParametersToURI

      Appends the given parameters to the given URI.

      It keeps the original parameters and if a new parameter is already defined in originalURI, it will be replaced by its value in newParameters.

      Parameters:
      originalURI - the original URI
      newParameters - the parameters to add
      Returns:
      the URI with all the parameters
      Throws:
      URISyntaxException - is thrown if the uri syntax is invalid
      UnsupportedEncodingException - is thrown if encoding error
    • normalizeUri

      Normalizes the uri by reordering the parameters so they are sorted and thus we can use the uris for endpoint matching.

      The URI parameters will by default be URI encoded. However you can define a parameter values with the syntax: key=RAW(value) which tells Camel to not encode the value, and use the value as is (eg key=value) and the value has not been encoded.

      Parameters:
      uri - the uri
      Returns:
      the normalized uri
      Throws:
      URISyntaxException - in thrown if the uri syntax is invalid
      UnsupportedEncodingException - is thrown if encoding error
      See Also:
    • extractProperties

      public static Map<String,Object> extractProperties(Map<String,Object> properties, String optionPrefix)
    • getDecodeQuery

      public static String getDecodeQuery(String uri)
    • pathAndQueryOf

      public static String pathAndQueryOf(URI uri)
    • joinPaths

      public static String joinPaths(String... paths)
    • buildMultiValueQuery

      public static String buildMultiValueQuery(String key, Iterable<Object> values)
    • removeNoiseFromUri

      public static String removeNoiseFromUri(String uri)
      Remove whitespace noise from uri, xxxUri attributes, eg new lines, and tabs etc, which allows end users to format their Camel routes in more human-readable format, but at runtime those attributes must be trimmed. The parser removes most of the noise, but keeps spaces in the attribute values