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

com.alibaba.csp.ahas.sentinel.datasource.parser.fallback.BlockFallbackConfigListParser Maven / Gradle / Ivy

There is a newer version: 1.11.6
Show newest version
package com.alibaba.csp.ahas.sentinel.datasource.parser.fallback;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import com.alibaba.csp.sentinel.datasource.Converter;
import com.alibaba.csp.sentinel.datasource.acm.DataAcmFormat;
import com.alibaba.csp.sentinel.setting.fallback.BlockFallbackConfig;
import com.alibaba.csp.sentinel.setting.fallback.BlockFallbackConfig.WebBlockFallbackBehavior;
import com.alibaba.csp.sentinel.setting.fallback.BlockFallbackConstants;
import com.alibaba.csp.sentinel.util.StringUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

/**
 * @author Eric Zhao
 */
public class BlockFallbackConfigListParser implements Converter>> {

    @Override
    public List> convert(String source) {
        if (StringUtil.isBlank(source)) {
            return null;
        }
        String data = new DataAcmFormat(source).getData();
        if (StringUtil.isBlank(data)) {
            return null;
        }
        JSONArray arr = JSON.parseArray(data);
        List> list = new ArrayList<>();
        if (arr.isEmpty()) {
            return list;
        }
        for (Object obj : arr) {
            if (obj instanceof JSONObject) {
                JSONObject item = (JSONObject) obj;
                Integer targetResourceType = item.getInteger("targetResourceType");
                if (targetResourceType == null || !BlockFallbackConstants.isResourceTypeSupported(targetResourceType)) {
                    continue;
                }
                if (targetResourceType == BlockFallbackConstants.TARGET_RES_TYPE_WEB) {
                    list.add(item.>toJavaObject(
                        new TypeReference>() {}));
                }
            }
        }
        return list;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy