Home / Class/ DomainWildcardMappingBuilder Class — netty Architecture

DomainWildcardMappingBuilder Class — netty Architecture

Architecture documentation for the DomainWildcardMappingBuilder class in DomainWildcardMappingBuilder.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  66ff1c37_4c85_96b1_f0ce_54b11bf7df4c["DomainWildcardMappingBuilder"]
  653d8053_2ce6_0eaa_6829_31ac8dec04c8["DomainWildcardMappingBuilder.java"]
  66ff1c37_4c85_96b1_f0ce_54b11bf7df4c -->|defined in| 653d8053_2ce6_0eaa_6829_31ac8dec04c8
  5b46eba4_c463_3c2f_5ba1_c39db1152360["DomainWildcardMappingBuilder()"]
  66ff1c37_4c85_96b1_f0ce_54b11bf7df4c -->|method| 5b46eba4_c463_3c2f_5ba1_c39db1152360
  283de08a_c687_7f87_4202_5366e00e7bb4["add()"]
  66ff1c37_4c85_96b1_f0ce_54b11bf7df4c -->|method| 283de08a_c687_7f87_4202_5366e00e7bb4
  3acf92cd_1ce0_94d9_7748_898f4ecdfcca["String()"]
  66ff1c37_4c85_96b1_f0ce_54b11bf7df4c -->|method| 3acf92cd_1ce0_94d9_7748_898f4ecdfcca
  1330a497_c83b_52cf_3629_f6d11f144441["build()"]
  66ff1c37_4c85_96b1_f0ce_54b11bf7df4c -->|method| 1330a497_c83b_52cf_3629_f6d11f144441

Relationship Graph

Source Code

common/src/main/java/io/netty/util/DomainWildcardMappingBuilder.java lines 28–159

public class DomainWildcardMappingBuilder<V> {

    private final V defaultValue;
    private final Map<String, V> map;

    /**
     * Constructor with default initial capacity of the map holding the mappings
     *
     * @param defaultValue the default value for {@link Mapping#map(Object)} )} to return
     *                     when nothing matches the input
     */
    public DomainWildcardMappingBuilder(V defaultValue) {
        this(4, defaultValue);
    }

    /**
     * Constructor with initial capacity of the map holding the mappings
     *
     * @param initialCapacity initial capacity for the internal map
     * @param defaultValue    the default value for {@link Mapping#map(Object)} to return
     *                        when nothing matches the input
     */
    public DomainWildcardMappingBuilder(int initialCapacity, V defaultValue) {
        this.defaultValue = checkNotNull(defaultValue, "defaultValue");
        map = new LinkedHashMap<String, V>(initialCapacity);
    }

    /**
     * Adds a mapping that maps the specified (optionally wildcard) host name to the specified output value.
     * {@code null} values are forbidden for both hostnames and values.
     * <p>
     * <a href="https://tools.ietf.org/search/rfc6125#section-6.4">DNS wildcard</a> is supported as hostname. The
     * wildcard will only match one sub-domain deep and only when wildcard is used as the most-left label.
     *
     * For example:
     *
     * <p>
     *  *.netty.io will match xyz.netty.io but NOT abc.xyz.netty.io
     * </p>
     *
     * @param hostname the host name (optionally wildcard)
     * @param output   the output value that will be returned by {@link Mapping#map(Object)}
     *                 when the specified host name matches the specified input host name
     */
    public DomainWildcardMappingBuilder<V> add(String hostname, V output) {
        map.put(normalizeHostName(hostname),
                checkNotNull(output, "output"));
        return this;
    }

    private String normalizeHostName(String hostname) {
        checkNotNull(hostname, "hostname");
        if (hostname.isEmpty() || hostname.charAt(0) == '.') {
            throw new IllegalArgumentException("Hostname '" + hostname + "' not valid");
        }
        hostname = ImmutableDomainWildcardMapping.normalize(checkNotNull(hostname, "hostname"));
        if (hostname.charAt(0) == '*') {
            if (hostname.length() < 3 || hostname.charAt(1) != '.') {
                throw new IllegalArgumentException("Wildcard Hostname '" + hostname + "'not valid");
            }
            return hostname.substring(1);
        }
        return hostname;
    }
    /**
     * Creates a new instance of an immutable {@link Mapping}.
     *
     * @return new {@link Mapping} instance
     */
    public Mapping<String, V> build() {
        return new ImmutableDomainWildcardMapping<V>(defaultValue, map);
    }

    private static final class ImmutableDomainWildcardMapping<V> implements Mapping<String, V> {
        private static final String REPR_HEADER = "ImmutableDomainWildcardMapping(default: ";
        private static final String REPR_MAP_OPENING = ", map: ";
        private static final String REPR_MAP_CLOSING = ")";

        private final V defaultValue;
        private final Map<String, V> map;

Frequently Asked Questions

What is the DomainWildcardMappingBuilder class?
DomainWildcardMappingBuilder is a class in the netty codebase, defined in common/src/main/java/io/netty/util/DomainWildcardMappingBuilder.java.
Where is DomainWildcardMappingBuilder defined?
DomainWildcardMappingBuilder is defined in common/src/main/java/io/netty/util/DomainWildcardMappingBuilder.java at line 28.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free