package io.muoncore.spring.methodinvocation.parameterhandlers; import io.muoncore.protocol.requestresponse.server.RequestWrapper; import java.lang.reflect.Parameter; import java.lang.reflect.Type; import java.util.Map; public class PayloadArgumentTransformer implements MethodArgumentTransformer { private Parameter parameter; public PayloadArgumentTransformer(Parameter parameter) { this.parameter = parameter; } @Override public Type getParameterType() { return parameter.getParameterizedType(); } @Override public Object extractArgument(Object muonRequest) { if (muonRequest instanceof RequestWrapper) { return ((RequestWrapper) muonRequest).getRequest().getPayload(Map.class); } else { throw new IllegalStateException("@DecodedContent annotation should be used only on resource handlers"); } } }