Home / Class/ ImmutableDomainNameMapping Class — netty Architecture

ImmutableDomainNameMapping Class — netty Architecture

Architecture documentation for the ImmutableDomainNameMapping class in DomainNameMappingBuilder.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5["ImmutableDomainNameMapping"]
  294da090_10a1_718d_ed47_827fca44dc48["DomainNameMappingBuilder.java"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|defined in| 294da090_10a1_718d_ed47_827fca44dc48
  0fafaa25_b5ef_2039_472b_aefea59f1fb0["ImmutableDomainNameMapping()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| 0fafaa25_b5ef_2039_472b_aefea59f1fb0
  db385a5c_0a41_07fd_a53c_353473c35f3f["add()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| db385a5c_0a41_07fd_a53c_353473c35f3f
  441838a1_c85c_1c1e_d8fd_ceba5034210b["V()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| 441838a1_c85c_1c1e_d8fd_ceba5034210b
  d87c2b1b_91cb_53c0_c9ee_afbaae0a38a6["asMap()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| d87c2b1b_91cb_53c0_c9ee_afbaae0a38a6
  d5301318_3a63_60d5_7961_c8f8ce2164ef["String()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| d5301318_3a63_60d5_7961_c8f8ce2164ef
  248a8fa7_3b6d_8e20_58b0_cb60a0188e17["estimateBufferSize()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| 248a8fa7_3b6d_8e20_58b0_cb60a0188e17
  60be4061_cb84_9458_3bc4_4e9197fcf07f["StringBuilder()"]
  3d0847f8_b839_0e5d_4c34_8fa3423b62b5 -->|method| 60be4061_cb84_9458_3bc4_4e9197fcf07f

Relationship Graph

Source Code

common/src/main/java/io/netty/util/DomainNameMappingBuilder.java lines 93–205

    private static final class ImmutableDomainNameMapping<V> extends DomainNameMapping<V> {
        private static final String REPR_HEADER = "ImmutableDomainNameMapping(default: ";
        private static final String REPR_MAP_OPENING = ", map: {";
        private static final String REPR_MAP_CLOSING = "})";
        private static final int REPR_CONST_PART_LENGTH =
            REPR_HEADER.length() + REPR_MAP_OPENING.length() + REPR_MAP_CLOSING.length();

        private final String[] domainNamePatterns;
        private final V[] values;
        private final Map<String, V> map;

        @SuppressWarnings("unchecked")
        private ImmutableDomainNameMapping(V defaultValue, Map<String, V> map) {
            super(null, defaultValue);

            Set<Map.Entry<String, V>> mappings = map.entrySet();
            int numberOfMappings = mappings.size();
            domainNamePatterns = new String[numberOfMappings];
            values = (V[]) new Object[numberOfMappings];

            final Map<String, V> mapCopy = new LinkedHashMap<String, V>(map.size());
            int index = 0;
            for (Map.Entry<String, V> mapping : mappings) {
                final String hostname = normalizeHostname(mapping.getKey());
                final V value = mapping.getValue();
                domainNamePatterns[index] = hostname;
                values[index] = value;
                mapCopy.put(hostname, value);
                ++index;
            }

            this.map = Collections.unmodifiableMap(mapCopy);
        }

        @Override
        @Deprecated
        public DomainNameMapping<V> add(String hostname, V output) {
            throw new UnsupportedOperationException(
                "Immutable DomainNameMapping does not support modification after initial creation");
        }

        @Override
        public V map(String hostname) {
            if (hostname != null) {
                hostname = normalizeHostname(hostname);

                int length = domainNamePatterns.length;
                for (int index = 0; index < length; ++index) {
                    if (matches(domainNamePatterns[index], hostname)) {
                        return values[index];
                    }
                }
            }

            return defaultValue;
        }

        @Override
        public Map<String, V> asMap() {
            return map;
        }

        @Override
        public String toString() {
            String defaultValueStr = defaultValue.toString();

            int numberOfMappings = domainNamePatterns.length;
            if (numberOfMappings == 0) {
                return REPR_HEADER + defaultValueStr + REPR_MAP_OPENING + REPR_MAP_CLOSING;
            }

            String pattern0 = domainNamePatterns[0];
            String value0 = values[0].toString();
            int oneMappingLength = pattern0.length() + value0.length() + 3; // 2 for separator ", " and 1 for '='
            int estimatedBufferSize = estimateBufferSize(defaultValueStr.length(), numberOfMappings, oneMappingLength);

            StringBuilder sb = new StringBuilder(estimatedBufferSize)
                .append(REPR_HEADER).append(defaultValueStr).append(REPR_MAP_OPENING);

            appendMapping(sb, pattern0, value0);
            for (int index = 1; index < numberOfMappings; ++index) {

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free