Skip to content

Commit

Permalink
[#noissue] Refactor AgentInfoFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
intr3p1d committed Jan 26, 2023
1 parent a274afe commit 6e8fdb7
Show file tree
Hide file tree
Showing 14 changed files with 114 additions and 119 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByApplication;
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByHost;
import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilterChain;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilterChain;
import com.navercorp.pinpoint.web.vo.agent.AgentStatus;
import com.navercorp.pinpoint.web.vo.agent.DefaultAgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.DefaultAgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.DetailedAgentAndStatus;
import com.navercorp.pinpoint.web.vo.timeline.inspector.InspectorTimeline;
import com.navercorp.pinpoint.web.view.tree.SimpleTreeView;
Expand Down Expand Up @@ -74,7 +74,7 @@ public TreeView<TreeNode<AgentAndStatus>> getAgentList() {
public TreeView<TreeNode<AgentAndStatus>> getAgentList(
@RequestParam("from") long from,
@RequestParam("to") long to) {
AgentInfoFilter filter = new DefaultAgentInfoFilter(from);
AgentStatusFilter filter = new DefaultAgentStatusFilter(from);
long timestamp = to;
AgentsMapByApplication allAgentsList = this.agentInfoService.getAllAgentsList(filter, Range.between(from, to));
return treeView(allAgentsList);
Expand All @@ -84,7 +84,7 @@ public TreeView<TreeNode<AgentAndStatus>> getAgentList(
@GetMapping(value = "/getAgentList", params = {"!application", "timestamp"})
public TreeView<TreeNode<AgentAndStatus>> getAgentList(
@RequestParam("timestamp") long timestamp) {
AgentsMapByApplication allAgentsList = this.agentInfoService.getAllAgentsList(AgentInfoFilter::accept, Range.between(timestamp, timestamp));
AgentsMapByApplication allAgentsList = this.agentInfoService.getAllAgentsList(AgentStatusFilter::accept, Range.between(timestamp, timestamp));
return treeView(allAgentsList);
}

Expand All @@ -104,8 +104,8 @@ public TreeView<TreeNode<AgentStatusAndLink>> getAgentList(
@RequestParam("application") String applicationName,
@RequestParam("from") long from,
@RequestParam("to") long to) {
AgentInfoFilter currentRunFilter = new AgentInfoFilterChain(
new DefaultAgentInfoFilter(from)
AgentStatusFilter currentRunFilter = new AgentStatusFilterChain(
new DefaultAgentStatusFilter(from)
);
long timestamp = to;
AgentsMapByHost list = this.agentInfoService.getAgentsListByApplicationName(currentRunFilter, applicationName, Range.between(from, to));
Expand All @@ -116,8 +116,8 @@ public TreeView<TreeNode<AgentStatusAndLink>> getAgentList(
public TreeView<TreeNode<AgentStatusAndLink>> getAgentList(
@RequestParam("application") String applicationName,
@RequestParam("timestamp") long timestamp) {
AgentInfoFilter runningAgentFilter = new AgentInfoFilterChain(
AgentInfoFilter::filterRunning
AgentStatusFilter runningAgentFilter = new AgentStatusFilterChain(
AgentStatusFilter::filterRunning
);
AgentsMapByHost list = this.agentInfoService.getAgentsListByApplicationName(runningAgentFilter, applicationName, Range.between(timestamp, timestamp));
return treeView(list);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import com.navercorp.pinpoint.web.view.tree.StaticTreeView;
import com.navercorp.pinpoint.web.view.tree.TreeView;
import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilterChain;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilterChain;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusAndLink;
import com.navercorp.pinpoint.web.vo.agent.DefaultAgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.DefaultAgentStatusFilter;
import com.navercorp.pinpoint.web.vo.tree.InstancesList;
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByApplication;
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByHost;
Expand Down Expand Up @@ -40,7 +40,7 @@ public AgentListController(AgentInfoService agentInfoService) {
public TreeView<InstancesList<AgentAndStatus>> getAllAgentsList() {
long timestamp = System.currentTimeMillis();
AgentsMapByApplication allAgentsList = this.agentInfoService.getAllAgentsList(
AgentInfoFilter::accept,
AgentStatusFilter::accept,
Range.between(timestamp, timestamp)
);
return treeView(allAgentsList);
Expand All @@ -50,7 +50,7 @@ public TreeView<InstancesList<AgentAndStatus>> getAllAgentsList() {
public TreeView<InstancesList<AgentAndStatus>> getAllAgentsList(
@RequestParam("from") long from,
@RequestParam("to") long to) {
AgentInfoFilter filter = new DefaultAgentInfoFilter(from);
AgentStatusFilter filter = new DefaultAgentStatusFilter(from);
AgentsMapByApplication allAgentsList = this.agentInfoService.getAllAgentsList(
filter,
Range.between(from, to)
Expand All @@ -70,8 +70,8 @@ public TreeView<InstancesList<AgentStatusAndLink>> getAgentsList(
@RequestParam(value = "sortBy") Optional<SortByAgentInfo.Rules> sortBy) {
SortByAgentInfo.Rules paramSortBy = sortBy.orElse(DEFAULT_SORTBY);
long timestamp = System.currentTimeMillis();
AgentInfoFilter runningAgentFilter = new AgentInfoFilterChain(
AgentInfoFilter::filterRunning
AgentStatusFilter runningAgentFilter = new AgentStatusFilterChain(
AgentStatusFilter::filterRunning
);
AgentsMapByHost list = this.agentInfoService.getAgentsListByApplicationName(
runningAgentFilter,
Expand All @@ -89,8 +89,8 @@ public TreeView<InstancesList<AgentStatusAndLink>> getAgentsList(
@RequestParam("to") long to,
@RequestParam(value = "sortBy") Optional<SortByAgentInfo.Rules> sortBy) {
SortByAgentInfo.Rules paramSortBy = sortBy.orElse(DEFAULT_SORTBY);
AgentInfoFilter currentRunFilter = new AgentInfoFilterChain(
new DefaultAgentInfoFilter(from)
AgentStatusFilter currentRunFilter = new AgentStatusFilterChain(
new DefaultAgentStatusFilter(from)
);
AgentsMapByHost list = this.agentInfoService.getAgentsListByApplicationName(
currentRunFilter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByHost;
import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfo;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusQuery;
import com.navercorp.pinpoint.web.vo.agent.DetailedAgentAndStatus;
Expand All @@ -41,11 +41,11 @@ public interface AgentInfoService {

int NO_DURATION = -1;

AgentsMapByApplication getAllAgentsList(AgentInfoFilter filter, Range range);
AgentsMapByApplication getAllAgentsList(AgentStatusFilter filter, Range range);

AgentsMapByHost getAgentsListByApplicationName(AgentInfoFilter filter, String applicationName, Range range);
AgentsMapByHost getAgentsListByApplicationName(AgentStatusFilter filter, String applicationName, Range range);

AgentsMapByHost getAgentsListByApplicationName(AgentInfoFilter filter, String applicationName, Range range, SortByAgentInfo.Rules sortBy);
AgentsMapByHost getAgentsListByApplicationName(AgentStatusFilter filter, String applicationName, Range range, SortByAgentInfo.Rules sortBy);

ApplicationAgentHostList getApplicationAgentHostList(int offset, int limit, int durationDays);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfo;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilterChain;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilterChain;
import com.navercorp.pinpoint.web.vo.agent.AgentStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusAndLink;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusQuery;
Expand Down Expand Up @@ -106,7 +106,7 @@ public AgentInfoServiceImpl(AgentEventService agentEventService,
}

@Override
public AgentsMapByApplication getAllAgentsList(AgentInfoFilter filter, Range range) {
public AgentsMapByApplication getAllAgentsList(AgentStatusFilter filter, Range range) {
Objects.requireNonNull(filter, "filter");

List<Application> applications = applicationIndexDao.selectAllApplicationNames();
Expand All @@ -122,22 +122,22 @@ public AgentsMapByApplication getAllAgentsList(AgentInfoFilter filter, Range ran
}

@Override
public AgentsMapByHost getAgentsListByApplicationName(AgentInfoFilter filter, String applicationName, Range range) {
public AgentsMapByHost getAgentsListByApplicationName(AgentStatusFilter filter, String applicationName, Range range) {
return getAgentsListByApplicationName(filter, applicationName, range, SortByAgentInfo.Rules.AGENT_ID_ASC);
}

@Override
public AgentsMapByHost getAgentsListByApplicationName(AgentInfoFilter filter,
public AgentsMapByHost getAgentsListByApplicationName(AgentStatusFilter filter,
String applicationName,
Range range,
SortByAgentInfo.Rules sortBy) {
Objects.requireNonNull(filter, "filter");
Objects.requireNonNull(applicationName, "applicationName");

Set<AgentAndStatus> agentInfoAndStatuses = getAgentsByApplicationName(applicationName, range.getTo());
AgentInfoFilter activeAgentFilter = new AgentInfoFilterChain(
AgentStatusFilter activeAgentFilter = new AgentStatusFilterChain(
filter,
x -> isActiveAgent(x.getAgentInfo().getAgentId(), range)
x -> isActiveAgent(x.getAgentId(), range)
);

if (agentInfoAndStatuses.isEmpty()) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,21 @@

import com.navercorp.pinpoint.common.server.util.AgentLifeCycleState;

public interface AgentInfoFilter {
public interface AgentStatusFilter {
boolean ACCEPT = true;
boolean REJECT = false;

boolean filter(AgentAndStatus agentInfo);
boolean filter(AgentStatus agentStatus);

static boolean accept(AgentAndStatus agentAndStatus) {
static boolean accept(AgentStatus agentStatus) {
return ACCEPT;
}

static boolean reject(AgentAndStatus agentAndStatus) {
static boolean reject(AgentStatus agentStatus) {
return REJECT;
}

static boolean filterRunning(AgentAndStatus agentAndStatus) {
final AgentStatus agentStatus = agentAndStatus.getStatus();
static boolean filterRunning(AgentStatus agentStatus) {
if (agentStatus == null) {
return REJECT;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.navercorp.pinpoint.web.vo.agent;

import java.util.Objects;

public class AgentStatusFilterChain implements AgentStatusFilter {
private final AgentStatusFilter[] agentStatusFilters;

public AgentStatusFilterChain(AgentStatusFilter... agentStatusFilters) {
this.agentStatusFilters = Objects.requireNonNull(agentStatusFilters, "agentFilters");
}

@Override
public boolean filter(AgentStatus agentStatus) {
for (AgentStatusFilter agentFilter : this.agentStatusFilters) {
if (agentFilter.filter(agentStatus) == REJECT) {
return REJECT;
}
}
return ACCEPT;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@

import com.navercorp.pinpoint.common.server.util.AgentLifeCycleState;

public class DefaultAgentInfoFilter implements AgentInfoFilter {
public class DefaultAgentStatusFilter implements AgentStatusFilter {
private final long from;

public DefaultAgentInfoFilter(long from) {
public DefaultAgentStatusFilter(long from) {
this.from = from;
}

@Override
public boolean filter(AgentAndStatus agentAndStatus) {
final AgentStatus agentStatus = agentAndStatus.getStatus();
public boolean filter(AgentStatus agentStatus) {
if (agentStatus == null) {
return REJECT;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.navercorp.pinpoint.web.vo.tree;

import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;

import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -21,7 +21,7 @@ public List<InstancesList<AgentAndStatus>> getAgentsListsList() {
return new ArrayList<>(instancesListMap.getListMap());
}

public static AgentsMapByApplication newAgentsMapByApplication(AgentInfoFilter filter,
public static AgentsMapByApplication newAgentsMapByApplication(AgentStatusFilter filter,
Collection<AgentAndStatus> agentCollection) {
Objects.requireNonNull(filter, "filter");
Objects.requireNonNull(agentCollection, "agentCollection");
Expand All @@ -34,7 +34,7 @@ public static AgentsMapByApplication newAgentsMapByApplication(AgentInfoFilter f
agentCollection
);

instancesListMapBuilder.withFilter(filter::filter);
instancesListMapBuilder.withFilter((AgentAndStatus a) -> filter.filter(a.getStatus()));
return new AgentsMapByApplication(instancesListMapBuilder.build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.navercorp.pinpoint.web.hyperlink.LinkSources;
import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfo;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusAndLink;

Expand All @@ -30,7 +30,7 @@ public List<InstancesList<AgentStatusAndLink>> getAgentsListsList() {
return new ArrayList<>(instancesListMap.getListMap());
}

public static AgentsMapByHost newAgentsMapByHost(AgentInfoFilter filter,
public static AgentsMapByHost newAgentsMapByHost(AgentStatusFilter filter,
SortByAgentInfo<AgentStatusAndLink> sortByAgentInfo,
HyperLinkFactory hyperLinkFactory,
Collection<AgentAndStatus> agentCollection) {
Expand All @@ -45,7 +45,7 @@ public static AgentsMapByHost newAgentsMapByHost(AgentInfoFilter filter,
sortByAgentInfo.getComparator(),
agentCollection
);
instancesListMapBuilder.withFilter(filter::filter)
instancesListMapBuilder.withFilter((AgentAndStatus a) -> filter.filter(a.getStatus()))
.withFinisher(x -> newAgentStatusAndLink(x, hyperLinkFactory));

return new AgentsMapByHost(instancesListMapBuilder.build());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfo;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.tree.InstancesList;
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByApplication;
import org.junit.jupiter.api.Assertions;
Expand All @@ -22,7 +22,7 @@ public void groupByApplicationName() {
AgentAndStatus app2Agent2 = createAgentInfo("APP_2", "app2-agent2", "Host22", true);
List<AgentAndStatus> agentAndStatusList = shuffleAgentInfos(app1Agent1, app1Agent2, app2Agent1, app2Agent2);

AgentsMapByApplication agentsMapByApplication = AgentsMapByApplication.newAgentsMapByApplication(AgentInfoFilter::accept, agentAndStatusList);
AgentsMapByApplication agentsMapByApplication = AgentsMapByApplication.newAgentsMapByApplication(AgentStatusFilter::accept, agentAndStatusList);
List<InstancesList<AgentAndStatus>> instancesLists = agentsMapByApplication.getAgentsListsList();

Assertions.assertEquals(2, instancesLists.size());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.navercorp.pinpoint.web.hyperlink.HyperLinkFactory;
import com.navercorp.pinpoint.web.vo.agent.AgentAndStatus;
import com.navercorp.pinpoint.web.vo.agent.AgentInfo;
import com.navercorp.pinpoint.web.vo.agent.AgentInfoFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusFilter;
import com.navercorp.pinpoint.web.vo.agent.AgentStatusAndLink;
import com.navercorp.pinpoint.web.vo.tree.InstancesList;
import com.navercorp.pinpoint.web.vo.tree.AgentsMapByHost;
Expand All @@ -29,7 +29,7 @@ public void groupByHostNameShouldHaveContainersFirstAndGroupedSeparatelyByAgentI


SortByAgentInfo<AgentStatusAndLink> sortBy = SortByAgentInfo.agentIdAsc(AgentStatusAndLink::getAgentInfo);
AgentsMapByHost agentsMapByHost = AgentsMapByHost.newAgentsMapByHost(AgentInfoFilter::accept, sortBy, hyperLinkFactory, agentAndStatusList);
AgentsMapByHost agentsMapByHost = AgentsMapByHost.newAgentsMapByHost(AgentStatusFilter::accept, sortBy, hyperLinkFactory, agentAndStatusList);
List<InstancesList<AgentStatusAndLink>> instancesLists = agentsMapByHost.getAgentsListsList();

Assertions.assertEquals(3, instancesLists.size());
Expand Down
Loading

0 comments on commit 6e8fdb7

Please sign in to comment.