route.setEnabled(true);
} else {
route = routes.get(0);
}
Map<String, MatchPair> when = null;
MatchPair matchPair = null;
if(isFirst){
when = new HashMap<String, MatchPair>();
matchPair = new MatchPair(new HashSet<String>(),new HashSet<String>());
when.put("consumer.host", matchPair);
}else{
when = RouteRule.parseRule(route.getMatchRule());
matchPair = when.get("consumer.host");
}
if (only) {
matchPair.getUnmatches().clear();
matchPair.getMatches().clear();
if (allow) {
matchPair.getUnmatches().addAll(entry.getValue());
} else {
matchPair.getMatches().addAll(entry.getValue());
}
} else {
for (String consumerAddress : entry.getValue()) {
if(matchPair.getUnmatches().size() > 0) { // 白名单优先
matchPair.getMatches().remove(consumerAddress); // 去掉黑名单中相同数据
if (allow) { // 如果允许访问
matchPair.getUnmatches().add(consumerAddress); // 加入白名单
} else { // 如果禁止访问
matchPair.getUnmatches().remove(consumerAddress); // 从白名单中去除
}
} else { // 黑名单生效
if (allow) { // 如果允许访问
matchPair.getMatches().remove(consumerAddress); // 从黑名单中去除
} else { // 如果禁止访问
matchPair.getMatches().add(consumerAddress); // 加入黑名单
}
}
}
}
StringBuilder sb = new StringBuilder();
RouteRule.contidionToString(sb,when);
route.setMatchRule(sb.toString());
route.setUsername(operator);
if (matchPair.getMatches().size() > 0 || matchPair.getUnmatches().size() > 0) {
if(isFirst) {
routeService.createRoute(route);
} else {
routeService.updateRoute(route);
}