org.springframework.core.MethodParameter#forParameter ( )源码实例Demo

下面列出了org.springframework.core.MethodParameter#forParameter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private static TypeDescriptor createTypeDescriptor(Method method, int paramIndex) {
	Parameter parameter = method.getParameters()[paramIndex];
	MethodParameter methodParameter = MethodParameter.forParameter(parameter);
	TypeDescriptor typeDescriptor = new TypeDescriptor(methodParameter);

	// Feign applies the Param.Expander to each element of an Iterable, so in those
	// cases we need to provide a TypeDescriptor of the element.
	if (typeDescriptor.isAssignableTo(ITERABLE_TYPE_DESCRIPTOR)) {
		TypeDescriptor elementTypeDescriptor = getElementTypeDescriptor(
				typeDescriptor);

		checkState(elementTypeDescriptor != null,
				"Could not resolve element type of Iterable type %s. Not declared?",
				typeDescriptor);

		typeDescriptor = elementTypeDescriptor;
	}
	return typeDescriptor;
}
 
@Test
void testSupport() throws Exception {
    AnyOsFileValueProvider providerForAll = new AnyOsFileValueProvider(true);

    Method method = TestCommand.class.getDeclaredMethod("test", File.class, File.class, String.class);

    MethodParameter paramFileWithProvider = MethodParameter.forParameter(method.getParameters()[0]);
    MethodParameter paramWithoutProvider = MethodParameter.forParameter(method.getParameters()[1]);
    MethodParameter paramNotFile = MethodParameter.forParameter(method.getParameters()[2]);

    assertTrue(providerForAll.supports(paramFileWithProvider, null));
    assertTrue(providerForAll.supports(paramWithoutProvider, null));
    assertFalse(providerForAll.supports(paramNotFile, null));

    AnyOsFileValueProvider providerForDeclaredOnly = new AnyOsFileValueProvider(false);
    assertTrue(providerForDeclaredOnly.supports(paramFileWithProvider, null));
    assertFalse(providerForDeclaredOnly.supports(paramWithoutProvider, null));
    assertFalse(providerForDeclaredOnly.supports(paramNotFile, null));
}