[강운덕] [LUCYSUS-1744] FilterBuilder를 테스트하기 좋도록 분리함.

git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-web/trunk@2698 84d0f5b1-2673-498c-a247-62c4ff18d310
This commit is contained in:
Woonduk Kang
2013-11-01 09:15:13 +00:00
parent cea15585fe
commit 339dfb6ff8
5 changed files with 82 additions and 62 deletions
@@ -5,6 +5,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.nhn.pinpoint.web.filter.FilterBuilder;
import com.nhn.pinpoint.web.vo.LimitedScanResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -16,7 +17,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import com.nhn.pinpoint.common.ServiceType;
import com.nhn.pinpoint.web.applicationmap.ApplicationMap;
import com.nhn.pinpoint.web.filter.Filter;
import com.nhn.pinpoint.web.filter.FilterBuilder;
import com.nhn.pinpoint.web.service.ApplicationMapService;
import com.nhn.pinpoint.web.service.FlowChartService;
import com.nhn.pinpoint.web.util.TimeUtils;
@@ -36,6 +36,9 @@ public class ApplicationMapController {
@Autowired
private FlowChartService flow;
@Autowired
private FilterBuilder filterBuilder;
/**
* FROM ~ TO기간의 서버 맵 데이터 조회
*
@@ -101,7 +104,7 @@ public class ApplicationMapController {
model.addAttribute("fromDate", new Date(from));
model.addAttribute("toDate", new Date(to));
model.addAttribute("filterText", filterText);
model.addAttribute("filter", FilterBuilder.build(filterText));
model.addAttribute("filter", filterBuilder.build(filterText));
return "applicationmap.filtered.view";
}
@@ -130,7 +133,7 @@ public class ApplicationMapController {
@RequestParam(value = "limit", required = false, defaultValue = "1000000") int limit) {
LimitedScanResult<List<TransactionId>> limitedScanResult = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit);
Filter filter = FilterBuilder.build(filterText);
Filter filter = filterBuilder.build(filterText);
ApplicationMap map = flow.selectApplicationMap(limitedScanResult.getScanData(), from, to, filter);
@@ -248,7 +251,7 @@ public class ApplicationMapController {
@RequestParam(value = "limit", required = false, defaultValue = "1000000") int limit) {
LimitedScanResult<List<TransactionId>> traceIdSet = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit);
Filter filter = FilterBuilder.build(filterText);
Filter filter = filterBuilder.build(filterText);
LinkStatistics linkStatistics = flow.linkStatisticsDetail(from, to, traceIdSet.getScanData(), srcApplicationName, srcServiceType, destApplicationName, destServiceType, filter);
model.addAttribute("lastFetchedTimestamp", traceIdSet.getLimitedTime());
@@ -6,6 +6,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.nhn.pinpoint.web.filter.FilterBuilder;
import com.nhn.pinpoint.web.service.SpanResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -20,7 +21,6 @@ import org.springframework.web.servlet.ModelAndView;
import com.nhn.pinpoint.web.calltree.server.ServerCallTree;
import com.nhn.pinpoint.web.calltree.span.SpanAlign;
import com.nhn.pinpoint.web.filter.Filter;
import com.nhn.pinpoint.web.filter.FilterBuilder;
import com.nhn.pinpoint.web.service.FlowChartService;
import com.nhn.pinpoint.web.service.RecordSetService;
import com.nhn.pinpoint.web.service.SpanService;
@@ -47,6 +47,9 @@ public class BusinessTransactionController {
@Autowired
private FlowChartService flow;
@Autowired
private FilterBuilder filterBuilder;
/**
* applicationname에서 from ~ to 시간대에 수행된 URL을 조회한다.
*
@@ -68,7 +71,7 @@ public class BusinessTransactionController {
// TOOD 구조개선을 위해 server map조회 로직 분리함, 임시로 분리한 상태이고 개선이 필요하다.
LimitedScanResult<List<TransactionId>> traceIdList = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit);
Filter filter = FilterBuilder.build(filterText);
Filter filter = filterBuilder.build(filterText);
BusinessTransactions selectBusinessTransactions = flow.selectBusinessTransactions(traceIdList.getScanData(), applicationName, from, to, filter);
model.addAttribute("lastFetchedTimestamp", traceIdList.getLimitedTime());
@@ -7,6 +7,7 @@ import java.util.TreeSet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.nhn.pinpoint.web.filter.FilterBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +19,6 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.nhn.pinpoint.common.bo.SpanBo;
import com.nhn.pinpoint.web.filter.FilterBuilder;
import com.nhn.pinpoint.web.service.FlowChartService;
import com.nhn.pinpoint.web.service.ScatterChartService;
import com.nhn.pinpoint.web.util.TimeUtils;
@@ -42,6 +42,9 @@ public class ScatterChartController {
@Autowired
private FlowChartService flow;
@Autowired
private FilterBuilder filterBuilder;
@RequestMapping(value = "/selectedScatter", method = RequestMethod.GET)
public String selectedScatter(Model model, HttpServletResponse response) {
return "selectedScatter";
@@ -111,7 +114,7 @@ public class ScatterChartController {
SortedSet<TransactionId> traceIdSet = new TreeSet<TransactionId>(traceIdList);
logger.debug("selectScatterData with {}", traceIdSet);
scatterData = scatter.selectScatterData(traceIdSet, applicationName, FilterBuilder.build(filterText));
scatterData = scatter.selectScatterData(traceIdSet, applicationName, filterBuilder.build(filterText));
if (traceIdList.isEmpty()) {
model.addAttribute("resultFrom", -1);
@@ -0,0 +1,57 @@
package com.nhn.pinpoint.web.filter;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
*
* @author netspider
*
*/
@Component
public class DefaultFilterBuilder implements FilterBuilder {
private Logger logger = LoggerFactory.getLogger(DefaultFilterBuilder.class);
@Override
public Filter build(String filterText) {
if (StringUtils.isEmpty(filterText)) {
return Filter.NONE;
}
logger.debug("build filter from string. {}", filterText);
String[] f = filterText.split(Filter.FILTER_DELIMETER);
Filter filter;
if (f.length == 1) {
filter = makeSingleFilter(f[0]);
} else {
filter = makeChainedFilter(f);
}
// TODO: need cache filter?
return filter;
}
private Filter makeSingleFilter(String filterText) {
logger.debug(" make filter from string. {}", filterText);
String[] element = filterText.split(Filter.FILTER_ENTRY_DELIMETER);
if (element.length == 4) {
return new FromToFilter(element[0], element[1], element[2], element[3]);
} else {
return Filter.NONE;
}
}
private Filter makeChainedFilter(String[] filterTexts) {
logger.debug(" make chained filter.");
FilterChain chain = new FilterChain();
for (String s : filterTexts) {
chain.addFilter(makeSingleFilter(s));
}
return chain;
}
}
@@ -1,54 +1,8 @@
package com.nhn.pinpoint.web.filter;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author netspider
*
*/
public class FilterBuilder {
private static Logger logger = LoggerFactory.getLogger(FilterBuilder.class);
public static Filter build(String filterText) {
if (StringUtils.isEmpty(filterText)) {
return Filter.NONE;
}
logger.debug("build filter from string. {}", filterText);
String[] f = filterText.split(Filter.FILTER_DELIMETER);
Filter filter;
if (f.length == 1) {
filter = makeSingleFilter(f[0]);
} else {
filter = makeChainedFilter(f);
}
// TODO: need cache filter?
return filter;
}
private static Filter makeSingleFilter(String filterText) {
logger.debug(" make filter from string. {}", filterText);
String[] element = filterText.split(Filter.FILTER_ENTRY_DELIMETER);
if (element.length == 4) {
return new FromToFilter(element[0], element[1], element[2], element[3]);
} else {
return Filter.NONE;
}
}
private static Filter makeChainedFilter(String[] filterTexts) {
logger.debug(" make chained filter.");
FilterChain chain = new FilterChain();
for (String s : filterTexts) {
chain.addFilter(makeSingleFilter(s));
}
return chain;
}
}
package com.nhn.pinpoint.web.filter;
/**
*
*/
public interface FilterBuilder {
Filter build(String filterText);
}