This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch rt-oal
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit ef5af394f92770397b4482d4b5aa214c311b3fbb
Author: Wu Sheng <[email protected]>
AuthorDate: Tue Jul 16 11:50:49 2019 +0800

    Change OAL generator tool to runtime.
    
    Step 1. change project structure. API links and maven pom.
---
 .../java/org/apache/skywalking/oal/tool/Main.java  | 66 --------------------
 oap-server/generated-analysis/pom.xml              | 70 ----------------------
 .../{generate-tool-grammar => oal-grammar}/pom.xml |  3 +-
 .../apache/skywalking/oal/rt}/grammar/OALLexer.g4  |  2 +-
 .../apache/skywalking/oal/rt}/grammar/OALParser.g4 |  2 +-
 oap-server/{generate-tool => oal-rt}/pom.xml       | 16 +----
 .../org/apache/skywalking/oal/rt/OALRuntime.java   | 66 ++++++++++++++++++++
 .../apache/skywalking/oal/rt}/meta/MetaReader.java |  8 +--
 .../skywalking/oal/rt}/meta/MetaSettings.java      |  2 +-
 .../apache/skywalking/oal/rt}/meta/ScopeMeta.java  |  4 +-
 .../oal/rt}/output/AllDispatcherContext.java       |  2 +-
 .../oal/rt}/output/DispatcherContext.java          |  4 +-
 .../skywalking/oal/rt}/output/FileGenerator.java   |  4 +-
 .../skywalking/oal/rt}/output/WriteWrapper.java    |  2 +-
 .../skywalking/oal/rt}/parser/AnalysisResult.java  |  2 +-
 .../oal/rt}/parser/ConditionExpression.java        |  2 +-
 .../skywalking/oal/rt}/parser/DataColumn.java      |  4 +-
 .../skywalking/oal/rt}/parser/DeepAnalysis.java    |  4 +-
 .../oal/rt}/parser/DisableCollection.java          |  2 +-
 .../skywalking/oal/rt}/parser/EntryMethod.java     |  2 +-
 .../oal/rt}/parser/FilterExpression.java           |  2 +-
 .../skywalking/oal/rt}/parser/MetricsHolder.java   |  2 +-
 .../skywalking/oal/rt}/parser/OALListener.java     |  4 +-
 .../skywalking/oal/rt}/parser/OALScripts.java      |  2 +-
 .../oal/rt}/parser/PersistenceColumns.java         |  2 +-
 .../oal/rt}/parser/PersistenceField.java           |  4 +-
 .../skywalking/oal/rt}/parser/ScriptParser.java    | 15 +++--
 .../skywalking/oal/rt}/parser/SourceColumn.java    |  4 +-
 .../oal/rt}/parser/SourceColumnsFactory.java       |  4 +-
 .../skywalking/oal/rt}/util/ClassMethodUtil.java   |  2 +-
 .../code-templates/DisableSourceDefinition.ftl     |  0
 .../code-templates/DispatcherTemplate.ftl          |  0
 .../code-templates/MetricsImplementor.ftl          |  0
 .../skywalking/oal/rt}/meta/MetaReaderTest.java    |  4 +-
 .../oal/rt}/meta/MockSourceColumnsFactory.java     |  4 +-
 .../oal/rt}/output/FileGeneratorTest.java          |  6 +-
 .../oal/rt}/parser/DeepAnalysisTest.java           |  4 +-
 .../oal/rt}/parser/ScriptParserTest.java           |  6 +-
 .../expectedFiles/MetricsImplementorExpected.java  |  0
 .../expectedFiles/ServiceDispatcherExpected.java   |  0
 .../src/test/resources/oal_test.oal                |  0
 .../src/test/resources/scope-meta.yml              |  0
 oap-server/pom.xml                                 | 18 +++++-
 .../oap/server/core/CoreModuleProvider.java        | 13 +++-
 .../oap/server/core/annotation/AnnotationScan.java | 19 ++++--
 .../oap/server/core/oal/rt/OALEngine.java}         | 16 ++---
 .../oap/server/core/oal/rt/OALEngineLoader.java    | 50 ++++++++++++++++
 .../oap/server/core/source/DefaultScopeDefine.java |  2 +-
 oap-server/server-starter/pom.xml                  | 13 ++--
 .../server-starter/src/main/assembly/assembly.xml  |  1 +
 .../src/main/resources/official_analysis.oal       |  0
 .../src/main/resources/scope-meta.yml}             |  0
 pom.xml                                            |  2 +-
 53 files changed, 228 insertions(+), 238 deletions(-)

diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java
 
