Skip to content

Commit

Permalink
[pinpoint-apm#11050] Extract FilterView from FilteredServerMap
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Jun 11, 2024
1 parent 0235e19 commit 661b389
Show file tree
Hide file tree
Showing 17 changed files with 168 additions and 362 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@

package com.navercorp.pinpoint.web.applicationmap;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.applicationmap.link.Link;
import com.navercorp.pinpoint.web.applicationmap.nodes.Node;

Expand All @@ -33,4 +35,6 @@ public interface ApplicationMap {
@JsonProperty("linkDataArray")
Collection<Link> getLinks();

@JsonInclude(JsonInclude.Include.NON_NULL)
Range getRange();
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public ApplicationMap build(Application application, long timeoutMillis) {
NodeHistogramAppender nodeHistogramAppender = nodeHistogramAppenderFactory.create(nodeHistogramFactory);
nodeHistogramAppender.appendNodeHistogram(range, nodeList, emptyLinkList, timeoutMillis);

return new DefaultApplicationMap(range, nodeList, emptyLinkList);
return DefaultApplicationMap.build(nodeList, emptyLinkList, range);
}

public ApplicationMap build(LinkDataDuplexMap linkDataDuplexMap, long timeoutMillis) {
Expand All @@ -122,7 +122,7 @@ public ApplicationMap build(LinkDataDuplexMap linkDataDuplexMap, long timeoutMil
ServerInfoAppender serverInfoAppender = serverInfoAppenderFactory.create(serverGroupListFactory);
serverInfoAppender.appendServerInfo(range, nodeList, linkDataDuplexMap, timeoutWatcher.remainingTimeMillis());

return new DefaultApplicationMap(range, nodeList, linkList);
return DefaultApplicationMap.build(nodeList, linkList, range);
}

private static class TimeoutWatcher {
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,45 +16,27 @@

package com.navercorp.pinpoint.web.applicationmap;

import com.navercorp.pinpoint.common.util.CollectionUtils;
import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.applicationmap.link.Link;
import com.navercorp.pinpoint.web.applicationmap.link.LinkList;
import com.navercorp.pinpoint.web.applicationmap.nodes.Node;
import com.navercorp.pinpoint.web.applicationmap.nodes.NodeList;
import com.navercorp.pinpoint.common.server.util.time.Range;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Collection;
import java.util.Objects;
import java.util.List;

/**
* Node map
*
* @author netspider
* @author emeroad
*/
public class DefaultApplicationMap implements ApplicationMap {

private final NodeList nodeList;
private final LinkList linkList;

private final Range range;

// private List<ApplicationScatterScanResult> applicationScatterScanResultList;

public DefaultApplicationMap(Range range, NodeList nodeList, LinkList linkList) {
this.range = Objects.requireNonNull(range, "range");
this.nodeList = Objects.requireNonNull(nodeList, "nodeList");
public class DefaultApplicationMap {

Objects.requireNonNull(linkList, "linkList");
this.linkList = createNewLinkList(linkList);
}

private LinkList createNewLinkList(LinkList originalLinkList) {
private static Collection<Link> createNewLinkList(LinkList originalLinkList) {
Collection<Link> linkList = originalLinkList.getLinkList();
if (CollectionUtils.nullSafeSize(linkList) == 0) {
return originalLinkList;
if (linkList.isEmpty()) {
return List.of();
}

LinkList newLinkList = new LinkList();
Expand All @@ -64,25 +46,17 @@ private LinkList createNewLinkList(LinkList originalLinkList) {
}
if (link.getHistogram().getTotalCount() == 0) {
continue;

}
newLinkList.addLink(link);
}

return newLinkList;
return newLinkList.getLinkList();
}

@JsonProperty("nodeDataArray")
public Collection<Node> getNodes() {
return this.nodeList.getNodeList();
public static ApplicationMap build(NodeList nodeList, LinkList linkList, Range range) {
Collection<Node> nodes = nodeList.getNodeList();
Collection<Link> links = createNewLinkList(linkList);
return new SimpleApplicationMap(nodes, links, range);
}

@JsonProperty("linkDataArray")
public Collection<Link> getLinks() {
return this.linkList.getLinkList();
}

public Range getRange() {
return range;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.navercorp.pinpoint.web.applicationmap;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonValue;
import com.navercorp.pinpoint.web.scatter.ScatterData;
import com.navercorp.pinpoint.web.vo.Application;

import java.util.Map;
import java.util.Objects;

public class FilterMapWithScatter {
private final ApplicationMap applicationMap;
private final Map<Application, ScatterData> applicationScatterDataMap;

public FilterMapWithScatter(ApplicationMap applicationMap, Map<Application, ScatterData> applicationScatterDataMap) {
this.applicationMap = Objects.requireNonNull(applicationMap, "applicationMap");
this.applicationScatterDataMap = Objects.requireNonNull(applicationScatterDataMap, "applicationScatterDataMap");
}

@JsonValue
public ApplicationMap getApplicationMap() {
return applicationMap;
}

@JsonIgnore
public Map<Application, ScatterData> getScatterDataMap() {
return applicationScatterDataMap;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,43 +16,75 @@

package com.navercorp.pinpoint.web.applicationmap;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogramFormat;
import com.navercorp.pinpoint.web.applicationmap.link.Link;
import com.navercorp.pinpoint.web.applicationmap.nodes.Node;
import com.navercorp.pinpoint.web.view.FilterMapWrapSerializer;
import com.navercorp.pinpoint.web.applicationmap.view.FilteredHistogramView;
import com.navercorp.pinpoint.web.applicationmap.view.ScatterDataMapView;
import com.navercorp.pinpoint.web.scatter.ScatterData;
import com.navercorp.pinpoint.web.vo.Application;

import java.util.Map;
import java.util.Objects;

/**
* @author emeroad
*/
@JsonSerialize(using = FilterMapWrapSerializer.class)
public class FilterMapWrap {
private final ApplicationMap applicationMap;
private Long lastFetchedTimestamp;
private boolean filteredHistogram = false;

private Map<Application, ScatterData> scatterDataMap;

public FilterMapWrap(ApplicationMap applicationMap, TimeHistogramFormat timeHistogramFormat) {
this.applicationMap = applicationMap;

if(timeHistogramFormat == TimeHistogramFormat.V2) {
for (Node node : applicationMap.getNodes()) {
node.setTimeHistogramFormat(timeHistogramFormat);
}
for(Link link : applicationMap.getLinks()) {
link.setTimeHistogramFormat(timeHistogramFormat);
}
this.applicationMap = Objects.requireNonNull(applicationMap, "applicationMap");

for (Node node : applicationMap.getNodes()) {
node.setTimeHistogramFormat(timeHistogramFormat);
}
for (Link link : applicationMap.getLinks()) {
link.setTimeHistogramFormat(timeHistogramFormat);
}
}

public void setLastFetchedTimestamp(Long lastFetchedTimestamp) {
this.lastFetchedTimestamp = lastFetchedTimestamp;
}

public ApplicationMap getApplicationMap() {
public ApplicationMap getApplicationMapData() {
return applicationMap;
}

public Long getLastFetchedTimestamp() {
return lastFetchedTimestamp;
}

public void setFilteredHistogram(boolean filteredHistogram) {
this.filteredHistogram = filteredHistogram;
}

@JsonInclude(JsonInclude.Include.NON_NULL)
public Map<String, ScatterDataMapView.ScatterDataView> getApplicationScatterData() {
if (scatterDataMap == null) {
return null;
}
return new ScatterDataMapView(scatterDataMap).getDataMap();
}

public void setScatterDataMap(Map<Application, ScatterData> scatterDataMap) {
this.scatterDataMap = scatterDataMap;
}

@JsonUnwrapped
@JsonInclude(JsonInclude.Include.NON_NULL)
public FilteredHistogramView getFilteredHistogramView() {
if (filteredHistogram) {
return new FilteredHistogramView(applicationMap);
}
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class MapWrap {

public MapWrap(ApplicationMap applicationMap, final TimeHistogramFormat timeHistogramFormat) {
this.applicationMap = applicationMap;
if(timeHistogramFormat == TimeHistogramFormat.V2) {
if (timeHistogramFormat == TimeHistogramFormat.V2) {
for(Node node : applicationMap.getNodes()) {
node.setTimeHistogramFormat(timeHistogramFormat);
}
Expand Down
Loading

0 comments on commit 661b389

Please sign in to comment.