All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.jfunc.http.holder.ValuesMapHolder Maven / Gradle / Ivy

package top.jfunc.http.holder;

import top.jfunc.common.utils.MultiValueMap;

import java.util.Map;

/**
 * 多值处理器,对于Query、Header、Form参数可能存在k-v1、v2的情况
 * @author xiongshiyan
 */
public interface ValuesMapHolder {
    /**
     * 请求的多值参数
     * @return MultiValueMap maybe Nullable
     */
    MultiValueMap get();

    /**
     * 设置MultiValueMap
     * @param multiValueMap 多值参数
     * @return this
     */
    ValuesMapHolder set(MultiValueMap multiValueMap);

    /**
     * 设置Map
     * @param map 单值参数兼容
     * @return this
     */
    ValuesMapHolder set(Map map);

    /**
     * 添加,set方式
     * @param key key
     * @param value value
     * @return this
     */
    ValuesMapHolder set(String key, String value);

    /**
     * set多个kv
     * @param entry kv
     * @param entries kvs
     * @return this
     */
    default ValuesMapHolder set(Map.Entry entry, Map.Entry... entries){
        set(entry.getKey() , entry.getValue());
        for (Map.Entry kv : entries) {
            set(kv.getKey() , kv.getValue());
        }
        return this;
    }

    /**
     * set多个kv
     * @param entries kvs
     * @return this
     */
    @SuppressWarnings("unchecked")
    default ValuesMapHolder set(Iterable> entries){
        entries.forEach(this::set);
        return this;
    }




    /**
     * 添加,add方式
     * @param key key
     * @param value value
     * @return this
     */
    ValuesMapHolder add(String key, String value);

    /**
     * 添加
     * @param key key
     * @param value value
     * @param values values
     * @return this
     */
    ValuesMapHolder add(String key, String value, String... values);

    /**
     * 添加
     * @param key key
     * @param values values
     * @return this
     */
    ValuesMapHolder add(String key, Iterable values);

    /**
     * 添加Iterable
     * @param multiValueEntries Iterable
     * @return this
     */
    ValuesMapHolder add(Iterable>> multiValueEntries);

    /**
     * 添加Map.Entry>
     * @param entry Map.Entry
     * @param entries Map.Entry
     * @return this
     */
    ValuesMapHolder add(Map.Entry> entry, Map.Entry>... entries);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy