package io.muoncore.spring.methodinvocation;
import io.muoncore.protocol.requestresponse.server.RequestWrapper;
import io.muoncore.spring.methodinvocation.parameterhandlers.MethodArgumentTransformer;
import io.muoncore.spring.methodinvocation.parameterhandlers.PayloadArgumentTransformer;
import io.muoncore.spring.methodinvocation.parameterhandlers.ResourceMethodArgumentTransformerFactory;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.lang.reflect.Type;
public class MuonRequestMethodInvocation extends AbstractMuonMethodInvocation<RequestWrapper> {
public MuonRequestMethodInvocation(Method method, Object bean) {
super(bean, method);
initArgumentTransformers();
}
private void initArgumentTransformers() {
for (Parameter parameterType : method.getParameters()) {
argumentTransformers.add(ResourceMethodArgumentTransformerFactory.createMethodParameterHandler(parameterType));
}
}
public Type getDecodedParameterType() {
for (MethodArgumentTransformer methodArgumentTransformer : argumentTransformers) {
if (methodArgumentTransformer instanceof PayloadArgumentTransformer) {
return methodArgumentTransformer.getParameterType();
}
}
return Object.class;
}
}