DATAREST-702 - Tweaked ResourceProcessorHandlerMethodReturnValueHandler to handle potentially proxied ResourceProcessors.
This commit is contained in:
@@ -85,8 +85,7 @@ public class ResourceProcessorHandlerMethodReturnValueHandler implements Handler
|
||||
for (ResourceProcessor<?> processor : processors) {
|
||||
|
||||
ResolvableType processorType = ResolvableType.forClass(ResourceProcessor.class, processor.getClass());
|
||||
ResolvableType componentType = processorType.getGeneric(0);
|
||||
Class<?> rawType = getRawType(componentType);
|
||||
Class<?> rawType = processorType.getGeneric(0).resolve();
|
||||
|
||||
if (Resource.class.isAssignableFrom(rawType)) {
|
||||
this.processors.add(new ResourceProcessorWrapper(processor));
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.springframework.aop.framework.ProxyFactory;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.data.projection.ProjectionFactory;
|
||||
@@ -283,6 +284,20 @@ public class ResourceProcessorHandlerMethodReturnValueHandlerUnitTests {
|
||||
assertThat(wrapper.supports(type, value), is(false));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DATAREST-702
|
||||
*/
|
||||
@Test
|
||||
public void registersProcessorForProxyType() {
|
||||
|
||||
ProjectionProcessor processor = new ProjectionProcessor();
|
||||
ProxyFactory factory = new ProxyFactory(processor);
|
||||
|
||||
resourceProcessors.add((ResourceProcessor<?>) factory.getProxy());
|
||||
|
||||
new ResourceProcessorHandlerMethodReturnValueHandler(delegate, resourceProcessors);
|
||||
}
|
||||
|
||||
// Helpers ---------------------------------------------------------//
|
||||
private void invokeReturnValueHandler(String method, final Matcher<?> matcher, Object returnValue) throws Exception {
|
||||
final MethodParameter methodParam = METHOD_PARAMS.get(method);
|
||||
|
||||
Reference in New Issue
Block a user