Build a URI. Any URI template parameters will be replaced by the value in the supplied map. Values are converted to {@code String} usingtheir {@code toString()} method and are then encoded to match therules of the URI component to which they pertain. All {@code '%'} charactersin the stringified values will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance.
NOTE: By default all {@code '/'} characters in the stringified values will beencoded in path templates, i.e. the result is identical to invoking {@link #buildFromMap(java.util.Map,boolean) buildFromMap(valueMap, true)}. To override this behavior use {@code buildFromMap(valueMap, false)} instead.
@param values a map of URI template parameter names and values.
@return the URI built from the UriBuilder.
@throws IllegalArgumentException if there are any URI template parameterswithout a supplied value, or if a template parameter value is {@code null}.
@throws UriBuilderException if a URI cannot be constructed based on thecurrent state of the builder.
@see #buildFromMap(java.util.Map,boolean)
@see #buildFromEncodedMap(java.util.Map)