Browse Source

Revised forClass argument names

Issue: SPR-14976
(cherry picked from commit 8ab977e)
pull/1290/head
Juergen Hoeller 9 years ago
parent
commit
ced7503d95
  1. 62
      spring-core/src/main/java/org/springframework/core/ResolvableType.java

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

@ -174,8 +174,8 @@ public class ResolvableType implements Serializable {
* Avoids all {@code instanceof} checks in order to create a straight {@link Class} wrapper. * Avoids all {@code instanceof} checks in order to create a straight {@link Class} wrapper.
* @since 4.2 * @since 4.2
*/ */
private ResolvableType(Class<?> sourceClass) { private ResolvableType(Class<?> clazz) {
this.resolved = (sourceClass != null ? sourceClass : Object.class); this.resolved = (clazz != null ? clazz : Object.class);
this.type = this.resolved; this.type = this.resolved;
this.typeProvider = null; this.typeProvider = null;
this.variableResolver = null; this.variableResolver = null;
@ -408,7 +408,7 @@ public class ResolvableType implements Serializable {
* {@link #getSuperType() supertype} and {@link #getInterfaces() interface} * {@link #getSuperType() supertype} and {@link #getInterfaces() interface}
* hierarchies to find a match, returning {@link #NONE} if this type does not * hierarchies to find a match, returning {@link #NONE} if this type does not
* implement or extend the specified class. * implement or extend the specified class.
* @param type the required class type * @param type the required type (typically narrowed)
* @return a {@link ResolvableType} representing this object as the specified * @return a {@link ResolvableType} representing this object as the specified
* type, or {@link #NONE} if not resolvable as that type * type, or {@link #NONE} if not resolvable as that type
* @see #asCollection() * @see #asCollection()
@ -923,14 +923,14 @@ public class ResolvableType implements Serializable {
* Return a {@link ResolvableType} for the specified {@link Class}, * Return a {@link ResolvableType} for the specified {@link Class},
* using the full generic type information for assignability checks. * using the full generic type information for assignability checks.
* For example: {@code ResolvableType.forClass(MyArrayList.class)}. * For example: {@code ResolvableType.forClass(MyArrayList.class)}.
* @param sourceClass the source class ({@code null} is semantically * @param clazz the class to introspect ({@code null} is semantically
* equivalent to {@code Object.class} for typical use cases here} * equivalent to {@code Object.class} for typical use cases here}
* @return a {@link ResolvableType} for the specified class * @return a {@link ResolvableType} for the specified class
* @see #forClass(Class, Class) * @see #forClass(Class, Class)
* @see #forClassWithGenerics(Class, Class...) * @see #forClassWithGenerics(Class, Class...)
*/ */
public static ResolvableType forClass(Class<?> sourceClass) { public static ResolvableType forClass(Class<?> clazz) {
return new ResolvableType(sourceClass); return new ResolvableType(clazz);
} }
/** /**
@ -938,15 +938,15 @@ public class ResolvableType implements Serializable {
* assignability checks against the raw class only (analogous to * assignability checks against the raw class only (analogous to
* {@link Class#isAssignableFrom}, which this serves as a wrapper for. * {@link Class#isAssignableFrom}, which this serves as a wrapper for.
* For example: {@code ResolvableType.forRawClass(List.class)}. * For example: {@code ResolvableType.forRawClass(List.class)}.
* @param sourceClass the source class ({@code null} is semantically * @param clazz the class to introspect ({@code null} is semantically
* equivalent to {@code Object.class} for typical use cases here} * equivalent to {@code Object.class} for typical use cases here}
* @return a {@link ResolvableType} for the specified class * @return a {@link ResolvableType} for the specified class
* @since 4.2 * @since 4.2
* @see #forClass(Class) * @see #forClass(Class)
* @see #getRawClass() * @see #getRawClass()
*/ */
public static ResolvableType forRawClass(Class<?> sourceClass) { public static ResolvableType forRawClass(Class<?> clazz) {
return new ResolvableType(sourceClass) { return new ResolvableType(clazz) {
@Override @Override
public boolean isAssignableFrom(Class<?> other) { public boolean isAssignableFrom(Class<?> other) {
return ClassUtils.isAssignable(getRawClass(), other); return ClassUtils.isAssignable(getRawClass(), other);
@ -960,50 +960,50 @@ public class ResolvableType implements Serializable {
} }
/** /**
* Return a {@link ResolvableType} for the specified {@link Class} * Return a {@link ResolvableType} for the specified base type
* with a given implementation. * (interface or base class) with a given implementation class.
* For example: {@code ResolvableType.forClass(List.class, MyArrayList.class)}. * For example: {@code ResolvableType.forClass(List.class, MyArrayList.class)}.
* @param sourceClass the source class (must not be {@code null} * @param baseType the base type (must not be {@code null})
* @param implementationClass the implementation class * @param implementationClass the implementation class
* @return a {@link ResolvableType} for the specified class backed by the given * @return a {@link ResolvableType} for the specified base type backed by the
* implementation class * given implementation class
* @see #forClass(Class) * @see #forClass(Class)
* @see #forClassWithGenerics(Class, Class...) * @see #forClassWithGenerics(Class, Class...)
*/ */
public static ResolvableType forClass(Class<?> sourceClass, Class<?> implementationClass) { public static ResolvableType forClass(Class<?> baseType, Class<?> implementationClass) {
Assert.notNull(sourceClass, "Source class must not be null"); Assert.notNull(baseType, "Base type must not be null");
ResolvableType asType = forType(implementationClass).as(sourceClass); ResolvableType asType = forType(implementationClass).as(baseType);
return (asType == NONE ? forType(sourceClass) : asType); return (asType == NONE ? forType(baseType) : asType);
} }
/** /**
* Return a {@link ResolvableType} for the specified {@link Class} with pre-declared generics. * Return a {@link ResolvableType} for the specified {@link Class} with pre-declared generics.
* @param sourceClass the source class * @param clazz the class (or interface) to introspect
* @param generics the generics of the class * @param generics the generics of the class
* @return a {@link ResolvableType} for the specific class and generics * @return a {@link ResolvableType} for the specific class and generics
* @see #forClassWithGenerics(Class, ResolvableType...) * @see #forClassWithGenerics(Class, ResolvableType...)
*/ */
public static ResolvableType forClassWithGenerics(Class<?> sourceClass, Class<?>... generics) { public static ResolvableType forClassWithGenerics(Class<?> clazz, Class<?>... generics) {
Assert.notNull(sourceClass, "Source class must not be null"); Assert.notNull(clazz, "Class must not be null");
Assert.notNull(generics, "Generics must not be null"); Assert.notNull(generics, "Generics array must not be null");
ResolvableType[] resolvableGenerics = new ResolvableType[generics.length]; ResolvableType[] resolvableGenerics = new ResolvableType[generics.length];
for (int i = 0; i < generics.length; i++) { for (int i = 0; i < generics.length; i++) {
resolvableGenerics[i] = forClass(generics[i]); resolvableGenerics[i] = forClass(generics[i]);
} }
return forClassWithGenerics(sourceClass, resolvableGenerics); return forClassWithGenerics(clazz, resolvableGenerics);
} }
/** /**
* Return a {@link ResolvableType} for the specified {@link Class} with pre-declared generics. * Return a {@link ResolvableType} for the specified {@link Class} with pre-declared generics.
* @param sourceClass the source class * @param clazz the class (or interface) to introspect
* @param generics the generics of the class * @param generics the generics of the class
* @return a {@link ResolvableType} for the specific class and generics * @return a {@link ResolvableType} for the specific class and generics
* @see #forClassWithGenerics(Class, Class...) * @see #forClassWithGenerics(Class, Class...)
*/ */
public static ResolvableType forClassWithGenerics(Class<?> sourceClass, ResolvableType... generics) { public static ResolvableType forClassWithGenerics(Class<?> clazz, ResolvableType... generics) {
Assert.notNull(sourceClass, "Source class must not be null"); Assert.notNull(clazz, "Class must not be null");
Assert.notNull(generics, "Generics must not be null"); Assert.notNull(generics, "Generics array must not be null");
TypeVariable<?>[] variables = sourceClass.getTypeParameters(); TypeVariable<?>[] variables = clazz.getTypeParameters();
Assert.isTrue(variables.length == generics.length, "Mismatched number of generics specified"); Assert.isTrue(variables.length == generics.length, "Mismatched number of generics specified");
Type[] arguments = new Type[generics.length]; Type[] arguments = new Type[generics.length];
@ -1013,7 +1013,7 @@ public class ResolvableType implements Serializable {
arguments[i] = (argument != null ? argument : variables[i]); arguments[i] = (argument != null ? argument : variables[i]);
} }
ParameterizedType syntheticType = new SyntheticParameterizedType(sourceClass, arguments); ParameterizedType syntheticType = new SyntheticParameterizedType(clazz, arguments);
return forType(syntheticType, new TypeVariablesVariableResolver(variables, generics)); return forType(syntheticType, new TypeVariablesVariableResolver(variables, generics));
} }
@ -1077,8 +1077,8 @@ public class ResolvableType implements Serializable {
*/ */
public static ResolvableType forField(Field field, ResolvableType implementationType) { public static ResolvableType forField(Field field, ResolvableType implementationType) {
Assert.notNull(field, "Field must not be null"); Assert.notNull(field, "Field must not be null");
implementationType = (implementationType == null ? NONE : implementationType); ResolvableType owner = (implementationType != null ? implementationType : NONE);
ResolvableType owner = implementationType.as(field.getDeclaringClass()); owner = owner.as(field.getDeclaringClass());
return forType(null, new FieldTypeProvider(field), owner.asVariableResolver()); return forType(null, new FieldTypeProvider(field), owner.asVariableResolver());
} }

Loading…
Cancel
Save