Polishing
This commit is contained in:
parent
a6b0261000
commit
4cb453bbdc
|
|
@ -21,7 +21,6 @@ import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.lang.reflect.TypeVariable;
|
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
import java.security.PrivilegedAction;
|
import java.security.PrivilegedAction;
|
||||||
import java.security.PrivilegedActionException;
|
import java.security.PrivilegedActionException;
|
||||||
|
|
@ -666,9 +665,8 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
||||||
if (Modifier.isStatic(factoryMethod.getModifiers()) == isStatic &&
|
if (Modifier.isStatic(factoryMethod.getModifiers()) == isStatic &&
|
||||||
factoryMethod.getName().equals(mbd.getFactoryMethodName()) &&
|
factoryMethod.getName().equals(mbd.getFactoryMethodName()) &&
|
||||||
factoryMethod.getParameterTypes().length >= minNrOfArgs) {
|
factoryMethod.getParameterTypes().length >= minNrOfArgs) {
|
||||||
TypeVariable<Method>[] declaredTypeVariables = factoryMethod.getTypeParameters();
|
|
||||||
// No declared type variables to inspect, so just process the standard return type.
|
// No declared type variables to inspect, so just process the standard return type.
|
||||||
if (declaredTypeVariables.length > 0) {
|
if (factoryMethod.getTypeParameters().length > 0) {
|
||||||
// Fully resolve parameter names and argument values.
|
// Fully resolve parameter names and argument values.
|
||||||
Class<?>[] paramTypes = factoryMethod.getParameterTypes();
|
Class<?>[] paramTypes = factoryMethod.getParameterTypes();
|
||||||
String[] paramNames = null;
|
String[] paramNames = null;
|
||||||
|
|
@ -747,15 +745,15 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
||||||
// Find the given factory method, taking into account that in the case of
|
// Find the given factory method, taking into account that in the case of
|
||||||
// @Bean methods, there may be parameters present.
|
// @Bean methods, there may be parameters present.
|
||||||
ReflectionUtils.doWithMethods(fbClass,
|
ReflectionUtils.doWithMethods(fbClass,
|
||||||
new ReflectionUtils.MethodCallback() {
|
new ReflectionUtils.MethodCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException {
|
public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException {
|
||||||
if (method.getName().equals(factoryMethodName) &&
|
if (method.getName().equals(factoryMethodName) &&
|
||||||
FactoryBean.class.isAssignableFrom(method.getReturnType())) {
|
FactoryBean.class.isAssignableFrom(method.getReturnType())) {
|
||||||
objectType.value = GenericTypeResolver.resolveReturnTypeArgument(method, FactoryBean.class);
|
objectType.value = GenericTypeResolver.resolveReturnTypeArgument(method, FactoryBean.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
if (objectType.value != null) {
|
if (objectType.value != null) {
|
||||||
return objectType.value;
|
return objectType.value;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -654,17 +654,12 @@ public class BeanFactoryGenericsTests {
|
||||||
/**
|
/**
|
||||||
* Tests support for parameterized static {@code factory-method} declarations such as
|
* Tests support for parameterized static {@code factory-method} declarations such as
|
||||||
* Mockito's {@code mock()} method which has the following signature.
|
* Mockito's {@code mock()} method which has the following signature.
|
||||||
*
|
|
||||||
* <pre>
|
* <pre>
|
||||||
* {@code
|
* {@code
|
||||||
* public static <T> T mock(Class<T> classToMock)
|
* public static <T> T mock(Class<T> classToMock)
|
||||||
* }
|
* }
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
* <p>See SPR-9493
|
||||||
* <p>
|
|
||||||
* See SPR-9493
|
|
||||||
*
|
|
||||||
* @since 3.2
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void parameterizedStaticFactoryMethod() {
|
public void parameterizedStaticFactoryMethod() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue