Optimise to use getParameterCount to get the size as that is faster. getParameterTypes returns a cloned array.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f824fb0b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f824fb0b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f824fb0b Branch: refs/heads/master Commit: f824fb0bf07baf72d49eb07129ef5fcbc0ff2587 Parents: 410537f Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Jun 1 20:55:29 2017 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Jun 1 20:55:29 2017 +0200 ---------------------------------------------------------------------- .../org/apache/camel/component/bean/BeanInfo.java | 12 ++++++++---- .../org/apache/camel/component/bean/MethodInfo.java | 2 +- .../InstanceMethodFallbackTypeConverter.java | 2 +- .../impl/converter/InstanceMethodTypeConverter.java | 2 +- .../converter/StaticMethodFallbackTypeConverter.java | 2 +- .../impl/converter/StaticMethodTypeConverter.java | 2 +- .../org/apache/camel/util/IntrospectionSupport.java | 10 +++++----- .../main/java/org/apache/camel/util/ObjectHelper.java | 14 ++++++++------ 8 files changed, 26 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java index 480fbc7..ab38e15 100644 --- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java +++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java @@ -509,7 +509,7 @@ public class BeanInfo { protected List<Annotation>[] collectParameterAnnotations(Class<?> c, Method m) { @SuppressWarnings("unchecked") - List<Annotation>[] annotations = new List[m.getParameterTypes().length]; + List<Annotation>[] annotations = new List[m.getParameterCount()]; for (int i = 0; i < annotations.length; i++) { annotations[i] = new ArrayList<Annotation>(); } @@ -1070,7 +1070,7 @@ public class BeanInfo { // is it a method with no parameters boolean noParameters = methodName.endsWith("()"); if (noParameters) { - return method.getParameterTypes().length == 0; + return method.getParameterCount() == 0; } // match qualifier types which is used to select among overloaded methods @@ -1078,10 +1078,14 @@ public class BeanInfo { if (ObjectHelper.isNotEmpty(types)) { // we must qualify based on types to match method String[] parameters = StringQuoteHelper.splitSafeQuote(types, ','); + Class<?>[] parameterTypes = null; Iterator<?> it = ObjectHelper.createIterator(parameters); - for (int i = 0; i < method.getParameterTypes().length; i++) { + for (int i = 0; i < method.getParameterCount(); i++) { if (it.hasNext()) { - Class<?> parameterType = method.getParameterTypes()[i]; + if (parameterTypes == null) { + parameterTypes = method.getParameterTypes(); + } + Class<?> parameterType = parameterTypes[i]; String qualifyType = (String) it.next(); if (ObjectHelper.isEmpty(qualifyType)) { http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java index 410de08..f3b7a4e 100644 --- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java +++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java @@ -647,7 +647,7 @@ public class MethodInfo { // any provided parameter values in the method name String methodName = exchange.getIn().getHeader(Exchange.BEAN_METHOD_NAME, "", String.class); // the parameter values is between the parenthesis - String methodParameters = ObjectHelper.betweenOuterPair(methodName, '(', ')'); + String methodParameters = StringHelper.betweenOuterPair(methodName, '(', ')'); // use an iterator to walk the parameter values Iterator<?> it = null; if (methodParameters != null) { http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java index 862e9a6..cdb6841 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java @@ -45,7 +45,7 @@ public class InstanceMethodFallbackTypeConverter extends TypeConverterSupport { public InstanceMethodFallbackTypeConverter(CachingInjector<?> injector, Method method, TypeConverterRegistry registry, boolean allowNull) { this.injector = injector; this.method = method; - this.useExchange = method.getParameterTypes().length == 4; + this.useExchange = method.getParameterCount() == 4; this.registry = registry; this.allowNull = allowNull; } http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java index 9a41ffc..63a199c 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java @@ -47,7 +47,7 @@ public class InstanceMethodTypeConverter extends TypeConverterSupport { public InstanceMethodTypeConverter(CachingInjector<?> injector, Method method, TypeConverterRegistry registry, boolean allowNull) { this.injector = injector; this.method = method; - this.useExchange = method.getParameterTypes().length == 2; + this.useExchange = method.getParameterCount() == 2; this.registry = registry; this.allowNull = allowNull; } http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java index 32709e3..db58d5b 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java @@ -42,7 +42,7 @@ public class StaticMethodFallbackTypeConverter extends TypeConverterSupport { public StaticMethodFallbackTypeConverter(Method method, TypeConverterRegistry registry, boolean allowNull) { this.method = method; - this.useExchange = method.getParameterTypes().length == 4; + this.useExchange = method.getParameterCount() == 4; this.registry = registry; this.allowNull = allowNull; } http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java index d8e0f9b..f247407 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java @@ -40,7 +40,7 @@ public class StaticMethodTypeConverter extends TypeConverterSupport { public StaticMethodTypeConverter(Method method, boolean allowNull) { this.method = method; - this.useExchange = method.getParameterTypes().length == 2; + this.useExchange = method.getParameterCount() == 2; this.allowNull = allowNull; } http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java b/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java index 1683d26..67da44b 100644 --- a/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java +++ b/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java @@ -142,16 +142,16 @@ public final class IntrospectionSupport { public static boolean isGetter(Method method) { String name = method.getName(); Class<?> type = method.getReturnType(); - Class<?> params[] = method.getParameterTypes(); + int parameterCount = method.getParameterCount(); // is it a getXXX method if (name.startsWith("get") && name.length() >= 4 && Character.isUpperCase(name.charAt(3))) { - return params.length == 0 && !type.equals(Void.TYPE); + return parameterCount == 0 && !type.equals(Void.TYPE); } // special for isXXX boolean if (name.startsWith("is") && name.length() >= 3 && Character.isUpperCase(name.charAt(2))) { - return params.length == 0 && type.getSimpleName().equalsIgnoreCase("boolean"); + return parameterCount == 0 && type.getSimpleName().equalsIgnoreCase("boolean"); } return false; @@ -191,11 +191,11 @@ public final class IntrospectionSupport { public static boolean isSetter(Method method, boolean allowBuilderPattern) { String name = method.getName(); Class<?> type = method.getReturnType(); - Class<?> params[] = method.getParameterTypes(); + int parameterCount = method.getParameterCount(); // is it a getXXX method if (name.startsWith("set") && name.length() >= 4 && Character.isUpperCase(name.charAt(3))) { - return params.length == 1 && (type.equals(Void.TYPE) || (allowBuilderPattern && method.getDeclaringClass().isAssignableFrom(type))); + return parameterCount == 1 && (type.equals(Void.TYPE) || (allowBuilderPattern && method.getDeclaringClass().isAssignableFrom(type))); } return false; http://git-wip-us.apache.org/repos/asf/camel/blob/f824fb0b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java index ebc3df8..829bcaf 100644 --- a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java @@ -1427,18 +1427,20 @@ public final class ObjectHelper { } // must have same number of parameter types - if (source.getParameterTypes().length != target.getParameterTypes().length) { + if (source.getParameterCount() != target.getParameterCount()) { return false; } + Class<?>[] sourceTypes = source.getParameterTypes(); + Class<?>[] targetTypes = target.getParameterTypes(); // test if parameter types is the same as well - for (int i = 0; i < source.getParameterTypes().length; i++) { + for (int i = 0; i < source.getParameterCount(); i++) { if (exact) { - if (!(source.getParameterTypes()[i].equals(target.getParameterTypes()[i]))) { + if (!(sourceTypes[i].equals(targetTypes[i]))) { return false; } } else { - if (!(source.getParameterTypes()[i].isAssignableFrom(target.getParameterTypes()[i]))) { + if (!(sourceTypes[i].isAssignableFrom(targetTypes[i]))) { boolean b1 = source.isBridge(); boolean b2 = target.isBridge(); // must not be bridge methods @@ -1608,7 +1610,7 @@ public final class ObjectHelper { */ public static String getPropertyName(Method method) { String propertyName = method.getName(); - if (propertyName.startsWith("set") && method.getParameterTypes().length == 1) { + if (propertyName.startsWith("set") && method.getParameterCount() == 1) { propertyName = propertyName.substring(3, 4).toLowerCase(Locale.ENGLISH) + propertyName.substring(4); } return propertyName; @@ -1708,7 +1710,7 @@ public final class ObjectHelper { public static boolean hasDefaultPublicNoArgConstructor(Class<?> type) { // getConstructors() returns only public constructors for (Constructor<?> ctr : type.getConstructors()) { - if (ctr.getParameterTypes().length == 0) { + if (ctr.getParameterCount() == 0) { return true; } }