From 62617bef0517161d394e2777b2467c5aae86afc1 Mon Sep 17 00:00:00 2001 From: Christoph Dreis Date: Wed, 5 Oct 2016 20:56:06 +0200 Subject: [PATCH] DATACMNS-925 - Improve memory consumption of Parameter and Parameters. This commit changes some ArrayList initializations to use an initial capacity and avoids the unnecessary fetch of the return type of a method in Parameter.isDynamicProjectionParameter(). Original pull request: #180. --- .../data/repository/query/Parameter.java | 2 +- .../data/repository/query/Parameters.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/springframework/data/repository/query/Parameter.java b/src/main/java/org/springframework/data/repository/query/Parameter.java index 42e36142a..f141e58a5 100644 --- a/src/main/java/org/springframework/data/repository/query/Parameter.java +++ b/src/main/java/org/springframework/data/repository/query/Parameter.java @@ -194,13 +194,13 @@ public class Parameter { ClassTypeInformation ownerType = ClassTypeInformation.from(parameter.getDeclaringClass()); TypeInformation parameterTypes = ownerType.getParameterTypes(method).get(parameter.getParameterIndex()); - TypeInformation returnType = ClassTypeInformation.fromReturnTypeOf(method); if (!parameterTypes.getType().equals(Class.class)) { return false; } TypeInformation bound = parameterTypes.getTypeArguments().get(0); + TypeInformation returnType = ClassTypeInformation.fromReturnTypeOf(method); return bound.equals(returnType.getActualType()); } diff --git a/src/main/java/org/springframework/data/repository/query/Parameters.java b/src/main/java/org/springframework/data/repository/query/Parameters.java index ba69d0637..6d02ac91e 100644 --- a/src/main/java/org/springframework/data/repository/query/Parameters.java +++ b/src/main/java/org/springframework/data/repository/query/Parameters.java @@ -62,11 +62,11 @@ public abstract class Parameters, T extends Parameter Assert.notNull(method); - this.parameters = new ArrayList(); - this.dynamicProjectionIndex = -1; - List> types = Arrays.asList(method.getParameterTypes()); + this.parameters = new ArrayList(types.size()); + this.dynamicProjectionIndex = -1; + for (int i = 0; i < types.size(); i++) { MethodParameter methodParameter = new MethodParameter(method, i); @@ -98,12 +98,12 @@ public abstract class Parameters, T extends Parameter */ protected Parameters(List originals) { - this.parameters = new ArrayList(); - int pageableIndexTemp = -1; int sortIndexTemp = -1; int dynamicProjectionTemp = -1; + this.parameters = new ArrayList(originals.size()); + for (int i = 0; i < originals.size(); i++) { T original = originals.get(i);