Home / Class/ TypeParameterMatcher Class — netty Architecture

TypeParameterMatcher Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  b5e2ef12_f8c3_cc7d_3bfa_6cc87ce1c99b["TypeParameterMatcher"]
  1dab00dc_c780_9401_7e08_90cd19c3d5a4["TypeParameterMatcher.java"]
  b5e2ef12_f8c3_cc7d_3bfa_6cc87ce1c99b -->|defined in| 1dab00dc_c780_9401_7e08_90cd19c3d5a4
  ff6bc485_cd30_8932_0758_9dcbdb8247ce["TypeParameterMatcher()"]
  b5e2ef12_f8c3_cc7d_3bfa_6cc87ce1c99b -->|method| ff6bc485_cd30_8932_0758_9dcbdb8247ce
  c16f9bcb_fe27_a93a_ccf8_d731fe6cba52["match()"]
  b5e2ef12_f8c3_cc7d_3bfa_6cc87ce1c99b -->|method| c16f9bcb_fe27_a93a_ccf8_d731fe6cba52

Relationship Graph

Source Code

common/src/main/java/io/netty/util/internal/TypeParameterMatcher.java lines 22–86

public abstract class TypeParameterMatcher {

    private static final TypeParameterMatcher NOOP = new TypeParameterMatcher() {
        @Override
        public boolean match(Object msg) {
            return true;
        }
    };

    public static TypeParameterMatcher get(final Class<?> parameterType) {
        final Map<Class<?>, TypeParameterMatcher> getCache =
                InternalThreadLocalMap.get().typeParameterMatcherGetCache();

        TypeParameterMatcher matcher = getCache.get(parameterType);
        if (matcher == null) {
            if (parameterType == Object.class) {
                matcher = NOOP;
            } else {
                matcher = new ReflectiveMatcher(parameterType);
            }
            getCache.put(parameterType, matcher);
        }

        return matcher;
    }

    public static TypeParameterMatcher find(
            final Object object, final Class<?> parametrizedSuperclass, final String typeParamName) {

        final Map<Class<?>, Map<String, TypeParameterMatcher>> findCache =
                InternalThreadLocalMap.get().typeParameterMatcherFindCache();
        final Class<?> thisClass = object.getClass();

        Map<String, TypeParameterMatcher> map = findCache.get(thisClass);
        if (map == null) {
            map = new HashMap<String, TypeParameterMatcher>();
            findCache.put(thisClass, map);
        }

        TypeParameterMatcher matcher = map.get(typeParamName);
        if (matcher == null) {
            matcher = get(ReflectionUtil.resolveTypeParameter(object, parametrizedSuperclass, typeParamName));
            map.put(typeParamName, matcher);
        }

        return matcher;
    }

    public abstract boolean match(Object msg);

    private static final class ReflectiveMatcher extends TypeParameterMatcher {
        private final Class<?> type;

        ReflectiveMatcher(Class<?> type) {
            this.type = type;
        }

        @Override
        public boolean match(Object msg) {
            return type.isInstance(msg);
        }
    }

    TypeParameterMatcher() { }
}

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free