diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java b/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java new file mode 100644 index 000000000..d89606224 --- /dev/null +++ b/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java @@ -0,0 +1,21 @@ +package com.nhn.hippo.web.calltree.server; + +import com.profiler.common.bo.SpanBo; +import com.profiler.common.bo.SubSpanBo; + +/** + * + */ +public class AgentIdNodeSelector implements NodeSelector { + + @Override + public String getServerId(SpanBo span) { + return span.getEndPoint(); + } + + @Override + public String getServerId(SubSpanBo span) { + return span.getEndPoint(); + } + +} diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java b/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java new file mode 100644 index 000000000..018f8a6bb --- /dev/null +++ b/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java @@ -0,0 +1,19 @@ +package com.nhn.hippo.web.calltree.server; + +import com.profiler.common.bo.SpanBo; +import com.profiler.common.bo.SubSpanBo; + +/** + * + */ +public class ApplicationIdNodeSelector implements NodeSelector { + @Override + public String getServerId(SpanBo span) { + return span.getServiceName(); + } + + @Override + public String getServerId(SubSpanBo span) { + return span.getDestinationId(); + } +} diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/NodeIdGenerator.java b/src/main/java/com/nhn/hippo/web/calltree/server/NodeIdGenerator.java deleted file mode 100644 index 7d17dada6..000000000 --- a/src/main/java/com/nhn/hippo/web/calltree/server/NodeIdGenerator.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.nhn.hippo.web.calltree.server; - -import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SubSpanBo; - -/** - * - * @author netspider - * - */ -public enum NodeIdGenerator { - - BY_SERVER_INSTANCE, BY_APPLICATION_NAME; - - public String makeServerId(SpanBo span) { - if (this == BY_SERVER_INSTANCE) { - return span.getEndPoint(); - } else if (this == BY_APPLICATION_NAME) { - return span.getServiceName(); - } else { - throw new IllegalArgumentException(); - } - } - - public String makeServerId(SubSpanBo span) { - if (this == BY_SERVER_INSTANCE) { - return span.getEndPoint(); - } else if (this == BY_APPLICATION_NAME) { - return span.getDestinationId(); - } else { - throw new IllegalArgumentException(); - } - } -} diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java b/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java new file mode 100644 index 000000000..6d3dd5ece --- /dev/null +++ b/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java @@ -0,0 +1,15 @@ +package com.nhn.hippo.web.calltree.server; + +import com.profiler.common.bo.SpanBo; +import com.profiler.common.bo.SubSpanBo; + +/** + * + */ +public interface NodeSelector { + + String getServerId(SpanBo span); + + String getServerId(SubSpanBo span); + +} diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/Server.java b/src/main/java/com/nhn/hippo/web/calltree/server/Server.java index 14c2ccc7e..0c3f428f6 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/Server.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/Server.java @@ -20,7 +20,7 @@ public class Server implements Comparable { protected int recursiveCallCount; - public Server(SubSpanBo span, NodeIdGenerator idGenerator) { + public Server(SubSpanBo span, NodeSelector nodeSelector) { if (span.getServiceType().isTerminal()) { this.agentIds.add(span.getAgentId()); } else { @@ -33,7 +33,7 @@ public class Server implements Comparable { this.applicationName = span.getEndPoint(); this.serviceType = ServiceType.UNKNOWN_CLOUD; } else { - this.id = idGenerator.makeServerId(span); + this.id = nodeSelector.getServerId(span); // this.id = span.getServiceName(); this.applicationName = span.getServiceName(); this.serviceType = span.getServiceType(); @@ -43,9 +43,9 @@ public class Server implements Comparable { this.recursiveCallCount = 0; } - public Server(SpanBo span, NodeIdGenerator idGenerator) { + public Server(SpanBo span, NodeSelector nodeSelector) { // this.id = span.getServiceName(); - this.id = idGenerator.makeServerId(span); + this.id = nodeSelector.getServerId(span); if (span.getServiceType().isTerminal()) { this.agentIds.add(span.getAgentId()); diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java b/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java index 1b2c14e73..bd33bffd6 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java @@ -29,7 +29,7 @@ public class ServerCallTree { private final Map servers = new HashMap(); private final Map serverRequests = new HashMap(); - private final NodeIdGenerator idGenerator; + private final NodeSelector nodeSelector; private boolean isBuilt = false; // temporary variables @@ -39,8 +39,8 @@ public class ServerCallTree { private final Map spanIdToClientId = new HashMap(); private final Map terminalRequests = new HashMap(); - public ServerCallTree(NodeIdGenerator idGenerator) { - this.idGenerator = idGenerator; + public ServerCallTree(NodeSelector nodeSelector) { + this.nodeSelector = nodeSelector; } public void addTerminalStatistics(TerminalStatistics terminal) { @@ -77,7 +77,7 @@ public class ServerCallTree { } public void addSubSpan(SubSpanBo subSpan) { - Server server = new Server(subSpan, idGenerator); + Server server = new Server(subSpan, nodeSelector); if (server.getId() == null) { return; @@ -100,7 +100,7 @@ public class ServerCallTree { } public void addSpan(SpanBo span) { - Server server = new Server(span, idGenerator); + Server server = new Server(span, nodeSelector); if (server.getId() == null) { return; diff --git a/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java b/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java index 8f357ee84..a03f8d4d8 100755 --- a/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java +++ b/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java @@ -8,13 +8,14 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import com.nhn.hippo.web.calltree.server.AgentIdNodeSelector; +import com.nhn.hippo.web.calltree.server.ApplicationIdNodeSelector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StopWatch; -import com.nhn.hippo.web.calltree.server.NodeIdGenerator; import com.nhn.hippo.web.calltree.server.ServerCallTree; import com.nhn.hippo.web.dao.ApplicationIndexDao; import com.nhn.hippo.web.dao.ApplicationTraceIndexDao; @@ -101,7 +102,7 @@ public class FlowChartServiceImpl implements FlowChartService { @Deprecated @Override public ServerCallTree selectServerCallTree(Set traceIds) { - final ServerCallTree tree = new ServerCallTree(NodeIdGenerator.BY_APPLICATION_NAME); + final ServerCallTree tree = new ServerCallTree(new ApplicationIdNodeSelector()); List> traces = this.traceDao.selectSpans(traceIds); @@ -166,7 +167,7 @@ public class FlowChartServiceImpl implements FlowChartService { * @return */ private ServerCallTree createServerCallTree(List transaction) { - ServerCallTree serverCallTree = new ServerCallTree(NodeIdGenerator.BY_SERVER_INSTANCE); + ServerCallTree serverCallTree = new ServerCallTree(new AgentIdNodeSelector()); serverCallTree.addSpanList(transaction); return serverCallTree; } @@ -192,7 +193,7 @@ public class FlowChartServiceImpl implements FlowChartService { @Override public ServerCallTree selectServerCallTree(Set traceIds, String applicationName, long from, long to) { final Map terminalQueryParams = new HashMap(); - final ServerCallTree tree = new ServerCallTree(NodeIdGenerator.BY_APPLICATION_NAME); + final ServerCallTree tree = new ServerCallTree(new ApplicationIdNodeSelector()); StopWatch watch = new StopWatch(); watch.start("scanNonTerminalSpans");