Class URLParam

java.lang.Object
org.apache.dubbo.common.url.component.URLParam
Direct Known Subclasses:
URLPlainParam

public class URLParam extends Object
A class which store parameters for URL
Using DynamicParamTable to compress common keys (i.e. side, version)
DynamicParamTable allow to use only two integer value named `key` and `value-offset` to find a unique string to string key-pair. Also, `value-offset` is not required if the real value is the default value.
URLParam should operate as Copy-On-Write, each modify actions will return a new Object

NOTE: URLParam is not support serialization! DynamicParamTable is related with current running environment. If you want to make URL as a parameter, please call URL.toSerializableURL() to create URLPlainParam instead.

Since:
3.0
  • Method Details

    • hasMethodParameter

      public boolean hasMethodParameter(String method)
      Weather there contains some parameter match method
      Parameters:
      method - method name
      Returns:
      contains or not
    • getMethodParameter

      public String getMethodParameter(String method, String key)
      Get method related parameter. If not contains, use getParameter(key) instead. Specially, in some situation like `method1.1.callback=true`, key is `1.callback`.
      Parameters:
      method - method name
      key - key
      Returns:
      value
    • getMethodParameterStrict

      public String getMethodParameterStrict(String method, String key)
      Get method related parameter. If not contains, return null. Specially, in some situation like `method1.1.callback=true`, key is `1.callback`.
      Parameters:
      method - method name
      key - key
      Returns:
      value
    • initMethodParameters

      public static Map<String,Map<String,String>> initMethodParameters(Map<String,String> parameters)
    • getParameters

      public Map<String,String> getParameters()
      Get a Map like URLParam
      Returns:
      a URLParam.URLParamMap adapt to URLParam
    • getAnyMethodParameter

      public String getAnyMethodParameter(String key)
      Get any method related parameter which match key
      Parameters:
      key - key
      Returns:
      result ( if any, random choose one )
    • addParameter

      public URLParam addParameter(String key, String value)
      Add parameters to a new URLParam.
      Parameters:
      key - key
      value - value
      Returns:
      A new URLParam
    • addParameterIfAbsent

      public URLParam addParameterIfAbsent(String key, String value)
      Add absent parameters to a new URLParam.
      Parameters:
      key - key
      value - value
      Returns:
      A new URLParam
    • addParameters

      public URLParam addParameters(Map<String,String> parameters)
      Add parameters to a new URLParam. If key-pair is present, this will cover it.
      Parameters:
      parameters - parameters in key-value pairs
      Returns:
      A new URLParam
    • addParametersIfAbsent

      public URLParam addParametersIfAbsent(Map<String,String> parameters)
      Add absent parameters to a new URLParam.
      Parameters:
      parameters - parameters in key-value pairs
      Returns:
      A new URL
    • removeParameters

      public URLParam removeParameters(String... keys)
      remove specified parameters in URLParam
      Parameters:
      keys - keys to being removed
      Returns:
      A new URLParam
    • clearParameters

      public URLParam clearParameters()
      remove all of the parameters in URLParam
      Returns:
      An empty URLParam
    • hasParameter

      public boolean hasParameter(String key)
      check if specified key is present in URLParam
      Parameters:
      key - specified key
      Returns:
      present or not
    • getParameter

      public String getParameter(String key)
      get value of specified key in URLParam
      Parameters:
      key - specified key
      Returns:
      value, null if key is absent
    • getRawParam

      public String getRawParam()
      get raw string like parameters
      Returns:
      raw string like parameters
    • getTimestamp

      public long getTimestamp()
    • setTimestamp

      public void setTimestamp(long timestamp)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • parse

      public static URLParam parse(Map<String,String> params)
      Parse URLParam Init URLParam by constructor is not allowed rawParam field in result will be null while getRawParam() will automatically create it
      Parameters:
      params - params map added into URLParam
      Returns:
      a new URLParam
    • parse

      public static URLParam parse(String rawParam, boolean encoded, Map<String,String> extraParameters)
      Parse URLParam Init URLParam by constructor is not allowed
      Parameters:
      rawParam - original rawParam string
      encoded - if parameters are URL encoded
      extraParameters - extra parameters to add into URLParam
      Returns:
      a new URLParam
    • parse

      public static URLParam parse(String rawParam)
      Parse URLParam Init URLParam by constructor is not allowed
      Parameters:
      rawParam - original rawParam string
      Returns:
      a new URLParam
    • parse

      public static URLParam parse(Map<String,String> params, String rawParam)
      Parse URLParam Init URLParam by constructor is not allowed
      Parameters:
      params - params map added into URLParam
      rawParam - original rawParam string, directly add to rawParam field, will not affect real key-pairs store in URLParam. Please make sure it can correspond with params or will cause unexpected result when calling getRawParam() and toString() ()}. If you not sure, you can call parse(String) to init.
      Returns:
      a new URLParam