
cc.shacocloud.mirage.restful.bind.support.AbstractNamedValueMethodArgumentResolver Maven / Gradle / Ivy
package cc.shacocloud.mirage.restful.bind.support;
import cc.shacocloud.mirage.restful.HandleMethodArgumentResolver;
import cc.shacocloud.mirage.restful.HttpRequest;
import cc.shacocloud.mirage.restful.bind.ValueConstants;
import cc.shacocloud.mirage.restful.bind.WebDataBinder;
import cc.shacocloud.mirage.restful.bind.WebDataBinderFactory;
import cc.shacocloud.mirage.restful.exception.HttpRequestBindMissingException;
import cc.shacocloud.mirage.restful.exception.HttpRequestBindingException;
import cc.shacocloud.mirage.restful.exception.MethodArgumentTypeMismatchException;
import cc.shacocloud.mirage.utils.MethodParameter;
import cc.shacocloud.mirage.utils.converter.TypeDescriptor;
import cc.shacocloud.mirage.utils.converter.TypeMismatchException;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.vertx.core.Future;
import lombok.Getter;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* 抽象基类,用于从指定值解析方法参数。请求参数、请求头和路径变量都是命名值的例子。每个都可能有一个名称、一个是否必需的标志和一个默认值。
*
*
* 子类定义如何做以下事情:
*
* - 获取方法参数的命名值信息
*
- 将名称解析为参数值
*
- 当需要参数值时处理缺少的参数值
*
- 可选地处理解析值
*
*/
public abstract class AbstractNamedValueMethodArgumentResolver extends AbstractArgumentValidateResolver implements HandleMethodArgumentResolver {
private final Map namedValueInfoCache = new ConcurrentHashMap<>(256);
@Override
public Future
© 2015 - 2025 Weber Informatics LLC | Privacy Policy