package io.muoncore.spring.methodinvocation;
import io.muoncore.spring.methodinvocation.parameterhandlers.PassThroughArgumentTransformer;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.lang.reflect.Type;
public class MuonStreamMethodInvocation extends AbstractMuonMethodInvocation<Object> {
public MuonStreamMethodInvocation(Method method, Object bean) {
super(bean, method);
initArgumentTransformers();
}
private void initArgumentTransformers() {
//TODO Shall we support invocations with parameterCount == 0?
if (method.getParameterCount() > 1) {
throw new IllegalStateException("Streaming subscription handles should have only one parameter, event object");
}
for (Parameter parameter : method.getParameters()) {
argumentTransformers.add(new PassThroughArgumentTransformer(parameter));
}
}
public Type getDecodedParameterType() {
if (argumentTransformers.get(0) != null) {
return argumentTransformers.get(0).getParameterType();
} else {
return Object.class;
}
}
}