From 881bd8eea35b76958a7c3d2c28051735059b86ec Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Thu, 28 Feb 2013 10:37:55 -0800 Subject: [PATCH] Support array types in JavassistTypeParameterMatcherGenerator --- .../JavassistTypeParameterMatcherGenerator.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/io/netty/util/internal/JavassistTypeParameterMatcherGenerator.java b/common/src/main/java/io/netty/util/internal/JavassistTypeParameterMatcherGenerator.java index 1a36c042ad..8d4db12f81 100644 --- a/common/src/main/java/io/netty/util/internal/JavassistTypeParameterMatcherGenerator.java +++ b/common/src/main/java/io/netty/util/internal/JavassistTypeParameterMatcherGenerator.java @@ -40,7 +40,8 @@ final class JavassistTypeParameterMatcherGenerator { } static TypeParameterMatcher generate(Class type, ClassLoader classLoader) { - final String className = "io.netty.util.internal.__matchers__." + type.getName() + "Matcher"; + final String typeName = typeName(type); + final String className = "io.netty.util.internal.__matchers__." + typeName + "Matcher"; try { try { return (TypeParameterMatcher) Class.forName(className, true, classLoader).newInstance(); @@ -50,7 +51,7 @@ final class JavassistTypeParameterMatcherGenerator { CtClass c = classPool.getAndRename(NoOpTypeParameterMatcher.class.getName(), className); c.setModifiers(c.getModifiers() | Modifier.FINAL); - c.getDeclaredMethod("match").setBody("{ return $1 instanceof " + type.getName() + "; }"); + c.getDeclaredMethod("match").setBody("{ return $1 instanceof " + typeName + "; }"); byte[] byteCode = c.toBytecode(); c.detach(); Method method = ClassLoader.class.getDeclaredMethod( @@ -67,5 +68,13 @@ final class JavassistTypeParameterMatcherGenerator { } } + private static String typeName(Class type) { + if (type.isArray()) { + return typeName(type.getComponentType()) + "[]"; + } + + return type.getName(); + } + private JavassistTypeParameterMatcherGenerator() { } }