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;
             }
         }

Reply via email to