package org.skywalking.apm.collector.worker.noderef.analysis; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.skywalking.apm.collector.queue.EndOfBatchCommand; import org.skywalking.apm.collector.worker.datamerge.MetricDataMergeJson; import org.skywalking.apm.collector.worker.mock.MetricDataAnswer; import org.skywalking.apm.collector.worker.segment.mock.SegmentMock; import org.skywalking.apm.collector.worker.storage.MetricData; import java.util.List; /** * @author pengys5 */ public enum NodeRefResSumAnalyse { INSTANCE; public void analyse(String requestJsonFile, String jsonFile, AbstractNodeRefResSumAnalysis analysis, MetricDataAnswer answer) throws Exception { SegmentMock segmentMock = new SegmentMock(); String requestJsonStr = segmentMock.loadJsonFile(requestJsonFile); Gson gson = new Gson(); List<AbstractNodeRefResSumAnalysis.NodeRefResRecord> resRecordList = gson.fromJson(requestJsonStr, new TypeToken<List<AbstractNodeRefResSumAnalysis.NodeRefResRecord>>() { }.getType()); for (AbstractNodeRefResSumAnalysis.NodeRefResRecord resRecord : resRecordList) { analysis.analyse(resRecord); } analysis.onWork(new EndOfBatchCommand()); List<MetricData> metricDataList = answer.getMetricDataList(); MetricDataMergeJson.INSTANCE.merge(jsonFile, metricDataList); } }