public static List decoderFromTraceDataString()

in ons-core/ons-trace-core/src/main/java/org/apache/rocketmq/ons/open/trace/core/common/OnsTraceDataEncoder.java [28:96]


    public static List<OnsTraceContext> decoderFromTraceDataString(String traceData) {
        List<OnsTraceContext> resList = new ArrayList<OnsTraceContext>();
        if (traceData == null || traceData.length() <= 0) {
            return resList;
        }
        String[] contextList = traceData.split(String.valueOf(OnsTraceConstants.FIELD_SPLITOR));
        for (String context : contextList) {
            String[] line = context.split(String.valueOf(OnsTraceConstants.CONTENT_SPLITOR));
            if (line[0].equals(OnsTraceType.Pub.name())) {
                OnsTraceContext pubContext = new OnsTraceContext();
                pubContext.setTraceType(OnsTraceType.Pub);
                pubContext.setTimeStamp(Long.parseLong(line[1]));
                pubContext.setRegionId(line[2]);
                pubContext.setGroupName(line[3]);
                OnsTraceBean bean = new OnsTraceBean();
                bean.setTopic(line[4]);
                bean.setMsgId(line[5]);
                bean.setTags(line[6]);
                bean.setKeys(line[7]);
                bean.setStoreHost(line[8]);
                bean.setBodyLength(Integer.parseInt(line[9]));
                pubContext.setCostTime(Integer.parseInt(line[10]));
                bean.setMsgType(MessageType.values()[Integer.parseInt(line[11])]);
                if (line.length == 13) {
                    pubContext.setSuccess(Boolean.parseBoolean(line[12]));
                } else if (line.length == 14) {
                    bean.setOffsetMsgId(line[12]);
                    pubContext.setSuccess(Boolean.parseBoolean(line[13]));
                }
                pubContext.setTraceBeans(new ArrayList<OnsTraceBean>(1));
                pubContext.getTraceBeans().add(bean);
                resList.add(pubContext);
            } else if (line[0].equals(OnsTraceType.SubBefore.name())) {
                OnsTraceContext subBeforeContext = new OnsTraceContext();
                subBeforeContext.setTraceType(OnsTraceType.SubBefore);
                subBeforeContext.setTimeStamp(Long.parseLong(line[1]));
                subBeforeContext.setRegionId(line[2]);
                subBeforeContext.setGroupName(line[3]);
                subBeforeContext.setRequestId(line[4]);
                OnsTraceBean bean = new OnsTraceBean();
                bean.setMsgId(line[5]);
                bean.setRetryTimes(Integer.parseInt(line[6]));
                bean.setKeys(line[7]);
                subBeforeContext.setTraceBeans(new ArrayList<OnsTraceBean>(1));
                subBeforeContext.getTraceBeans().add(bean);
                resList.add(subBeforeContext);
            } else if (line[0].equals(OnsTraceType.SubAfter.name())) {
                OnsTraceContext subAfterContext = new OnsTraceContext();
                subAfterContext.setTraceType(OnsTraceType.SubAfter);
                subAfterContext.setRequestId(line[1]);
                OnsTraceBean bean = new OnsTraceBean();
                bean.setMsgId(line[2]);
                bean.setKeys(line[5]);
                subAfterContext.setTraceBeans(new ArrayList<OnsTraceBean>(1));
                subAfterContext.getTraceBeans().add(bean);
                subAfterContext.setCostTime(Integer.parseInt(line[3]));
                subAfterContext.setSuccess(Boolean.parseBoolean(line[4]));
                if (line.length >= 7) {
                    // add the context type
                    subAfterContext.setContextCode(Integer.parseInt(line[6]));
                }
                if (line.length >= 8) {
                    subAfterContext.setExactlyOnceStatus(Integer.parseInt(line[7]));
                }
                resList.add(subAfterContext);
            }
        }
        return resList;
    }