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

com.github.bingoohuang.springrestclient.utils.RequestParamsHelper Maven / Gradle / Ivy

There is a newer version: 0.0.23
Show newest version
package com.github.bingoohuang.springrestclient.utils;

import com.google.common.collect.Maps;
import org.springframework.context.ApplicationContext;

import java.util.Map;

public class RequestParamsHelper {
    final Map fixedRequestParams;
    final Map requestParams;
    final ApplicationContext appContext;

    public RequestParamsHelper(Map fixedRequestParams, Map requestParams, ApplicationContext appContext) {
        this.fixedRequestParams = fixedRequestParams;
        this.requestParams = requestParams;
        this.appContext = appContext;
    }

    private boolean isQueryParam(String name) {
        return name.startsWith("q^");
    }

    private String parseQueryRealName(String name) {
        return name.substring(2);
    }

    Map createQueryParams() {
        Map queryParams = Maps.newHashMap();
        for (Map.Entry entry : fixedRequestParams.entrySet()) {
            String name = entry.getKey();
            if (isQueryParam(name)) {
                Object value = createFixedRequestParamValue(entry);
                queryParams.put(parseQueryRealName(name), value);
            }
        }

        for (Map.Entry entry : requestParams.entrySet()) {
            String name = entry.getKey();
            if (isQueryParam(name)) {
                queryParams.put(parseQueryRealName(name), entry.getValue());
            }
        }

        return queryParams;
    }

    Map mergeRequestParams() {
        Map mergedRequestParams = Maps.newHashMap();
        for (Map.Entry entry : fixedRequestParams.entrySet()) {
            String name = entry.getKey();
            Object value = createFixedRequestParamValue(entry);
            if (isQueryParam(name)) name = parseQueryRealName(name);
            mergedRequestParams.put(name, value);
        }

        for (Map.Entry entry : requestParams.entrySet()) {
            String name = entry.getKey();
            if (isQueryParam(name)) name = parseQueryRealName(name);
            mergedRequestParams.put(name, entry.getValue());
        }

        return mergedRequestParams;
    }


    Map mergeRequestParamsWithoutQueryParams() {
        Map mergedRequestParams = Maps.newHashMap();
        for (Map.Entry entry : fixedRequestParams.entrySet()) {
            String name = entry.getKey();
            Object value = createFixedRequestParamValue(entry);
            if (isQueryParam(name)) continue;

            mergedRequestParams.put(name, value);
        }

        for (Map.Entry entry : requestParams.entrySet()) {
            String name = entry.getKey();
            if (isQueryParam(name)) continue;

            mergedRequestParams.put(name, entry.getValue());
        }

        return mergedRequestParams;
    }

    private Object createFixedRequestParamValue(Map.Entry entry) {
        Object value = entry.getValue();
        if (value instanceof Class && value != void.class) {
            Class requiredType = (Class) value;
            Object bean = Obj.getOrCreateBean(appContext, requiredType);
            value = bean.toString();
        }
        return value;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy