Skip to content

Commit b67dbe6

Browse files
committed
Revise use of ResolvableType in MethodParameter
Includes consistent use of getContainingClass()
1 parent 8b1a2a7 commit b67dbe6

File tree

2 files changed

+10
-18
lines changed

2 files changed

+10
-18
lines changed

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

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,7 @@ public MethodParameter(Constructor<?> constructor, int parameterIndex, int nesti
160160
* @param containingClass the containing class
161161
* @since 5.2
162162
*/
163-
MethodParameter(Executable executable, int parameterIndex,
164-
@Nullable Class<?> containingClass) {
165-
163+
MethodParameter(Executable executable, int parameterIndex, @Nullable Class<?> containingClass) {
166164
Assert.notNull(executable, "Executable must not be null");
167165
this.executable = executable;
168166
this.parameterIndex = validateIndex(executable, parameterIndex);
@@ -488,9 +486,7 @@ public Class<?> getParameterType() {
488486
if (paramType != null) {
489487
return paramType;
490488
}
491-
if (this.containingClass != null) {
492-
paramType = ResolvableType.forMethodParameter(this, null, 1, null).resolve();
493-
}
489+
paramType = ResolvableType.forMethodParameter(this, null, 1).resolve();
494490
if (paramType == null) {
495491
paramType = computeParameterType();
496492
}
@@ -760,7 +756,7 @@ public boolean equals(@Nullable Object other) {
760756
return false;
761757
}
762758
MethodParameter otherParam = (MethodParameter) other;
763-
return (this.containingClass == otherParam.containingClass &&
759+
return (getContainingClass() == otherParam.getContainingClass() &&
764760
ObjectUtils.nullSafeEquals(this.typeIndexesPerLevel, otherParam.typeIndexesPerLevel) &&
765761
this.nestingLevel == otherParam.nestingLevel &&
766762
this.parameterIndex == otherParam.parameterIndex &&
@@ -925,11 +921,10 @@ static private Class<?> getReturnType(Method method) {
925921
KFunction<?> function = ReflectJvmMapping.getKotlinFunction(method);
926922
if (function != null && function.isSuspend()) {
927923
Type paramType = ReflectJvmMapping.getJavaType(function.getReturnType());
928-
Class<?> paramClass = ResolvableType.forType(paramType).resolve();
929-
Assert.notNull(paramClass, "Type " + paramType + "can't be resolved to a class");
930-
return paramClass;
924+
return ResolvableType.forType(paramType).resolve(method.getReturnType());
931925
}
932926
return method.getReturnType();
933927
}
934928
}
929+
935930
}

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,10 +1300,7 @@ public static ResolvableType forMethodParameter(MethodParameter methodParameter,
13001300
*/
13011301
public static ResolvableType forMethodParameter(MethodParameter methodParameter, @Nullable Type targetType) {
13021302
Assert.notNull(methodParameter, "MethodParameter must not be null");
1303-
int nestingLevel = methodParameter.getNestingLevel();
1304-
Map<Integer, Integer> typeIndexesPerLevel = methodParameter.typeIndexesPerLevel;
1305-
return forMethodParameter(methodParameter, targetType, nestingLevel,
1306-
typeIndexesPerLevel);
1303+
return forMethodParameter(methodParameter, targetType, methodParameter.getNestingLevel());
13071304
}
13081305

13091306
/**
@@ -1313,16 +1310,16 @@ public static ResolvableType forMethodParameter(MethodParameter methodParameter,
13131310
* @param methodParameter the source method parameter (must not be {@code null})
13141311
* @param targetType the type to resolve (a part of the method parameter's type)
13151312
* @param nestingLevel the nesting level to use
1316-
* @param typeIndexesPerLevel the type indexes per nesting level
13171313
* @return a {@link ResolvableType} for the specified method parameter
13181314
* @since 5.2
13191315
* @see #forMethodParameter(Method, int)
13201316
*/
1321-
static ResolvableType forMethodParameter(MethodParameter methodParameter, @Nullable Type targetType,
1322-
int nestingLevel, @Nullable Map<Integer, Integer> typeIndexesPerLevel) {
1317+
static ResolvableType forMethodParameter(
1318+
MethodParameter methodParameter, @Nullable Type targetType, int nestingLevel) {
1319+
13231320
ResolvableType owner = forType(methodParameter.getContainingClass()).as(methodParameter.getDeclaringClass());
13241321
return forType(targetType, new MethodParameterTypeProvider(methodParameter), owner.asVariableResolver()).
1325-
getNested(nestingLevel, typeIndexesPerLevel);
1322+
getNested(nestingLevel, methodParameter.typeIndexesPerLevel);
13261323
}
13271324

13281325
/**

0 commit comments

Comments
 (0)