package com.navercorp.pinpoint.web.mapper; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.springframework.util.Assert; import com.navercorp.pinpoint.common.hbase.ResultsExtractor; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.hbase.RowReducer; public class RowMapReduceResultExtractor<T> implements ResultsExtractor<T>{ private final RowMapper<T> rowMapper; private final RowReducer<T> rowReducer; public RowMapReduceResultExtractor(RowMapper<T> rowMapper, RowReducer<T> rowReducer) { Assert.notNull(rowMapper, "RowMapper is required"); this.rowMapper = rowMapper; this.rowReducer = rowReducer; } @Override public T extractData(ResultScanner results) throws Exception { int rowNum = 0; T r = null; for (Result result : results) { T map = this.rowMapper.mapRow(result, rowNum++); r = rowReducer.reduce(map); } return r; } }