package com.dianping.pigeon.remoting.test;
import com.dianping.pigeon.remoting.common.codec.json.JacksonSerializer;
import com.google.common.collect.Maps;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by chenchongze on 16/9/2.
*/
public class JacksonTest {
@Test
public void test1() {
parseMethodAppLimitConfig("{\"api#method\" : {\"invoker1\":50, \"invoker2\":100}}");
System.out.println("ok");
}
// api#method --> {app1 --> qpslimit, app2 --> qpslimit}
private static volatile Map<String, Map<String, Long>> methodAppLimitMap = Maps.newConcurrentMap();
private static final JacksonSerializer jacksonSerializer = new JacksonSerializer();
private static void parseMethodAppLimitConfig(String methodAppLimitConfig) {
if (StringUtils.isNotBlank(methodAppLimitConfig)) {
Map<String, Map<String, Long>> map = Maps.newConcurrentMap();
try {
map = (HashMap) jacksonSerializer.toObject(HashMap.class, methodAppLimitConfig);
methodAppLimitMap.clear();
methodAppLimitMap = new ConcurrentHashMap<>(map);
} catch (Throwable t) {
System.out.println(t.toString());
}
}
}
}