package org.skywalking.apm.collector.worker.segment.entity; import com.google.gson.stream.JsonReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * @author pengys5 */ public class Segment extends DeserializeObject { private String traceSegmentId; private long startTime; private long endTime; private List<TraceSegmentRef> refs; private List<Span> spans; private String applicationCode; private List<GlobalTraceId> relatedGlobalTraces; public String getTraceSegmentId() { return traceSegmentId; } public long getStartTime() { return startTime; } public long getEndTime() { return endTime; } public String getApplicationCode() { return applicationCode; } public List<TraceSegmentRef> getRefs() { return refs; } public List<Span> getSpans() { return spans; } public List<GlobalTraceId> getRelatedGlobalTraces() { return relatedGlobalTraces; } public Segment deserialize(JsonReader reader) throws IOException { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("{"); boolean first = true; reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "ts": String ts = reader.nextString(); this.traceSegmentId = ts; JsonBuilder.INSTANCE.append(stringBuilder, "ts", ts, first); break; case "ac": String ac = reader.nextString(); this.applicationCode = ac; JsonBuilder.INSTANCE.append(stringBuilder, "ac", ac, first); break; case "st": long st = reader.nextLong(); this.startTime = st; JsonBuilder.INSTANCE.append(stringBuilder, "st", st, first); break; case "et": long et = reader.nextLong(); this.endTime = et; JsonBuilder.INSTANCE.append(stringBuilder, "et", et, first); break; case "rs": refs = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { TraceSegmentRef ref = new TraceSegmentRef(); ref.deserialize(reader); refs.add(ref); } reader.endArray(); JsonBuilder.INSTANCE.append(stringBuilder, "rs", refs, first); break; case "ss": spans = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { Span span = new Span(); span.deserialize(reader); spans.add(span); } reader.endArray(); JsonBuilder.INSTANCE.append(stringBuilder, "ss", spans, first); break; case "gt": relatedGlobalTraces = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { GlobalTraceId globalTraceId = new GlobalTraceId(); globalTraceId.deserialize(reader); relatedGlobalTraces.add(globalTraceId); } JsonBuilder.INSTANCE.append(stringBuilder, "gt", relatedGlobalTraces, first); reader.endArray(); break; default: reader.skipValue(); } first = false; } reader.endObject(); stringBuilder.append("}"); this.setJsonStr(stringBuilder.toString()); return this; } }