diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/CategorizedChainInfo.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/CategorizedChainInfo.java index 61e7584e1..1c7c8f7e1 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/CategorizedChainInfo.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/CategorizedChainInfo.java @@ -45,15 +45,14 @@ public class CategorizedChainInfo { } public boolean isContained(UncategorizeChainInfo uncategorizeChainInfo) { - - if (children_Token.contains(uncategorizeChainInfo.getChainToken())) { - return false; - } - Pattern pattern = Pattern.compile(uncategorizeChainInfo.getNodeRegEx()); return pattern.matcher(getChainStr()).find(); } + public boolean isAlreadyContained(UncategorizeChainInfo uncategorizeChainInfo) { + return children_Token.contains(uncategorizeChainInfo.getChainToken()); + } + public void add(UncategorizeChainInfo uncategorizeChainInfo) { children_Token.add(uncategorizeChainInfo.getChainToken()); } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainDetail.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainDetail.java index 431122363..04e379c7f 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainDetail.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainDetail.java @@ -1,9 +1,7 @@ package com.ai.cloud.skywalking.analysis.model; -/** - * Created by astraea on 2016/1/21. - */ public class ChainDetail { + public ChainDetail(ChainInfo chainInfo) { } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainRelate.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainRelate.java index 8751de5f1..66f443276 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainRelate.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/model/ChainRelate.java @@ -35,18 +35,21 @@ public class ChainRelate { private void classifiedChains(UncategorizeChainInfo child) { boolean isContained = false; for (Map.Entry entry : categorizedChainInfoMap.entrySet()) { - if (entry.getValue().isContained(child)) { + + if (!entry.getValue().isAlreadyContained(child) && entry.getValue().isContained(child)) { entry.getValue().add(child); isContained = true; + } - + if (!entry.getValue().isAlreadyContained(child)) { + chainDetailMap.put(child.getChainToken(), new ChainDetail(child)); } } if (!isContained) { uncategorizeChainInfoList.add(child); - if (!uncategorizeChainInfoList.contains(child)){ + if (!uncategorizeChainInfoList.contains(child)) { chainDetailMap.put(child.getChainToken(), new ChainDetail(child)); }