diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml
index cc1cc4269b0a0a2478d642f301120a29a9599962..6f3835bfc119eb40c9c84f83da3f49d949784a2b 100644
--- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml
+++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml
@@ -28,6 +28,5 @@
4.0.0
agent-grpc-define
-
-
+ jar
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml
index 111390e65bad147c5d1ee5fbca43fe999e9507f1..a4fe82e07aea2b7f7850254e54cd0ae037370c6c 100644
--- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml
+++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml
@@ -50,5 +50,10 @@
collector-grpc-manager-define
${project.version}
+
+ org.apache.skywalking
+ segment-parser-define
+ ${project.version}
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java
index d349b3ef616ecec6145e67288875b5cfeb27d7d7..e76c9d61029b5074374a012ee4a557cff6815fa5 100644
--- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java
+++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java
@@ -27,6 +27,7 @@ import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.ServiceNa
import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.TraceSegmentServiceHandler;
import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.naming.AgentGRPCNamingHandler;
import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.naming.AgentGRPCNamingListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule;
import org.apache.skywalking.apm.collector.cluster.ClusterModule;
import org.apache.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.apache.skywalking.apm.collector.cluster.service.ModuleRegisterService;
@@ -85,7 +86,7 @@ public class AgentModuleGRPCProvider extends ModuleProvider {
}
@Override public String[] requiredModules() {
- return new String[] {ClusterModule.NAME, NamingModule.NAME, GRPCManagerModule.NAME};
+ return new String[] {ClusterModule.NAME, NamingModule.NAME, GRPCManagerModule.NAME, AnalysisSegmentParserModule.NAME};
}
private void addHandlers(Server gRPCServer) {
diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java
index 52bead8c8c18a1ad802152c6df20ee25f69f4b95..809bd65abfc6c62d418522a6c88b01a9bcf14fe9 100644
--- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java
+++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java
@@ -16,12 +16,11 @@
*
*/
-
package org.apache.skywalking.apm.collector.agent.grpc.provider.handler;
import io.grpc.stub.StreamObserver;
-import org.apache.skywalking.apm.collector.agent.stream.AgentStreamModule;
-import org.apache.skywalking.apm.collector.agent.stream.service.trace.ITraceSegmentService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.server.grpc.GRPCHandler;
import org.apache.skywalking.apm.network.proto.Downstream;
@@ -37,17 +36,17 @@ public class TraceSegmentServiceHandler extends TraceSegmentServiceGrpc.TraceSeg
private final Logger logger = LoggerFactory.getLogger(TraceSegmentServiceHandler.class);
- private final ITraceSegmentService traceSegmentService;
+ private final ISegmentParseService segmentParseService;
public TraceSegmentServiceHandler(ModuleManager moduleManager) {
- this.traceSegmentService = moduleManager.find(AgentStreamModule.NAME).getService(ITraceSegmentService.class);
+ this.segmentParseService = moduleManager.find(AnalysisSegmentParserModule.NAME).getService(ISegmentParseService.class);
}
@Override public StreamObserver collect(StreamObserver responseObserver) {
return new StreamObserver() {
@Override public void onNext(UpstreamSegment segment) {
logger.debug("receive segment");
- traceSegmentService.send(segment);
+ segmentParseService.parse(segment, ISegmentParseService.Source.Agent);
}
@Override public void onError(Throwable throwable) {
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e37496181fbd4502eab2fb299f68679fb073dca3
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+ apm-collector-analysis
+ org.apache.skywalking
+ 5.0.0-alpha
+
+ 4.0.0
+
+ analysis-segment-parser
+ pom
+
+ segment-parser-define
+ segment-parser-provider
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b11ad2445987b2da3295288c1073e100e4289af8
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+ analysis-segment-parser
+ org.apache.skywalking
+ 5.0.0-alpha
+
+ 4.0.0
+
+ segment-parser-define
+ jar
+
+
+
+ org.apache.skywalking
+ apm-network
+ ${project.version}
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..003ada677e9deb2eb1d5953679d73943d43e3889
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define;
+
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParserListenerRegister;
+import org.apache.skywalking.apm.collector.core.module.Module;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AnalysisSegmentParserModule extends Module {
+
+ public static final String NAME = "analysis_segment_parser";
+
+ @Override public String name() {
+ return NAME;
+ }
+
+ @Override public Class[] services() {
+ return new Class[] {ISegmentParseService.class, ISegmentParserListenerRegister.class};
+ }
+}
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java
similarity index 98%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java
index f1abfa51e5fe069a1e9f9f62a00f5b3041ab9c3f..1c005c796a8e86aabe72c0c93d5fcee4edaa5863 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java
@@ -17,7 +17,7 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator;
import org.apache.skywalking.apm.network.proto.RefType;
import org.apache.skywalking.apm.network.proto.TraceSegmentReference;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SegmentDecorator.java
similarity index 96%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SegmentDecorator.java
index 71b8cf57d840e14a001dd239a7cc52347b3ae2b2..b7a0586b5c5ffeedc5905b7e962a95fe29e9d344 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SegmentDecorator.java
@@ -17,7 +17,7 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator;
import org.apache.skywalking.apm.network.proto.TraceSegmentObject;
import org.apache.skywalking.apm.network.proto.UniqueId;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SpanDecorator.java
similarity index 98%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SpanDecorator.java
index e106032903166a69985d38e6484ab5ff672870cd..ce1f69d02aa4b16a997e5737a619d9360e50612e 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SpanDecorator.java
@@ -17,7 +17,7 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator;
import org.apache.skywalking.apm.network.proto.SpanLayer;
import org.apache.skywalking.apm.network.proto.SpanObject;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/StandardBuilder.java
similarity index 91%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/StandardBuilder.java
index 4746c943d68995307f99b1bb9400c2cf63cb3b83..11ccda5d159ba660af8bc5f723511e062978c81e 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/StandardBuilder.java
@@ -17,7 +17,7 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/EntrySpanListener.java
similarity index 84%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/EntrySpanListener.java
index b945743d438cf435dc99b854ca0f56a2ef23e370..4e23f44dd9736bb60529d7f5deb01c170c031524 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/EntrySpanListener.java
@@ -16,14 +16,13 @@
*
*/
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener;
-package org.apache.skywalking.apm.collector.agent.stream.parser;
-
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator;
/**
* @author peng-yongsheng
*/
public interface EntrySpanListener extends SpanListener {
void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId);
-}
+}
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/ExitSpanListener.java
similarity index 84%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/ExitSpanListener.java
index efec50cb1bf467cbf3a869c0d6e90af1bb5a93e5..5f468db668e4ef75cd2af9fc2ede425180ad8448 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/ExitSpanListener.java
@@ -16,10 +16,9 @@
*
*/
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener;
-package org.apache.skywalking.apm.collector.agent.stream.parser;
-
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/FirstSpanListener.java
similarity index 84%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/FirstSpanListener.java
index 57f6457ec5162188b18b5b6d83ba4262fd0a07de..c56a6cb5d2daf8aa8b8965ca9927966f92b2bcd6 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/FirstSpanListener.java
@@ -16,10 +16,9 @@
*
*/
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener;
-package org.apache.skywalking.apm.collector.agent.stream.parser;
-
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/GlobalTraceIdsListener.java
similarity index 92%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/GlobalTraceIdsListener.java
index b7e088dccbeadd3eb87214a0ffd21639cf4a08da..ee70b86189ae8144ecc52ce683fafed41215c8c7 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/GlobalTraceIdsListener.java
@@ -16,8 +16,7 @@
*
*/
-
-package org.apache.skywalking.apm.collector.agent.stream.parser;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener;
import org.apache.skywalking.apm.network.proto.UniqueId;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/LocalSpanListener.java
similarity index 84%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/LocalSpanListener.java
index 9c7cdbbd951602c48a2b04108b614305a8e45dce..6eceae55b3b6cfa351dd338f20324bcd68ed2600 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/LocalSpanListener.java
@@ -16,10 +16,9 @@
*
*/
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener;
-package org.apache.skywalking.apm.collector.agent.stream.parser;
-
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/SpanListener.java
similarity index 91%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SpanListener.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/SpanListener.java
index 9e52d0ac0e76072dbec2ce153696055fde80274c..3fd744ed139801416c0244e872dfd3e382f8368e 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SpanListener.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/SpanListener.java
@@ -16,8 +16,7 @@
*
*/
-
-package org.apache.skywalking.apm.collector.agent.stream.parser;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java
new file mode 100644
index 0000000000000000000000000000000000000000..2547cc64a17bafda3028590e52d9de4aaad68ca6
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.service;
+
+import org.apache.skywalking.apm.collector.core.module.Service;
+import org.apache.skywalking.apm.network.proto.UpstreamSegment;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface ISegmentParseService extends Service {
+ void parse(UpstreamSegment segment, Source source);
+
+ enum Source {
+ Agent, Buffer
+ }
+}
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1a6ce9b3f94a3ee1cba4da8eb379e07f27c12cd
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.define.service;
+
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener;
+import org.apache.skywalking.apm.collector.core.module.Service;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface ISegmentParserListenerRegister extends Service {
+ void register(SpanListener spanListener);
+}
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module
new file mode 100644
index 0000000000000000000000000000000000000000..8fb3ff2097d6a59b9c7e82f76728ff10706ea44b
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule
\ No newline at end of file
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e987c1abf3ae60286f94fa625484014637841142
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+ analysis-segment-parser
+ org.apache.skywalking
+ 5.0.0-alpha
+
+ 4.0.0
+
+ segment-parser-provider
+ jar
+
+
+
+ org.apache.skywalking
+ segment-parser-define
+ ${project.version}
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f47ca2179fa7aa2e34a9492977f1ec82b62c0d58
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider;
+
+import java.util.Properties;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParserListenerRegister;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParserListenerManager;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service.SegmentParseService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service.SegmentParserListenerRegister;
+import org.apache.skywalking.apm.collector.core.module.Module;
+import org.apache.skywalking.apm.collector.core.module.ModuleProvider;
+import org.apache.skywalking.apm.collector.core.module.ServiceNotProvidedException;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AnalysisTraceParseModuleProvider extends ModuleProvider {
+
+ public static final String NAME = "default";
+ private SegmentParserListenerManager listenerManager;
+
+ @Override public String name() {
+ return NAME;
+ }
+
+ @Override public Class extends Module> module() {
+ return AnalysisSegmentParserModule.class;
+ }
+
+ @Override public void prepare(Properties config) throws ServiceNotProvidedException {
+ this.listenerManager = new SegmentParserListenerManager();
+ this.registerServiceImplementation(ISegmentParserListenerRegister.class, new SegmentParserListenerRegister(listenerManager));
+ this.registerServiceImplementation(ISegmentParseService.class, new SegmentParseService(getManager(), listenerManager));
+ }
+
+ @Override public void start(Properties config) throws ServiceNotProvidedException {
+
+ }
+
+ @Override public void notifyAfterCompleted() throws ServiceNotProvidedException {
+
+ }
+
+ @Override public String[] requiredModules() {
+ return new String[0];
+ }
+}
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SegmentParse.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParse.java
similarity index 73%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SegmentParse.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParse.java
index 76bb577e01066b072d52ace01aff059b36955292..60998e3c7bfd6cba7833772072091ce41695dbca 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SegmentParse.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParse.java
@@ -16,33 +16,29 @@
*
*/
-
-package org.apache.skywalking.apm.collector.agent.stream.parser;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser;
import com.google.protobuf.InvalidProtocolBufferException;
-import java.util.ArrayList;
import java.util.List;
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceIdExchanger;
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SegmentDecorator;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceEntrySpanListener;
-import org.apache.skywalking.apm.collector.core.graph.GraphManager;
-import org.apache.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SegmentStandardization;
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
-import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanIdExchanger;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.application.ApplicationComponentSpanListener;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.application.ApplicationMappingSpanListener;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.application.ApplicationReferenceMetricSpanListener;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.global.GlobalTraceSpanListener;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.instance.InstanceMetricSpanListener;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.segment.SegmentCostSpanListener;
-import org.apache.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceReferenceMetricSpanListener;
+import javax.swing.text.Segment;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.ReferenceDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SegmentDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.EntrySpanListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.ExitSpanListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.FirstSpanListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.GlobalTraceIdsListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.LocalSpanListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization.ReferenceIdExchanger;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization.SegmentStandardization;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization.SpanIdExchanger;
import org.apache.skywalking.apm.collector.core.UnexpectedException;
import org.apache.skywalking.apm.collector.core.graph.Graph;
+import org.apache.skywalking.apm.collector.core.graph.GraphManager;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.apache.skywalking.apm.collector.storage.table.segment.Segment;
import org.apache.skywalking.apm.network.proto.SpanType;
import org.apache.skywalking.apm.network.proto.TraceSegmentObject;
import org.apache.skywalking.apm.network.proto.UniqueId;
@@ -57,25 +53,17 @@ public class SegmentParse {
private final Logger logger = LoggerFactory.getLogger(SegmentParse.class);
- private final List spanListeners;
private final ModuleManager moduleManager;
+ private final SegmentParserListenerManager listenerManager;
private String segmentId;
private long timeBucket = 0;
- public SegmentParse(ModuleManager moduleManager) {
+ public SegmentParse(ModuleManager moduleManager, SegmentParserListenerManager listenerManager) {
this.moduleManager = moduleManager;
- this.spanListeners = new ArrayList<>();
- this.spanListeners.add(new ApplicationComponentSpanListener());
- this.spanListeners.add(new ApplicationMappingSpanListener());
- this.spanListeners.add(new ApplicationReferenceMetricSpanListener(moduleManager));
- this.spanListeners.add(new SegmentCostSpanListener(moduleManager));
- this.spanListeners.add(new GlobalTraceSpanListener());
- this.spanListeners.add(new ServiceEntrySpanListener(moduleManager));
- this.spanListeners.add(new ServiceReferenceMetricSpanListener());
- this.spanListeners.add(new InstanceMetricSpanListener());
+ this.listenerManager = listenerManager;
}
- public boolean parse(UpstreamSegment segment, Source source) {
+ public boolean parse(UpstreamSegment segment, ISegmentParseService.Source source) {
try {
List traceIds = segment.getGlobalTraceIdsList();
TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(segment.getSegment());
@@ -85,7 +73,7 @@ public class SegmentParse {
if (!preBuild(traceIds, segmentDecorator)) {
logger.debug("This segment id exchange not success, write to buffer file, id: {}", segmentId);
- if (source.equals(Source.Agent)) {
+ if (source.equals(ISegmentParseService.Source.Agent)) {
writeToBufferFile(segmentId, segment);
}
return false;
@@ -184,12 +172,12 @@ public class SegmentParse {
}
private void notifyListenerToBuild() {
- spanListeners.forEach(SpanListener::build);
+ listenerManager.getSpanListeners().forEach(SpanListener::build);
}
private void notifyExitListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
- for (SpanListener listener : spanListeners) {
+ for (SpanListener listener : listenerManager.getSpanListeners()) {
if (listener instanceof ExitSpanListener) {
((ExitSpanListener)listener).parseExit(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
@@ -198,7 +186,7 @@ public class SegmentParse {
private void notifyEntryListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
- for (SpanListener listener : spanListeners) {
+ for (SpanListener listener : listenerManager.getSpanListeners()) {
if (listener instanceof EntrySpanListener) {
((EntrySpanListener)listener).parseEntry(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
@@ -207,7 +195,7 @@ public class SegmentParse {
private void notifyLocalListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
- for (SpanListener listener : spanListeners) {
+ for (SpanListener listener : listenerManager.getSpanListeners()) {
if (listener instanceof LocalSpanListener) {
((LocalSpanListener)listener).parseLocal(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
@@ -216,7 +204,7 @@ public class SegmentParse {
private void notifyFirstListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
- for (SpanListener listener : spanListeners) {
+ for (SpanListener listener : listenerManager.getSpanListeners()) {
if (listener instanceof FirstSpanListener) {
((FirstSpanListener)listener).parseFirst(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
@@ -224,14 +212,10 @@ public class SegmentParse {
}
private void notifyGlobalsListener(UniqueId uniqueId) {
- for (SpanListener listener : spanListeners) {
+ for (SpanListener listener : listenerManager.getSpanListeners()) {
if (listener instanceof GlobalTraceIdsListener) {
((GlobalTraceIdsListener)listener).parseGlobalTraceId(uniqueId);
}
}
}
-
- public enum Source {
- Agent, Buffer
- }
}
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..86c1ba1f3c7598cac479d5c0f1bf29ea014076f5
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener;
+
+/**
+ * @author peng-yongsheng
+ */
+public class SegmentParserListenerManager {
+
+ private List spanListeners;
+
+ public SegmentParserListenerManager() {
+ this.spanListeners = new ArrayList<>();
+ }
+
+ public void add(SpanListener spanListener) {
+ spanListeners.add(spanListener);
+ }
+
+ public List getSpanListeners() {
+ return spanListeners;
+ }
+}
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java
similarity index 82%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java
index 8da1228357f4b20e9bb75d6a2ec8c8fc31e7fdc7..6bf7148c7e829c02e33c39cff92e18f401b72737 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java
@@ -17,7 +17,9 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization;
+
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.StandardBuilder;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java
similarity index 96%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java
index 872f011c4c1177388e03fa5dcc6a5caf4714c43a..2fbfcf1214904d8afd6adf2f8231252d4f4ae5a7 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java
@@ -17,8 +17,9 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.ReferenceDecorator;
import org.apache.skywalking.apm.collector.core.util.Const;
import org.apache.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService;
import org.apache.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardization.java
similarity index 93%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardization.java
index 256facbc40d1318eaa8f6a4fcc997fb4a717f375..08717ce40dcdf7b920b593c466d23992a4770cf1 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardization.java
@@ -17,7 +17,7 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization;
import org.apache.skywalking.apm.collector.core.data.EndOfBatchQueueMessage;
import org.apache.skywalking.apm.network.proto.UpstreamSegment;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardizationWorker.java
similarity index 96%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardizationWorker.java
index fe08b8726d35e38081043b27ad4045e6dff16067..12b6206d6e288bf12094196aaceb79bd6dcbce88 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardizationWorker.java
@@ -17,7 +17,7 @@
*/
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java
similarity index 94%
rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java
rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java
index e7774fcf510ad81594b17d41de4f9f078fb75b44..876c58f81db41f60772fc4f31f46edc1ee89110c 100644
--- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java
@@ -16,11 +16,11 @@
*
*/
-
-package org.apache.skywalking.apm.collector.agent.stream.parser.standardization;
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization;
import org.apache.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService;
import org.apache.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.Const;
import org.apache.skywalking.apm.collector.core.util.StringUtils;
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java
new file mode 100644
index 0000000000000000000000000000000000000000..c848fe4ea52785270306bdb543516e63488f499a
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service;
+
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParse;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParserListenerManager;
+import org.apache.skywalking.apm.collector.core.module.ModuleManager;
+import org.apache.skywalking.apm.network.proto.UpstreamSegment;
+
+/**
+ * @author peng-yongsheng
+ */
+public class SegmentParseService implements ISegmentParseService {
+
+ private final ModuleManager moduleManager;
+ private final SegmentParserListenerManager listenerManager;
+
+ public SegmentParseService(ModuleManager moduleManager, SegmentParserListenerManager listenerManager) {
+ this.moduleManager = moduleManager;
+ this.listenerManager = listenerManager;
+ }
+
+ @Override public void parse(UpstreamSegment segment, Source source) {
+ SegmentParse segmentParse = new SegmentParse(moduleManager, listenerManager);
+ segmentParse.parse(segment, source);
+ }
+}
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a903d067cb299d6cd37d59c91e2d31ce2518e1a
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service;
+
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParserListenerRegister;
+import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParserListenerManager;
+
+/**
+ * @author peng-yongsheng
+ */
+public class SegmentParserListenerRegister implements ISegmentParserListenerRegister {
+
+ private final SegmentParserListenerManager listenerManager;
+
+ public SegmentParserListenerRegister(SegmentParserListenerManager listenerManager) {
+ this.listenerManager = listenerManager;
+ }
+
+ @Override public void register(SpanListener spanListener) {
+ this.listenerManager.add(spanListener);
+ }
+}
diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider
new file mode 100644
index 0000000000000000000000000000000000000000..d33d1248ffb005781c41e86fd09f52b4100966af
--- /dev/null
+++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider
@@ -0,0 +1,37 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+org.apache.skywalking.apm.collector.analysis.segment.parser.provider.AnalysisTraceParseModuleProvider
\ No newline at end of file
diff --git a/apm-collector/apm-collector-analysis/pom.xml b/apm-collector/apm-collector-analysis/pom.xml
index 397062a434218d49f14a30fade8369480fe14560..cfab3c96e5f448a3f484ba2dd1a9671ce6796f18 100644
--- a/apm-collector/apm-collector-analysis/pom.xml
+++ b/apm-collector/apm-collector-analysis/pom.xml
@@ -28,6 +28,16 @@
4.0.0
apm-collector-analysis
+ pom
+
+ analysis-segment-parser
+
-
+
+
+ org.apache.skywalking
+ apm-collector-core
+ ${project.version}
+
+
\ No newline at end of file