b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java
deleted file mode 100644
index 04a48c9..0000000
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.oal.tool;
-
-import freemarker.template.TemplateException;
-import java.io.*;
-import org.apache.skywalking.apm.util.StringUtil;
-import org.apache.skywalking.oal.tool.meta.*;
-import org.apache.skywalking.oal.tool.output.FileGenerator;
-import org.apache.skywalking.oal.tool.parser.*;
-import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
-import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-
-public class Main {
-
-    public static void main(String[] args) throws IOException, 
TemplateException {
-        AnnotationScan scopeScan = new AnnotationScan();
-        scopeScan.registerListener(new DefaultScopeDefine.Listener());
-        scopeScan.scan(null);
-
-        String modulePath = args[0];
-
-        String scriptFilePath = StringUtil.join(File.separatorChar, 
modulePath, "src", "main", "resources", "official_analysis.oal");
-        String outputPath = StringUtil.join(File.separatorChar, modulePath, 
"..", "generated-analysis", "target", "generated-sources", "oal",
-            "org", "apache", "skywalking", "oap", "server", "core", 
"analysis");
-        String metaFilePath = StringUtil.join(File.separatorChar, modulePath, 
"src", "main", "resources", "generator-scope-meta.yml");
-
-        MetricsHolder.init();
-
-        File scriptFile = new File(scriptFilePath);
-        if (!scriptFile.exists()) {
-            throw new IllegalArgumentException("OAL script file [" + 
scriptFilePath + "] doesn't exist");
-        }
-
-        File metaFile = new File(metaFilePath);
-        if (!metaFile.exists()) {
-            throw new IllegalArgumentException("Generator meta file [" + 
metaFilePath + "] doesn't exist");
-        }
-
-        MetaReader reader = new MetaReader();
-        MetaSettings metaSettings = reader.read(new FileInputStream(metaFile));
-        SourceColumnsFactory.setSettings(metaSettings);
-
-        ScriptParser scriptParser = 
ScriptParser.createFromFile(scriptFilePath);
-        OALScripts oalScripts = scriptParser.parse();
-
-        FileGenerator generator = new FileGenerator(oalScripts, outputPath);
-        generator.generate();
-    }
-}
diff --git a/oap-server/generated-analysis/pom.xml 
b/oap-server/generated-analysis/pom.xml
deleted file mode 100644
index 63265e3..0000000
--- a/oap-server/generated-analysis/pom.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ 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.
-  ~
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <parent>
-        <artifactId>oap-server</artifactId>
-        <groupId>org.apache.skywalking</groupId>
-        <version>6.3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>generated-analysis</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.skywalking</groupId>
-            <artifactId>server-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <!-- This dependency will be excluded in starter pom.xml -->
-        <!-- Use default scope because `org.apache.skywalking.oal.tool.Main` 
in this lib, only this could make code generate tool works -->
-        <dependency>
-            <groupId>org.apache.skywalking</groupId>
-            <artifactId>generate-tool</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-
-    <build>
-        <sourceDirectory>target/generated-sources/oal</sourceDirectory>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>${exec-maven-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>java</goal>
-                        </goals>
-                        <configuration>
-                            
<mainClass>org.apache.skywalking.oal.tool.Main</mainClass>
-                            <arguments>
-                                <argument>${project.basedir}</argument>
-                            </arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
diff --git a/oap-server/generate-tool-grammar/pom.xml 
b/oap-server/oal-grammar/pom.xml
similarity index 95%
rename from oap-server/generate-tool-grammar/pom.xml
rename to oap-server/oal-grammar/pom.xml
index caf196d..3c7408f 100644
--- a/oap-server/generate-tool-grammar/pom.xml
+++ b/oap-server/oal-grammar/pom.xml
@@ -25,13 +25,12 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>generate-tool-grammar</artifactId>
+    <artifactId>oal-grammar</artifactId>
 
     <dependencies>
         <dependency>
             <groupId>org.antlr</groupId>
             <artifactId>antlr4</artifactId>
-            <version>4.7.1</version>
         </dependency>
     </dependencies>
 
diff --git 
a/oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4
 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
similarity index 97%
rename from 
oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4
rename to 
oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
index 8ae21e2..7ab88fc 100644
--- 
a/oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4
+++ 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
@@ -20,7 +20,7 @@
 // Observability Analysis Language lexer
 lexer grammar OALLexer;
 
-@Header {package org.apache.skywalking.oal.tool.grammar;}
+@Header {package org.apache.skywalking.oal.rt.grammar;}
 
 // Keywords
 
diff --git 
a/oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4
 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
similarity index 98%
rename from 
oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4
rename to 
oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
index 79127e4..a7103f3 100644
--- 
a/oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4
+++ 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
@@ -18,7 +18,7 @@
 
 parser grammar OALParser;
 
-@Header {package org.apache.skywalking.oal.tool.grammar;}
+@Header {package org.apache.skywalking.oal.rt.grammar;}
 
 options { tokenVocab=OALLexer; }
 
diff --git a/oap-server/generate-tool/pom.xml b/oap-server/oal-rt/pom.xml
similarity index 78%
rename from oap-server/generate-tool/pom.xml
rename to oap-server/oal-rt/pom.xml
index 46251c3..409347e 100644
--- a/oap-server/generate-tool/pom.xml
+++ b/oap-server/oal-rt/pom.xml
@@ -25,7 +25,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>generate-tool</artifactId>
+    <artifactId>oal-rt</artifactId>
 
     <dependencies>
         <dependency>
@@ -35,28 +35,16 @@
         </dependency>
         <dependency>
             <groupId>org.apache.skywalking</groupId>
-            <artifactId>generate-tool-grammar</artifactId>
+            <artifactId>oal-grammar</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.antlr</groupId>
             <artifactId>antlr4</artifactId>
-            <version>4.7.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-cli</groupId>
-            <artifactId>commons-cli</artifactId>
-            <version>1.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.0</version>
         </dependency>
         <dependency>
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>
-            <version>2.3.28</version>
         </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
new file mode 100644
index 0000000..0511120
--- /dev/null
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
@@ -0,0 +1,66 @@
+/*
+ * 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.oal.rt;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Reader;
+import org.apache.skywalking.oal.rt.meta.MetaReader;
+import org.apache.skywalking.oal.rt.meta.MetaSettings;
+import org.apache.skywalking.oal.rt.parser.OALScripts;
+import org.apache.skywalking.oal.rt.parser.ScriptParser;
+import org.apache.skywalking.oal.rt.parser.SourceColumnsFactory;
+import org.apache.skywalking.oap.server.core.oal.rt.OALEngine;
+import org.apache.skywalking.oap.server.library.module.ModuleStartException;
+import org.apache.skywalking.oap.server.library.util.ResourceUtils;
+
+/**
+ * OAL Runtime is the class generation engine, which load the generated 
classes from OAL scrip definitions.
+ *
+ * @author wusheng
+ */
+public class OALRuntime implements OALEngine {
+    @Override public void start(ClassLoader currentClassLoader) throws 
ModuleStartException {
+        Reader read;
+        try {
+            read = ResourceUtils.read("scope-meta.yml");
+        } catch (FileNotFoundException e) {
+            throw new ModuleStartException("Can't locate scope-meta.yml", e);
+        }
+
+        MetaReader reader = new MetaReader();
+        MetaSettings metaSettings = reader.read(read);
+        SourceColumnsFactory.setSettings(metaSettings);
+
+        try {
+            read = ResourceUtils.read("official_analysis.oal");
+        } catch (FileNotFoundException e) {
+            throw new ModuleStartException("Can't locate 
official_analysis.oal", e);
+        }
+
+        ScriptParser scriptParser = null;
+        try {
+            scriptParser = ScriptParser.createFromFile(read);
+            OALScripts oalScripts = scriptParser.parse();
+        } catch (IOException e) {
+            throw new ModuleStartException("OAL script parse analysis 
failure.", e);
+        }
+
+    }
+}
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaReader.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/MetaReader.java
similarity index 81%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaReader.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/MetaReader.java
index 8a0f9de..a8cb99c 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaReader.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/MetaReader.java
@@ -16,18 +16,18 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.meta;
+package org.apache.skywalking.oal.rt.meta;
 
-import java.io.InputStream;
+import java.io.Reader;
 import org.yaml.snakeyaml.Yaml;
 
 /**
  * @author wusheng
  */
 public class MetaReader {
-    public MetaSettings read(InputStream settingFileStream) {
+    public MetaSettings read(Reader reader) {
         Yaml yaml = new Yaml();
-        MetaSettings settings = yaml.loadAs(settingFileStream, 
MetaSettings.class);
+        MetaSettings settings = yaml.loadAs(reader, MetaSettings.class);
 
         return settings;
     }
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaSettings.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/MetaSettings.java
similarity index 95%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaSettings.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/MetaSettings.java
index 7e5ea0a..31b3cd3 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaSettings.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/MetaSettings.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.meta;
+package org.apache.skywalking.oal.rt.meta;
 
 import java.util.List;
 import lombok.*;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/ScopeMeta.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/ScopeMeta.java
similarity index 90%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/ScopeMeta.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/ScopeMeta.java
index f027d43..7a67410 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/ScopeMeta.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/meta/ScopeMeta.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.meta;
+package org.apache.skywalking.oal.rt.meta;
 
 import java.util.*;
 import lombok.*;
-import org.apache.skywalking.oal.tool.parser.SourceColumn;
+import org.apache.skywalking.oal.rt.parser.SourceColumn;
 
 /**
  * @author wusheng
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/AllDispatcherContext.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/AllDispatcherContext.java
similarity index 95%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/AllDispatcherContext.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/AllDispatcherContext.java
index ac11fe7..1a406ad 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/AllDispatcherContext.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/AllDispatcherContext.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.output;
+package org.apache.skywalking.oal.rt.output;
 
 import java.util.*;
 import lombok.*;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/DispatcherContext.java
similarity index 90%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/DispatcherContext.java
index b8913e3..be54da6 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/DispatcherContext.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.output;
+package org.apache.skywalking.oal.rt.output;
 
 import java.util.*;
 import lombok.*;
-import org.apache.skywalking.oal.tool.parser.AnalysisResult;
+import org.apache.skywalking.oal.rt.parser.AnalysisResult;
 
 @Getter
 @Setter
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/FileGenerator.java
similarity index 97%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/FileGenerator.java
index deab81b..cb228b1 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/FileGenerator.java
@@ -16,12 +16,12 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.output;
+package org.apache.skywalking.oal.rt.output;
 
 import freemarker.template.*;
 import java.io.*;
 import java.util.*;
-import org.apache.skywalking.oal.tool.parser.*;
+import org.apache.skywalking.oal.rt.parser.*;
 
 public class FileGenerator {
     private List<AnalysisResult> results;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/WriteWrapper.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/WriteWrapper.java
similarity index 95%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/WriteWrapper.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/WriteWrapper.java
index d212040..a98a271 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/WriteWrapper.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/WriteWrapper.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.output;
+package org.apache.skywalking.oal.rt.output;
 
 import freemarker.template.TemplateException;
 import java.io.*;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/AnalysisResult.java
similarity index 99%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/AnalysisResult.java
index 20a7e49..6579e27 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/AnalysisResult.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.*;
 import lombok.*;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/ConditionExpression.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java
similarity index 95%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/ConditionExpression.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java
index 9643339..e538567 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/ConditionExpression.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import lombok.*;
 
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DataColumn.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java
similarity index 93%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DataColumn.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java
index 31c8188..0a2c0b8 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DataColumn.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java
@@ -16,10 +16,10 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import lombok.*;
-import org.apache.skywalking.oal.tool.util.ClassMethodUtil;
+import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
 
 @Getter(AccessLevel.PUBLIC)
 @Setter(AccessLevel.PUBLIC)
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DeepAnalysis.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DeepAnalysis.java
similarity index 98%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DeepAnalysis.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DeepAnalysis.java
index 5645360..277d6a3 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DeepAnalysis.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DeepAnalysis.java
@@ -16,12 +16,12 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.*;
 import java.util.List;
-import org.apache.skywalking.oal.tool.util.ClassMethodUtil;
+import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
 import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.*;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
 
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DisableCollection.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DisableCollection.java
similarity index 95%
copy from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DisableCollection.java
copy to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DisableCollection.java
index 08987c2..17539cc 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DisableCollection.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DisableCollection.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.*;
 import lombok.Getter;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/EntryMethod.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java
similarity index 96%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/EntryMethod.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java
index d87ad3b..000b3e2 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/EntryMethod.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.*;
 import lombok.*;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/FilterExpression.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/FilterExpression.java
similarity index 95%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/FilterExpression.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/FilterExpression.java
index 20dc471..d83973a 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/FilterExpression.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/FilterExpression.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import lombok.*;
 
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/MetricsHolder.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/MetricsHolder.java
similarity index 98%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/MetricsHolder.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/MetricsHolder.java
index 56b9066..af32d0e 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/MetricsHolder.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/MetricsHolder.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.reflect.ClassPath;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/OALListener.java
similarity index 98%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/OALListener.java
index 8af3073..fb5b3cd 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/OALListener.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.List;
 import org.antlr.v4.runtime.misc.NotNull;
-import org.apache.skywalking.oal.tool.grammar.*;
+import org.apache.skywalking.oal.rt.grammar.*;
 import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
 
 public class OALListener extends OALParserBaseListener {
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALScripts.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/OALScripts.java
similarity index 95%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALScripts.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/OALScripts.java
index cfb4277..8af71be 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALScripts.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/OALScripts.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.*;
 import lombok.*;
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/PersistenceColumns.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceColumns.java
similarity index 97%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/PersistenceColumns.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceColumns.java
index 8a78e3d..a93d7f4 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/PersistenceColumns.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceColumns.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.*;
 
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/PersistenceField.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java
similarity index 91%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/PersistenceField.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java
index 5e9c254..c126ef0 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/PersistenceField.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java
@@ -16,10 +16,10 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import lombok.*;
-import org.apache.skywalking.oal.tool.util.ClassMethodUtil;
+import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
 
 @Getter(AccessLevel.PUBLIC)
 @Setter(AccessLevel.PUBLIC)
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/ScriptParser.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ScriptParser.java
similarity index 83%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/ScriptParser.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ScriptParser.java
index 9091fbd..70ff752 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/ScriptParser.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ScriptParser.java
@@ -16,14 +16,19 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.io.IOException;
-import java.util.*;
+import java.io.Reader;
 import org.antlr.v4.runtime.*;
 import org.antlr.v4.runtime.tree.*;
-import org.apache.skywalking.oal.tool.grammar.*;
+import org.apache.skywalking.oal.rt.grammar.*;
 
+/**
+ * Script reader and parser.
+ *
+ * @author wusheng
+ */
 public class ScriptParser {
     private OALLexer lexer;
 
@@ -31,9 +36,9 @@ public class ScriptParser {
 
     }
 
-    public static ScriptParser createFromFile(String scriptFilepath) throws 
IOException {
+    public static ScriptParser createFromFile(Reader scriptReader) throws 
IOException {
         ScriptParser parser = new ScriptParser();
-        parser.lexer = new OALLexer(CharStreams.fromFileName(scriptFilepath));
+        parser.lexer = new OALLexer(CharStreams.fromReader(scriptReader));
         return parser;
     }
 
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java
similarity index 97%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java
index 74a7706..49e1611 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.Objects;
 import lombok.*;
-import org.apache.skywalking.oal.tool.util.ClassMethodUtil;
+import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
 
 @Getter(AccessLevel.PUBLIC)
 @Setter(AccessLevel.PUBLIC)
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumnsFactory.java
similarity index 93%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumnsFactory.java
index 7be457c..7955503 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumnsFactory.java
@@ -16,10 +16,10 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.util.*;
-import org.apache.skywalking.oal.tool.meta.*;
+import org.apache.skywalking.oal.rt.meta.*;
 
 /**
  * @author wusheng
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/util/ClassMethodUtil.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/util/ClassMethodUtil.java
similarity index 96%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/util/ClassMethodUtil.java
rename to 
oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/util/ClassMethodUtil.java
index 140ab63..4a880a6 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/util/ClassMethodUtil.java
+++ 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/util/ClassMethodUtil.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.util;
+package org.apache.skywalking.oal.rt.util;
 
 public class ClassMethodUtil {
     public static String toGetMethod(String attribute) {
diff --git 
a/oap-server/generate-tool/src/main/resources/code-templates/DisableSourceDefinition.ftl
 
b/oap-server/oal-rt/src/main/resources/code-templates/DisableSourceDefinition.ftl
similarity index 100%
rename from 
oap-server/generate-tool/src/main/resources/code-templates/DisableSourceDefinition.ftl
rename to 
oap-server/oal-rt/src/main/resources/code-templates/DisableSourceDefinition.ftl
diff --git 
a/oap-server/generate-tool/src/main/resources/code-templates/DispatcherTemplate.ftl
 b/oap-server/oal-rt/src/main/resources/code-templates/DispatcherTemplate.ftl
similarity index 100%
rename from 
oap-server/generate-tool/src/main/resources/code-templates/DispatcherTemplate.ftl
rename to 
oap-server/oal-rt/src/main/resources/code-templates/DispatcherTemplate.ftl
diff --git 
a/oap-server/generate-tool/src/main/resources/code-templates/MetricsImplementor.ftl
 b/oap-server/oal-rt/src/main/resources/code-templates/MetricsImplementor.ftl
similarity index 100%
rename from 
oap-server/generate-tool/src/main/resources/code-templates/MetricsImplementor.ftl
rename to 
oap-server/oal-rt/src/main/resources/code-templates/MetricsImplementor.ftl
diff --git 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MetaReaderTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/meta/MetaReaderTest.java
similarity index 94%
rename from 
oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MetaReaderTest.java
rename to 
oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/meta/MetaReaderTest.java
index bb1ac4c..17f506d 100644
--- 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MetaReaderTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/meta/MetaReaderTest.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.meta;
+package org.apache.skywalking.oal.rt.meta;
 
 import java.io.InputStream;
 import java.util.List;
-import org.apache.skywalking.oal.tool.parser.SourceColumn;
+import org.apache.skywalking.oal.rt.parser.SourceColumn;
 import org.junit.*;
 
 public class MetaReaderTest {
diff --git 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MockSourceColumnsFactory.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/meta/MockSourceColumnsFactory.java
similarity index 98%
rename from 
oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MockSourceColumnsFactory.java
rename to 
oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/meta/MockSourceColumnsFactory.java
index 5930907..3d3c4b5 100644
--- 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MockSourceColumnsFactory.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/meta/MockSourceColumnsFactory.java
@@ -16,10 +16,10 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.meta;
+package org.apache.skywalking.oal.rt.meta;
 
 import java.util.*;
-import org.apache.skywalking.oal.tool.parser.SourceColumn;
+import org.apache.skywalking.oal.rt.parser.SourceColumn;
 
 public class MockSourceColumnsFactory {
     public static List<SourceColumn> getColumns(String source) {
diff --git 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/output/FileGeneratorTest.java
similarity index 97%
rename from 
oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
rename to 
oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/output/FileGeneratorTest.java
index 88ce38c..21069ae 100644
--- 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/output/FileGeneratorTest.java
@@ -16,13 +16,13 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.output;
+package org.apache.skywalking.oal.rt.output;
 
 import freemarker.template.TemplateException;
 import java.io.*;
 import java.util.LinkedList;
-import org.apache.skywalking.oal.tool.meta.*;
-import org.apache.skywalking.oal.tool.parser.*;
+import org.apache.skywalking.oal.rt.meta.*;
+import org.apache.skywalking.oal.rt.parser.*;
 import org.junit.*;
 
 public class FileGeneratorTest {
diff --git 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
similarity index 98%
rename from 
oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
rename to 
oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
index 0334ae7..b4abfd2 100644
--- 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.io.*;
 import java.util.List;
-import org.apache.skywalking.oal.tool.meta.*;
+import org.apache.skywalking.oal.rt.meta.*;
 import org.junit.*;
 
 public class DeepAnalysisTest {
diff --git 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
similarity index 98%
rename from 
oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
rename to 
oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
index 59c3849..e27ac02 100644
--- 
a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.rt.parser;
 
 import java.io.*;
 import java.util.List;
-import org.apache.skywalking.oal.tool.meta.*;
+import org.apache.skywalking.oal.rt.meta.*;
 import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
 import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
 import org.junit.*;
@@ -36,7 +36,7 @@ public class ScriptParserTest {
 
         AnnotationScan scopeScan = new AnnotationScan();
         scopeScan.registerListener(new DefaultScopeDefine.Listener());
-        scopeScan.scan(null);
+        scopeScan.scan();
     }
 
     @AfterClass
diff --git 
a/oap-server/generate-tool/src/test/resources/expectedFiles/MetricsImplementorExpected.java
 
b/oap-server/oal-rt/src/test/resources/expectedFiles/MetricsImplementorExpected.java
similarity index 100%
rename from 
oap-server/generate-tool/src/test/resources/expectedFiles/MetricsImplementorExpected.java
rename to 
oap-server/oal-rt/src/test/resources/expectedFiles/MetricsImplementorExpected.java
diff --git 
a/oap-server/generate-tool/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
 
b/oap-server/oal-rt/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
similarity index 100%
rename from 
oap-server/generate-tool/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
rename to 
oap-server/oal-rt/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
diff --git a/oap-server/generate-tool/src/test/resources/oal_test.oal 
b/oap-server/oal-rt/src/test/resources/oal_test.oal
similarity index 100%
rename from oap-server/generate-tool/src/test/resources/oal_test.oal
rename to oap-server/oal-rt/src/test/resources/oal_test.oal
diff --git a/oap-server/generate-tool/src/test/resources/scope-meta.yml 
b/oap-server/oal-rt/src/test/resources/scope-meta.yml
similarity index 100%
rename from oap-server/generate-tool/src/test/resources/scope-meta.yml
rename to oap-server/oal-rt/src/test/resources/scope-meta.yml
diff --git a/oap-server/pom.xml b/oap-server/pom.xml
index 7c58df0..28803de 100644
--- a/oap-server/pom.xml
+++ b/oap-server/pom.xml
@@ -37,10 +37,9 @@
         <module>server-query-plugin</module>
         <module>server-alarm-plugin</module>
         <module>server-testing</module>
-        <module>generated-analysis</module>
-        <module>generate-tool</module>
+        <module>oal-rt</module>
         <module>server-telemetry</module>
-        <module>generate-tool-grammar</module>
+        <module>oal-grammar</module>
         <module>exporter</module>
         <module>server-configuration</module>
     </modules>
@@ -83,6 +82,8 @@
         <curator-test.version>2.12.0</curator-test.version>
         <etcd4j.version>2.17.0</etcd4j.version>
         <etcd.version>v3.2.3</etcd.version>
+        <antlr.version>4.7.1</antlr.version>
+        <freemarker.version>2.3.28</freemarker.version>
     </properties>
 
     <dependencies>
@@ -407,6 +408,17 @@
                 </exclusions>
                 <scope>test</scope>
             </dependency>
+
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr4</artifactId>
+                <version>${antlr.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.freemarker</groupId>
+                <artifactId>freemarker</artifactId>
+                <version>${freemarker.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 </project>
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
index 5c60cd3..4ed3648 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
@@ -25,6 +25,7 @@ import 
org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
 import org.apache.skywalking.oap.server.core.cache.*;
 import org.apache.skywalking.oap.server.core.cluster.*;
 import org.apache.skywalking.oap.server.core.config.*;
+import org.apache.skywalking.oap.server.core.oal.rt.OALEngineLoader;
 import org.apache.skywalking.oap.server.core.query.*;
 import org.apache.skywalking.oap.server.core.register.service.*;
 import org.apache.skywalking.oap.server.core.remote.*;
@@ -81,10 +82,17 @@ public class CoreModuleProvider extends ModuleProvider {
     @Override public void prepare() throws ServiceNotProvidedException, 
ModuleStartException {
         AnnotationScan scopeScan = new AnnotationScan();
         scopeScan.registerListener(new DefaultScopeDefine.Listener());
+
+        try {
+            OALEngineLoader.get().start(getClass().getClassLoader());
+        } catch (Exception e) {
+            throw new ModuleStartException(e.getMessage(), e);
+        }
+
         scopeScan.registerListener(DisableRegister.INSTANCE);
         scopeScan.registerListener(new 
DisableRegister.SingleDisableScanListener());
         try {
-            scopeScan.scan(null);
+            scopeScan.scan();
         } catch (IOException e) {
             throw new ModuleStartException(e.getMessage(), e);
         }
@@ -158,8 +166,7 @@ public class CoreModuleProvider extends ModuleProvider {
         try {
             receiver.scan();
 
-            annotationScan.scan(() -> {
-            });
+            annotationScan.scan();
             streamDataMapping.init();
         } catch (IOException | IllegalAccessException | InstantiationException 
e) {
             throw new ModuleStartException(e.getMessage(), e);
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
index 7b8aea8..da68bc5 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
@@ -25,7 +25,9 @@ import java.lang.annotation.Annotation;
 import java.util.*;
 
 /**
- * @author peng-yongsheng
+ * Scan the annotation, and notify the listener(s)
+ *
+ * @author peng-yongsheng, wusheng
  */
 public class AnnotationScan {
 
@@ -35,11 +37,20 @@ public class AnnotationScan {
         this.listeners = new LinkedList<>();
     }
 
+    /**
+     * Register the callback listener
+     * @param listener to be called after class found w/ annotation
+     */
     public void registerListener(AnnotationListener listener) {
         listeners.add(new AnnotationListenerCache(listener));
     }
 
-    public void scan(Runnable callBack) throws IOException {
+    /**
+     * Begin to scan classes.
+     *
+     * @throws IOException
+     */
+    public void scan() throws IOException {
         ClassPath classpath = ClassPath.from(this.getClass().getClassLoader());
         ImmutableSet<ClassPath.ClassInfo> classes = 
classpath.getTopLevelClassesRecursive("org.apache.skywalking");
         for (ClassPath.ClassInfo classInfo : classes) {
@@ -53,10 +64,6 @@ public class AnnotationScan {
         }
 
         listeners.forEach(AnnotationListenerCache::complete);
-
-        if (callBack != null) {
-            callBack.run();
-        }
     }
 
     private class AnnotationListenerCache {
diff --git 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DisableCollection.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngine.java
similarity index 72%
rename from 
oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DisableCollection.java
rename to 
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngine.java
index 08987c2..cf385d7 100644
--- 
a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/DisableCollection.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngine.java
@@ -16,19 +16,15 @@
  *
  */
 
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oap.server.core.oal.rt;
 
-import java.util.*;
-import lombok.Getter;
+import org.apache.skywalking.oap.server.library.module.ModuleStartException;
 
 /**
+ * OALEngine defines the main entrance of the oal script engine runtime.
+ *
  * @author wusheng
  */
-@Getter
-public class DisableCollection {
-    private List<String> allDisableSources = new ArrayList<>();
-
-    public void add(String source) {
-        allDisableSources.add(source);
-    }
+public interface OALEngine {
+    void start(ClassLoader currentClassLoader) throws ModuleStartException;
 }
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngineLoader.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngineLoader.java
new file mode 100644
index 0000000..a921635
--- /dev/null
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngineLoader.java
@@ -0,0 +1,50 @@
+/*
+ * 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.oap.server.core.oal.rt;
+
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Load the OAL Engine runtime, because runtime module depends on core, so we 
have to use class::forname to locate it.
+ *
+ * @author wusheng
+ */
+public class OALEngineLoader {
+    private static volatile OALEngine ENGINE = null;
+    private static ReentrantLock INIT_LOCK = new ReentrantLock();
+
+    public static OALEngine get() throws ClassNotFoundException, 
InstantiationException, IllegalAccessException {
+        if (ENGINE == null) {
+            INIT_LOCK.lock();
+            try {
+                if (ENGINE == null) {
+                    init();
+                }
+            } finally {
+                INIT_LOCK.unlock();
+            }
+        }
+        return ENGINE;
+    }
+
+    private static void init() throws ClassNotFoundException, 
IllegalAccessException, InstantiationException {
+        Class<?> engineRTClass = 
Class.forName("org.apache.skywalking.oal.rt.OALRuntime");
+        ENGINE = (OALEngine)engineRTClass.newInstance();
+    }
+}
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
index e5d5cb1..8d83b16 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -64,7 +64,7 @@ public class DefaultScopeDefine {
     public static final int HTTP_ACCESS_LOG = 25;
 
     /**
-     * Catalog of scope, the metrics processor could use this to group all 
generated metrics by oal tool.
+     * Catalog of scope, the metrics processor could use this to group all 
generated metrics by oal rt.
      */
     public static final String SERVICE_CATALOG_NAME = "SERVICE";
     public static final String SERVICE_INSTANCE_CATALOG_NAME = 
"SERVICE_INSTANCE";
diff --git a/oap-server/server-starter/pom.xml 
b/oap-server/server-starter/pom.xml
index 89a8036..2f7fd2d 100644
--- a/oap-server/server-starter/pom.xml
+++ b/oap-server/server-starter/pom.xml
@@ -35,19 +35,13 @@
             <version>${project.version}</version>
         </dependency>
 
-        <!-- generated analysis core -->
+        <!-- OAL runtime core -->
         <dependency>
             <groupId>org.apache.skywalking</groupId>
-            <artifactId>generated-analysis</artifactId>
+            <artifactId>oal-rt</artifactId>
             <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.skywalking</groupId>
-                    <artifactId>generate-tool</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
-        <!-- generated analysis core -->
+        <!-- OAL runtime core -->
 
         <!-- cluster module -->
         <dependency>
@@ -230,6 +224,7 @@
                         <exclude>component-libraries.yml</exclude>
                         <exclude>datasource-settings.properties</exclude>
                         <exclude>endpoint_naming_rules.properties</exclude>
+                        <exclude>official_analysis.oal</exclude>
                     </excludes>
                 </configuration>
             </plugin>
diff --git a/oap-server/server-starter/src/main/assembly/assembly.xml 
b/oap-server/server-starter/src/main/assembly/assembly.xml
index 9f73bfe..ed116d6 100644
--- a/oap-server/server-starter/src/main/assembly/assembly.xml
+++ b/oap-server/server-starter/src/main/assembly/assembly.xml
@@ -46,6 +46,7 @@
             <directory>src/main/resources</directory>
             <includes>
                 <include>component-libraries.yml</include>
+                <include>official_analysis.oal</include>
             </includes>
             <outputDirectory>/config</outputDirectory>
         </fileSet>
diff --git 
a/oap-server/generated-analysis/src/main/resources/official_analysis.oal 
b/oap-server/server-starter/src/main/resources/official_analysis.oal
similarity index 100%
rename from 
oap-server/generated-analysis/src/main/resources/official_analysis.oal
rename to oap-server/server-starter/src/main/resources/official_analysis.oal
diff --git 
a/oap-server/generated-analysis/src/main/resources/generator-scope-meta.yml 
b/oap-server/server-starter/src/main/resources/scope-meta.yml
similarity index 100%
rename from 
oap-server/generated-analysis/src/main/resources/generator-scope-meta.yml
rename to oap-server/server-starter/src/main/resources/scope-meta.yml
diff --git a/pom.xml b/pom.xml
index 811866e..1dbed67 100644
--- a/pom.xml
+++ b/pom.xml
@@ -510,7 +510,7 @@
                         
org/apache/skywalking/apm/network/servicemesh/**/*.java,
                         org/apache/skywalking/apm/network/language/**/*.java,
                         
org/apache/skywalking/oap/server/core/remote/grpc/proto/*.java,
-                        org/apache/skywalking/oal/tool/grammar/*.java,
+                        org/apache/skywalking/oal/rt/grammar/*.java,
                         org/apache/skywalking/oap/server/exporter/grpc/*.java,
                         
org/apache/skywalking/oap/server/configuration/service/*.java
                     </excludes>

Reply via email to