diff --git a/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/httpserver/AbstractPost.java b/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/httpserver/AbstractPost.java index 8fd75ea77c4e5cba6bc3498908396e93bf5fdd4f..b79e47d914793a7a8bfe51760950da9bb1c2a21a 100644 --- a/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/httpserver/AbstractPost.java +++ b/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/httpserver/AbstractPost.java @@ -20,7 +20,6 @@ import org.skywalking.apm.collector.worker.segment.entity.SegmentDeserialize; /** * @author pengys5 */ - public abstract class AbstractPost extends AbstractLocalAsyncWorker { public AbstractPost(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) { @@ -43,6 +42,16 @@ public abstract class AbstractPost extends AbstractLocalAsyncWorker { this.ownerWorkerRef = ownerWorkerRef; } + /** + * Get segment's buffer from request then execute deserialize operation. + * + * @param request an {@link HttpServletRequest} object that contains the request the client has made of the + * servlet + * @param response {@link HttpServletResponse} object that contains the response the servlet sends to the + * client + * @throws ServletException if the request for the POST could not be handled + * @throws IOException if an input or output error is detected when the servlet handles the request + */ @Override final protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JsonObject resJson = new JsonObject(); @@ -57,6 +66,13 @@ public abstract class AbstractPost extends AbstractLocalAsyncWorker { } } + /** + * Read segment's buffer from buffer reader by stream mode. when finish read one segment then send to analysis. + * This method in there, so post servlet just can receive segments data. + * + * @param bufferedReader an {@link BufferedReader} object that contains the segment's data using the construct of chars. + * @throws Exception + */ private void streamReader(BufferedReader bufferedReader) throws Exception { Segment segment; do { diff --git a/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/segment/entity/SegmentDeserialize.java b/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/segment/entity/SegmentDeserialize.java index 9846d4af6e7ab8b2325fdb0ee61721da061445f8..5a747f7bf9279b5f62c1cb2ebc97a8345629bea9 100644 --- a/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/segment/entity/SegmentDeserialize.java +++ b/apm-collector/apm-collector-worker/src/main/java/org/skywalking/apm/collector/worker/segment/entity/SegmentDeserialize.java @@ -8,18 +8,36 @@ import java.util.ArrayList; import java.util.List; /** + * The SegmentDeserialize provides single segment json string deserialize and segment array file + * deserialize. + * * @author pengys5 + * @since v3.0-2017 */ public enum SegmentDeserialize { INSTANCE; private final Gson gson = new Gson(); + /** + * Single segment json string deserialize. + * + * @param singleSegmentJsonStr a segment json string + * @return an {@link Segment} + * @throws IOException if json string illegal or file broken. + */ public Segment deserializeSingle(String singleSegmentJsonStr) throws IOException { Segment segment = gson.fromJson(singleSegmentJsonStr, Segment.class); return segment; } + /** + * Read a json array file contains multiple segments. + * + * @param segmentJsonFile a segments json array file path + * @return on {@link List} + * @throws Exception if json data illegal or file broken. + */ public List deserializeMultiple(String segmentJsonFile) throws Exception { List segmentList = new ArrayList<>(); streamReader(segmentList, new FileReader(segmentJsonFile));