mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-23 11:46:46 +10:00
[강운덕] [WEB-57] 수정된 코드는 롤빽하고, view 생성 부분에서 []를 {} 로 생성하도록 수정함. node를 jackson json으로 생성하도록 수정
git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-web/trunk@3459 84d0f5b1-2673-498c-a247-62c4ff18d310
This commit is contained in:
@@ -4,9 +4,12 @@ import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import com.nhn.pinpoint.web.applicationmap.rawdata.CallHistogramList;
|
||||
import com.nhn.pinpoint.web.view.NodeSerializer;
|
||||
import com.nhn.pinpoint.web.vo.Application;
|
||||
import com.nhn.pinpoint.web.vo.ResponseHistogramSummary;
|
||||
import org.codehaus.jackson.annotate.JsonIgnore;
|
||||
import org.codehaus.jackson.map.ObjectMapper;
|
||||
import org.codehaus.jackson.map.annotate.JsonSerialize;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -20,6 +23,7 @@ import com.nhn.pinpoint.web.util.JsonSerializable;
|
||||
* @author netspider
|
||||
* @author emeroad
|
||||
*/
|
||||
@JsonSerialize(using = NodeSerializer.class)
|
||||
public class Node implements JsonSerializable {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
@@ -30,6 +34,7 @@ public class Node implements JsonSerializable {
|
||||
private ServerBuilder serverBuilder = new ServerBuilder();
|
||||
private ServerInstanceList serverInstanceList;
|
||||
|
||||
|
||||
private ResponseHistogramSummary responseHistogramSummary;
|
||||
// 임시로 생성.
|
||||
private static final ObjectMapper MAPPER = new ObjectMapper();
|
||||
@@ -78,18 +83,21 @@ public class Node implements JsonSerializable {
|
||||
this.serverBuilder = null;
|
||||
}
|
||||
|
||||
public Map<String, List<ServerInstance>> getServerInstanceList() {
|
||||
return serverInstanceList.getServerInstanceList();
|
||||
public ServerInstanceList getServerInstanceList() {
|
||||
return serverInstanceList;
|
||||
}
|
||||
|
||||
public String getServerInstanceListJson() {
|
||||
@JsonIgnore
|
||||
public String getNodeJson() {
|
||||
try {
|
||||
return MAPPER.writeValueAsString(serverInstanceList);
|
||||
return MAPPER.writeValueAsString(this);
|
||||
} catch (IOException ex) {
|
||||
throw new RuntimeException(ex.getMessage(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Application getApplication() {
|
||||
return application;
|
||||
}
|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
package com.nhn.pinpoint.web.view;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.codehaus.jackson.map.annotate.JsonSerialize;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author emeroad
|
||||
* @author netspider
|
||||
*/
|
||||
@JsonSerialize(using=AgentResponseTimeViewModelSerializer.class)
|
||||
public class AgentResponseTimeViewModel {
|
||||
|
||||
// private final String agentName;
|
||||
private final String agentName;
|
||||
|
||||
private final List<ResponseTimeViewModel> responseTimeViewModel;
|
||||
|
||||
// public AgentResponseTimeViewModel(String agentName, List<ResponseTimeViewModel> responseTimeViewModel) {
|
||||
public AgentResponseTimeViewModel(List<ResponseTimeViewModel> responseTimeViewModel) {
|
||||
// if (agentName == null) {
|
||||
// throw new NullPointerException("agentName must not be null");
|
||||
// }
|
||||
public AgentResponseTimeViewModel(String agentName, List<ResponseTimeViewModel> responseTimeViewModel) {
|
||||
if (agentName == null) {
|
||||
throw new NullPointerException("agentName must not be null");
|
||||
}
|
||||
if (responseTimeViewModel == null) {
|
||||
throw new NullPointerException("responseTimeViewModel must not be null");
|
||||
}
|
||||
// this.agentName = agentName;
|
||||
this.agentName = agentName;
|
||||
this.responseTimeViewModel = responseTimeViewModel;
|
||||
}
|
||||
|
||||
// public String getAgentName() {
|
||||
// return agentName;
|
||||
// }
|
||||
public String getAgentName() {
|
||||
return agentName;
|
||||
}
|
||||
|
||||
public List<ResponseTimeViewModel> getResponseTimeViewModel() {
|
||||
return responseTimeViewModel;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,22 +1,30 @@
|
||||
package com.nhn.pinpoint.web.view;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.codehaus.jackson.JsonGenerator;
|
||||
import org.codehaus.jackson.JsonProcessingException;
|
||||
import org.codehaus.jackson.map.JsonSerializer;
|
||||
import org.codehaus.jackson.map.SerializerProvider;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author emeroad
|
||||
* @author netspider
|
||||
*/
|
||||
public class AgentResponseTimeViewModelSerializer extends JsonSerializer<AgentResponseTimeViewModel> {
|
||||
@Override
|
||||
public void serialize(AgentResponseTimeViewModel value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
|
||||
// jgen.writeStartObject();
|
||||
// jgen.writeFieldName(value.getAgentName());
|
||||
jgen.writeObject(value.getResponseTimeViewModel());
|
||||
// jgen.writeEndObject();
|
||||
jgen.writeStartObject();
|
||||
jgen.writeFieldName(value.getAgentName());
|
||||
|
||||
List<ResponseTimeViewModel> responseTimeViewModelList = value.getResponseTimeViewModel();
|
||||
jgen.writeStartObject();
|
||||
for (ResponseTimeViewModel responseTimeViewModel : responseTimeViewModelList) {
|
||||
jgen.writeFieldName(responseTimeViewModel.getColumnName());
|
||||
jgen.writeObject(responseTimeViewModel.getColumnValue());
|
||||
}
|
||||
jgen.writeEndObject();
|
||||
|
||||
jgen.writeEndObject();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
package com.nhn.pinpoint.web.view;
|
||||
|
||||
import com.nhn.pinpoint.common.ServiceType;
|
||||
import com.nhn.pinpoint.web.applicationmap.Node;
|
||||
import com.nhn.pinpoint.web.applicationmap.rawdata.Histogram;
|
||||
import com.nhn.pinpoint.web.vo.ResponseHistogramSummary;
|
||||
import org.codehaus.jackson.JsonGenerator;
|
||||
import org.codehaus.jackson.JsonProcessingException;
|
||||
import org.codehaus.jackson.map.JsonSerializer;
|
||||
import org.codehaus.jackson.map.SerializerProvider;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author emeroad
|
||||
*/
|
||||
public class NodeSerializer extends JsonSerializer<Node> {
|
||||
@Override
|
||||
public void serialize(Node node, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
|
||||
jgen.writeStartObject();
|
||||
jgen.writeStringField("id", node.getNodeName());
|
||||
jgen.writeStringField("key", node.getNodeName());
|
||||
|
||||
jgen.writeStringField("text", node.getApplicationName());
|
||||
|
||||
jgen.writeStringField("category", node.getServiceType().toString());
|
||||
|
||||
final ServiceType serviceType = node.getApplication().getServiceType();
|
||||
if (serviceType.isUser()) {
|
||||
jgen.writeStringField("fig", "Ellipse");
|
||||
} else if(serviceType.isWas()) {
|
||||
jgen.writeStringField("fig", "RoundedRectangle");
|
||||
} else {
|
||||
jgen.writeStringField("fig", "Rectangle");
|
||||
}
|
||||
|
||||
jgen.writeStringField("serviceTypeCode", Short.toString(serviceType.getCode()));
|
||||
jgen.writeStringField("terminal", Boolean.toString(serviceType.isTerminal()));
|
||||
jgen.writeBooleanField("isWas", serviceType.isWas());
|
||||
|
||||
writeHistogram(jgen, node);
|
||||
|
||||
jgen.writeObjectField("serverList", node.getServerInstanceList());
|
||||
|
||||
jgen.writeEndObject();
|
||||
}
|
||||
|
||||
private void writeHistogram(JsonGenerator jgen, Node node) throws IOException {
|
||||
final ServiceType serviceType = node.getServiceType();
|
||||
final ResponseHistogramSummary responseHistogramSummary = node.getResponseHistogramSummary();
|
||||
if (serviceType.isWas() || serviceType.isTerminal() || serviceType.isUnknown() || serviceType.isUser()) {
|
||||
Histogram applicationHistogram = responseHistogramSummary.getApplicationHistogram();
|
||||
if (applicationHistogram == null) {
|
||||
writeEmptyObject(jgen, "histogram");
|
||||
} else {
|
||||
jgen.writeObjectField("histogram", applicationHistogram);
|
||||
}
|
||||
|
||||
Map<String, Histogram> agentHistogramMap = responseHistogramSummary.getAgentHistogramMap();
|
||||
if(agentHistogramMap == null) {
|
||||
writeEmptyObject(jgen, "agentHistogram");
|
||||
} else {
|
||||
jgen.writeObjectField("agentHistogram", agentHistogramMap);
|
||||
}
|
||||
}
|
||||
if (serviceType.isWas()) {
|
||||
List<ResponseTimeViewModel> applicationTimeSeriesHistogram = responseHistogramSummary.getApplicationTimeSeriesHistogram();
|
||||
if (applicationTimeSeriesHistogram == null) {
|
||||
writeEmptyObject(jgen, "timeSeriesHistogram");
|
||||
} else {
|
||||
jgen.writeObjectField("timeSeriesHistogram", applicationTimeSeriesHistogram);
|
||||
}
|
||||
|
||||
List<AgentResponseTimeViewModel> agentTimeSeriesHistogram = responseHistogramSummary.getAgentTimeSeriesHistogram();
|
||||
if (agentTimeSeriesHistogram == null) {
|
||||
writeEmptyObject(jgen, "agentTimeSeriesHistogram");
|
||||
} else {
|
||||
jgen.writeObjectField("agentTimeSeriesHistogram", agentTimeSeriesHistogram);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void writeEmptyObject(JsonGenerator jgen, String fieldName) throws IOException {
|
||||
jgen.writeFieldName(fieldName);
|
||||
jgen.writeStartObject();
|
||||
jgen.writeEndObject();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -16,7 +16,6 @@ import java.util.*;
|
||||
|
||||
/**
|
||||
* @author emeroad
|
||||
* @author netspider
|
||||
*/
|
||||
public class AgentTimeSeriesHistogram {
|
||||
|
||||
@@ -128,25 +127,24 @@ public class AgentTimeSeriesHistogram {
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, AgentResponseTimeViewModel> createViewModel() {
|
||||
final Map<String, AgentResponseTimeViewModel> result = new HashMap<String, AgentResponseTimeViewModel>();
|
||||
public List<AgentResponseTimeViewModel> createViewModel() {
|
||||
final List<AgentResponseTimeViewModel> result = new ArrayList<AgentResponseTimeViewModel>();
|
||||
for (Map.Entry<String, List<TimeHistogram>> entry : histogramMap.entrySet()) {
|
||||
AgentResponseTimeViewModel model = createAgentResponseTimeViewModel(entry.getKey(), entry.getValue());
|
||||
result.put(entry.getKey(), model);
|
||||
// result.add(model);
|
||||
result.add(model);
|
||||
}
|
||||
// Collections.sort(result, new Comparator<AgentResponseTimeViewModel>() {
|
||||
// @Override
|
||||
// public int compare(AgentResponseTimeViewModel o1, AgentResponseTimeViewModel o2) {
|
||||
// return o1.getAgentName().compareTo(o2.getAgentName());
|
||||
// }
|
||||
// });
|
||||
Collections.sort(result, new Comparator<AgentResponseTimeViewModel>() {
|
||||
@Override
|
||||
public int compare(AgentResponseTimeViewModel o1, AgentResponseTimeViewModel o2) {
|
||||
return o1.getAgentName().compareTo(o2.getAgentName());
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
private AgentResponseTimeViewModel createAgentResponseTimeViewModel(String agentName, List<TimeHistogram> timeHistogramList) {
|
||||
List<ResponseTimeViewModel> responseTimeViewModel = createResponseTimeViewModel(timeHistogramList);
|
||||
AgentResponseTimeViewModel agentResponseTimeViewModel = new AgentResponseTimeViewModel(/*agentName,*/ responseTimeViewModel);
|
||||
AgentResponseTimeViewModel agentResponseTimeViewModel = new AgentResponseTimeViewModel(agentName, responseTimeViewModel);
|
||||
return agentResponseTimeViewModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import java.util.*;
|
||||
|
||||
/**
|
||||
* @author emeroad
|
||||
* @author netspider
|
||||
*/
|
||||
public class ResponseHistogramSummary {
|
||||
|
||||
@@ -106,9 +105,12 @@ public class ResponseHistogramSummary {
|
||||
}
|
||||
|
||||
|
||||
public List<AgentResponseTimeViewModel> getAgentTimeSeriesHistogram() {
|
||||
return agentTimeSeriesHistogram.createViewModel();
|
||||
}
|
||||
public String getAgentTimeSeriesHistogramToJson() {
|
||||
try {
|
||||
Map<String, AgentResponseTimeViewModel> viewModel = agentTimeSeriesHistogram.createViewModel();
|
||||
List<AgentResponseTimeViewModel> viewModel = agentTimeSeriesHistogram.createViewModel();
|
||||
return MAPPER.writeValueAsString(viewModel);
|
||||
} catch (IOException ex) {
|
||||
throw new RuntimeException(ex.getMessage(), ex);
|
||||
|
||||
@@ -6,48 +6,7 @@
|
||||
"applicationMapData" : {
|
||||
"nodeDataArray": [
|
||||
<c:forEach items="${nodes}" var="node" varStatus="status">
|
||||
{
|
||||
"id" : "${node.nodeName}",
|
||||
"key" : "${node.nodeName}",
|
||||
<c:choose>
|
||||
<c:when test="${node.applicationName == 'USER'}">
|
||||
"text" : "USER",
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
"text" : "${node.applicationName}",
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="${node.serviceType.desc == 'USER'}">
|
||||
"category" : "USER",
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
"category" : "${node.serviceType.desc}",
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="${node.serviceType.desc == 'USER'}">"fig" : "Ellipse"</c:when>
|
||||
<c:when test="${node.serviceType.desc == 'TOMCAT'}">"fig" : "RoundedRectangle"</c:when>
|
||||
<c:otherwise>"fig" : "Rectangle"</c:otherwise>
|
||||
</c:choose>,
|
||||
"serviceTypeCode" : "${node.serviceType.code}",
|
||||
"terminal" : "${node.serviceType.terminal}",
|
||||
"isWas" : ${node.serviceType.was},
|
||||
<c:if test="${node.serviceType.was || node.serviceType.terminal || node.serviceType.unknown || node.serviceType.user}" >
|
||||
"histogram" : ${node.responseHistogramSummary.applicationHistogram.json},
|
||||
"agentHistogram" : {
|
||||
<c:forEach items="${node.responseHistogramSummary.agentHistogramMap}" var="agentHistogramMap" varStatus="agentHistogramStatus">
|
||||
"${agentHistogramMap.key}" : ${agentHistogramMap.value.json}
|
||||
<c:if test="${!agentHistogramStatus.last}">,</c:if>
|
||||
</c:forEach>
|
||||
},
|
||||
</c:if>
|
||||
<c:if test="${node.serviceType.was}" >
|
||||
"timeSeriesHistogram" : ${node.responseHistogramSummary.applicationTimeSeriesHistogramToJson},
|
||||
"agentTimeSeriesHistogram" : ${node.responseHistogramSummary.agentTimeSeriesHistogramToJson},
|
||||
</c:if>
|
||||
"serverList" : ${node.serverInstanceListJson}
|
||||
} <c:if test="${!status.last}">,</c:if>
|
||||
${node.nodeJson} <c:if test="${!status.last}">,</c:if>
|
||||
</c:forEach>
|
||||
],
|
||||
"linkDataArray": [
|
||||
|
||||
@@ -5,48 +5,7 @@
|
||||
"applicationMapData" : {
|
||||
"nodeDataArray": [
|
||||
<c:forEach items="${nodes}" var="node" varStatus="status">
|
||||
{
|
||||
"id" : "${node.nodeName}",
|
||||
"key" : "${node.nodeName}",
|
||||
<c:choose>
|
||||
<c:when test="${node.applicationName == 'USER'}">
|
||||
"text" : "USER",
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
"text" : "${node.applicationName}",
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="${node.serviceType.desc == 'USER'}">
|
||||
"category" : "USER",
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
"category" : "${node.serviceType.desc}",
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="${node.serviceType.desc == 'USER'}">"fig" : "Ellipse"</c:when>
|
||||
<c:when test="${node.serviceType.desc == 'TOMCAT'}">"fig" : "RoundedRectangle"</c:when>
|
||||
<c:otherwise>"fig" : "Rectangle"</c:otherwise>
|
||||
</c:choose>,
|
||||
"serviceTypeCode" : "${node.serviceType.code}",
|
||||
"terminal" : "${node.serviceType.terminal}",
|
||||
"isWas" : ${node.serviceType.was},
|
||||
<c:if test="${node.serviceType.was || node.serviceType.terminal || node.serviceType.unknown || node.serviceType.user}" >
|
||||
"histogram" : ${node.responseHistogramSummary.applicationHistogram.json},
|
||||
"agentHistogram" : {
|
||||
<c:forEach items="${node.responseHistogramSummary.agentHistogramMap}" var="agentHistogramMap" varStatus="agentHistogramStatus">
|
||||
"${agentHistogramMap.key}" : ${agentHistogramMap.value.json}
|
||||
<c:if test="${!agentHistogramStatus.last}">,</c:if>
|
||||
</c:forEach>
|
||||
},
|
||||
</c:if>
|
||||
<c:if test="${node.serviceType.was}" >
|
||||
"timeSeriesHistogram" : ${node.responseHistogramSummary.applicationTimeSeriesHistogramToJson},
|
||||
"agentTimeSeriesHistogram" : ${node.responseHistogramSummary.agentTimeSeriesHistogramToJson},
|
||||
</c:if>
|
||||
"serverList" : ${node.serverInstanceListJson}
|
||||
} <c:if test="${!status.last}">,</c:if>
|
||||
${node.nodeJson} <c:if test="${!status.last}">,</c:if>
|
||||
</c:forEach>
|
||||
],
|
||||
"linkDataArray": [
|
||||
|
||||
@@ -31,7 +31,7 @@ public class AgentTimeSeriesHistogramTest {
|
||||
List<ResponseTime> responseHistogramList = createResponseTime(app, "test1", "test2");
|
||||
histogram.build(responseHistogramList);
|
||||
|
||||
Map<String, AgentResponseTimeViewModel> viewModel = histogram.createViewModel();
|
||||
List<AgentResponseTimeViewModel> viewModel = histogram.createViewModel();
|
||||
logger.debug("{}", viewModel);
|
||||
ObjectWriter writer = mapper.writerWithDefaultPrettyPrinter();
|
||||
String s = writer.writeValueAsString(viewModel);
|
||||
|
||||
Reference in New Issue
Block a user