Browse Source

DATACMNS-733 - Made all references to DefaultParameterNameDiscoverer non-static.

To prevent classes from being garbage collected due to Class<?> references within DefaultParameterNameDiscoverer we no keep all ParameterNameDiscoverer instances in a non-static field.
pull/133/head
Oliver Gierke 11 years ago
parent
commit
ac080bacf7
  1. 6
      src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java
  2. 6
      src/main/java/org/springframework/data/repository/query/Parameters.java
  3. 7
      src/main/java/org/springframework/data/repository/support/MethodParameters.java

6
src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2011-2014 by the original author(s).
* Copyright 2011-2015 by the original author(s).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -35,7 +35,7 @@ import org.springframework.data.util.TypeInformation; @@ -35,7 +35,7 @@ import org.springframework.data.util.TypeInformation;
*/
public class PreferredConstructorDiscoverer<T, P extends PersistentProperty<P>> {
private static final ParameterNameDiscoverer PARAMETER_DISCOVERER = new DefaultParameterNameDiscoverer();
private final ParameterNameDiscoverer discoverer = new DefaultParameterNameDiscoverer();
private PreferredConstructor<T, P> constructor;
@ -106,7 +106,7 @@ public class PreferredConstructorDiscoverer<T, P extends PersistentProperty<P>> @@ -106,7 +106,7 @@ public class PreferredConstructorDiscoverer<T, P extends PersistentProperty<P>>
return new PreferredConstructor<T, P>((Constructor<T>) constructor);
}
String[] parameterNames = PARAMETER_DISCOVERER.getParameterNames(constructor);
String[] parameterNames = discoverer.getParameterNames(constructor);
Parameter<Object, P>[] parameters = new Parameter[parameterTypes.size()];
Annotation[][] parameterAnnotations = constructor.getParameterAnnotations();

6
src/main/java/org/springframework/data/repository/query/Parameters.java

@ -46,7 +46,7 @@ public abstract class Parameters<S extends Parameters<S, T>, T extends Parameter @@ -46,7 +46,7 @@ public abstract class Parameters<S extends Parameters<S, T>, T extends Parameter
+ "on all parameters except %s and %s typed once, or none at all!", Param.class.getSimpleName(),
Pageable.class.getSimpleName(), Sort.class.getSimpleName());
private final ParameterNameDiscoverer PARAMETER_DISCOVERER = new DefaultParameterNameDiscoverer();
private final ParameterNameDiscoverer discoverer = new DefaultParameterNameDiscoverer();
private final int pageableIndex;
private final int sortIndex;
private final List<T> parameters;
@ -54,7 +54,7 @@ public abstract class Parameters<S extends Parameters<S, T>, T extends Parameter @@ -54,7 +54,7 @@ public abstract class Parameters<S extends Parameters<S, T>, T extends Parameter
/**
* Creates a new instance of {@link Parameters}.
*
* @param method
* @param method must not be {@literal null}.
*/
public Parameters(Method method) {
@ -67,7 +67,7 @@ public abstract class Parameters<S extends Parameters<S, T>, T extends Parameter @@ -67,7 +67,7 @@ public abstract class Parameters<S extends Parameters<S, T>, T extends Parameter
for (int i = 0; i < types.size(); i++) {
MethodParameter methodParameter = new MethodParameter(method, i);
methodParameter.initParameterNameDiscovery(PARAMETER_DISCOVERER);
methodParameter.initParameterNameDiscovery(discoverer);
T parameter = createParameter(methodParameter);

7
src/main/java/org/springframework/data/repository/support/MethodParameters.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2012-2014 the original author or authors.
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -33,8 +33,7 @@ import org.springframework.util.Assert; @@ -33,8 +33,7 @@ import org.springframework.util.Assert;
*/
class MethodParameters {
private static final ParameterNameDiscoverer DISCOVERER = new DefaultParameterNameDiscoverer();
private final ParameterNameDiscoverer discoverer = new DefaultParameterNameDiscoverer();
private final List<MethodParameter> parameters;
/**
@ -61,7 +60,7 @@ class MethodParameters { @@ -61,7 +60,7 @@ class MethodParameters {
for (int i = 0; i < method.getParameterTypes().length; i++) {
MethodParameter parameter = new AnnotationNamingMethodParameter(method, i, namingAnnotation);
parameter.initParameterNameDiscovery(DISCOVERER);
parameter.initParameterNameDiscovery(discoverer);
parameters.add(parameter);
}
}

Loading…
Cancel
Save