Skip to content

Commit d02d9ce

Browse files
committed
MethodParameter generally uses volatile variables where applicable now (as well as a local copy of the parameterNameDiscoverer field)
Issue: SPR-12453 (cherry picked from commit 7fcadaa)
1 parent cf50778 commit d02d9ce

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

spring-core/src/main/java/org/springframework/core/MethodParameter.java

+14-14
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ public class MethodParameter {
4848

4949
private final int parameterIndex;
5050

51-
private Class<?> parameterType;
51+
private volatile Class<?> parameterType;
5252

53-
private Type genericParameterType;
53+
private volatile Type genericParameterType;
5454

55-
private Annotation[] parameterAnnotations;
55+
private volatile Annotation[] parameterAnnotations;
5656

57-
private ParameterNameDiscoverer parameterNameDiscoverer;
57+
private volatile ParameterNameDiscoverer parameterNameDiscoverer;
5858

59-
private String parameterName;
59+
private volatile String parameterName;
6060

6161
private int nestingLevel = 1;
6262

@@ -335,10 +335,10 @@ public void initParameterNameDiscovery(ParameterNameDiscoverer parameterNameDisc
335335
* has been set to begin with)
336336
*/
337337
public String getParameterName() {
338-
if (this.parameterNameDiscoverer != null) {
338+
ParameterNameDiscoverer discoverer = this.parameterNameDiscoverer;
339+
if (discoverer != null) {
339340
String[] parameterNames = (this.method != null ?
340-
this.parameterNameDiscoverer.getParameterNames(this.method) :
341-
this.parameterNameDiscoverer.getParameterNames(this.constructor));
341+
discoverer.getParameterNames(this.method) : discoverer.getParameterNames(this.constructor));
342342
if (parameterNames != null) {
343343
this.parameterName = parameterNames[this.parameterIndex];
344344
}
@@ -414,15 +414,15 @@ private Map<Integer, Integer> getTypeIndexesPerLevel() {
414414
}
415415

416416
@Override
417-
public boolean equals(Object obj) {
418-
if (this == obj) {
417+
public boolean equals(Object other) {
418+
if (this == other) {
419419
return true;
420420
}
421-
if (obj != null && obj instanceof MethodParameter) {
422-
MethodParameter other = (MethodParameter) obj;
423-
return (this.parameterIndex == other.parameterIndex && getMember().equals(other.getMember()));
421+
if (!(other instanceof MethodParameter)) {
422+
return false;
424423
}
425-
return false;
424+
MethodParameter otherParam = (MethodParameter) other;
425+
return (this.parameterIndex == otherParam.parameterIndex && getMember().equals(otherParam.getMember()));
426426
}
427427

428428
@Override

0 commit comments

Comments
 (0)