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 3532ed6a1ee7efe86414510700812367e8dca299
Author: Wu Sheng <[email protected]>
AuthorDate: Thu Jul 18 09:40:03 2019 +0800

    Clear up
---
 .../org/apache/skywalking/oal/rt/OALRuntime.java   |  13 +-
 .../skywalking/oal/rt/output/FileGenerator.java    | 115 --------
 .../skywalking/oal/rt/output/WriteWrapper.java     |  26 --
 .../code-templates/DisableSourceDefinition.ftl     |  33 ---
 .../code-templates/DispatcherTemplate.ftl          |  73 -----
 .../code-templates/MetricsImplementor.ftl          | 293 ---------------------
 .../oal/rt/output/FileGeneratorTest.java           | 120 ---------
 .../skywalking/oal/rt/parser/DeepAnalysisTest.java |  12 +-
 .../skywalking/oal/rt/parser/ScriptParserTest.java |   4 +-
 .../core/analysis/metrics/PercentMetrics.java      |   8 +-
 oap-server/server-starter/pom.xml                  |   1 +
 .../server-starter/src/main/assembly/assembly.xml  |   2 +
 12 files changed, 18 insertions(+), 682 deletions(-)

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
index 3d30baa..6f7b0c3 100644
--- 
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
@@ -27,7 +27,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.StringWriter;
-import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -45,7 +44,6 @@ import javassist.bytecode.ClassFile;
 import javassist.bytecode.ConstPool;
 import javassist.bytecode.SignatureAttribute;
 import javassist.bytecode.annotation.Annotation;
-import javassist.bytecode.annotation.ArrayMemberValue;
 import javassist.bytecode.annotation.ClassMemberValue;
 import javassist.bytecode.annotation.IntegerMemberValue;
 import javassist.bytecode.annotation.StringMemberValue;
@@ -54,19 +52,15 @@ import org.apache.skywalking.oal.rt.meta.MetaReader;
 import org.apache.skywalking.oal.rt.meta.MetaSettings;
 import org.apache.skywalking.oal.rt.output.AllDispatcherContext;
 import org.apache.skywalking.oal.rt.output.DispatcherContext;
-import org.apache.skywalking.oal.rt.output.FileGenerator;
 import org.apache.skywalking.oal.rt.parser.AnalysisResult;
-import org.apache.skywalking.oal.rt.parser.DisableCollection;
 import org.apache.skywalking.oal.rt.parser.MetricsHolder;
 import org.apache.skywalking.oal.rt.parser.OALScripts;
 import org.apache.skywalking.oal.rt.parser.ScriptParser;
 import org.apache.skywalking.oal.rt.parser.SourceColumn;
 import org.apache.skywalking.oal.rt.parser.SourceColumnsFactory;
 import org.apache.skywalking.oap.server.core.WorkPath;
-import org.apache.skywalking.oap.server.core.analysis.Disable;
 import org.apache.skywalking.oap.server.core.analysis.DisableRegister;
 import 
org.apache.skywalking.oap.server.core.analysis.DispatcherDetectorListener;
-import org.apache.skywalking.oap.server.core.analysis.MultipleDisable;
 import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
 import org.apache.skywalking.oap.server.core.analysis.Stream;
 import org.apache.skywalking.oap.server.core.analysis.StreamAnnotationListener;
@@ -88,12 +82,11 @@ import org.slf4j.LoggerFactory;
 public class OALRuntime implements OALEngine {
     private static final Logger logger = 
LoggerFactory.getLogger(OALRuntime.class);
 
-    private static final Charset CLASS_FILE_CHARSET = Charset.forName("UTF-8");
+    private static final String CLASS_FILE_CHARSET = "UTF-8";
     private static final String METRICS_FUNCTION_PACKAGE = 
"org.apache.skywalking.oap.server.core.analysis.metrics.";
     private static final String DYNAMIC_METRICS_CLASS_PACKAGE = 
"org.apache.skywalking.oal.rt.metrics.";
     private static final String DYNAMIC_METRICS_BUILDER_CLASS_PACKAGE = 
"org.apache.skywalking.oal.rt.metrics.builder.";
     private static final String DYNAMIC_DISPATCHER_CLASS_PACKAGE = 
"org.apache.skywalking.oal.rt.dispatcher.";
-    private static final String DYNAMIC_DISABLE_CLASS_NAME = 
"org.apache.skywalking.oal.rt.DisableSourceDefinition";
     private static final String WITH_METADATA_INTERFACE = 
"org.apache.skywalking.oap.server.core.analysis.metrics.WithMetadata";
     private static final String STORAGE_BUILDER_INTERFACE = 
"org.apache.skywalking.oap.server.core.storage.StorageBuilder";
     private static final String DISPATCHER_INTERFACE = 
"org.apache.skywalking.oap.server.core.analysis.SourceDispatcher";
@@ -115,8 +108,8 @@ public class OALRuntime implements OALEngine {
     public OALRuntime() {
         classPool = ClassPool.getDefault();
         configuration = new Configuration(new Version("2.3.28"));
-        configuration.setEncoding(Locale.ENGLISH, "UTF-8");
-        
configuration.setClassLoaderForTemplateLoading(FileGenerator.class.getClassLoader(),
 "/code-templates");
+        configuration.setEncoding(Locale.ENGLISH, CLASS_FILE_CHARSET);
+        
configuration.setClassLoaderForTemplateLoading(OALRuntime.class.getClassLoader(),
 "/code-templates");
         allDispatcherContext = new AllDispatcherContext();
         metricsClasses = new ArrayList<>();
         dispatcherClasses = new ArrayList<>();
diff --git 
a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/FileGenerator.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/FileGenerator.java
deleted file mode 100644
index 671bc46..0000000
--- 
a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/FileGenerator.java
+++ /dev/null
@@ -1,115 +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.rt.output;
-
-import freemarker.template.*;
-import java.io.*;
-import java.util.*;
-import org.apache.skywalking.oal.rt.parser.*;
-
-public class FileGenerator {
-    private List<AnalysisResult> results;
-    private DisableCollection collection;
-    private String outputPath;
-    private Configuration configuration;
-    private AllDispatcherContext allDispatcherContext;
-
-    public FileGenerator(OALScripts oalScripts, String outputPath) {
-        this.results = oalScripts.getMetricsStmts();
-        this.collection = oalScripts.getDisableCollection();
-        this.outputPath = outputPath;
-        configuration = new Configuration(new Version("2.3.28"));
-        configuration.setEncoding(Locale.ENGLISH, "UTF-8");
-        
configuration.setClassLoaderForTemplateLoading(FileGenerator.class.getClassLoader(),
 "/code-templates");
-        allDispatcherContext = new AllDispatcherContext();
-        buildDispatcherContext();
-    }
-
-    public void generate() throws IOException, TemplateException {
-        for (AnalysisResult result : results) {
-            generate(result, "Metrics.java", writer -> 
generateMetricsImplementor(result, writer));
-
-            String scopeName = result.getSourceName();
-            File file = new File(outputPath, "generated/" + 
scopeName.toLowerCase() + "/" + scopeName + "Dispatcher.java");
-            createFile(file);
-            generateDispatcher(result, new FileWriter(file));
-        }
-        generateDisable();
-    }
-
-    private void generate(AnalysisResult result, String fileSuffix,
-        WriteWrapper writeWrapper) throws IOException, TemplateException {
-        File file = new File(outputPath, buildSubFolderName(result, 
fileSuffix));
-        createFile(file);
-        FileWriter fileWriter = new FileWriter(file);
-        try {
-            writeWrapper.execute(fileWriter);
-        } finally {
-            fileWriter.close();
-        }
-    }
-
-    private void createFile(File file) throws IOException {
-        if (!file.exists()) {
-            if (!file.getParentFile().exists()) {
-                file.getParentFile().mkdirs();
-            }
-            file.createNewFile();
-        }
-    }
-
-    private String buildSubFolderName(AnalysisResult result, String suffix) {
-        return "generated/"
-            + result.getSourceName().toLowerCase() + "/"
-            + result.getMetricsName() + suffix;
-    }
-
-    public void generateMetricsImplementor(AnalysisResult result, Writer 
output) throws IOException, TemplateException {
-        configuration.getTemplate("MetricsImplementor.ftl").process(result, 
output);
-    }
-
-    void generateDispatcher(AnalysisResult result, Writer output) throws 
IOException, TemplateException {
-        String scopeName = result.getSourceName();
-        DispatcherContext context = 
allDispatcherContext.getAllContext().get(scopeName);
-        if (context != null) {
-            
configuration.getTemplate("DispatcherTemplate.ftl").process(context, output);
-        }
-    }
-
-    private void buildDispatcherContext() {
-        for (AnalysisResult result : results) {
-            String sourceName = result.getSourceName();
-
-            DispatcherContext context = 
allDispatcherContext.getAllContext().get(sourceName);
-            if (context == null) {
-                context = new DispatcherContext();
-                context.setSource(sourceName);
-                context.setPackageName(sourceName.toLowerCase());
-                allDispatcherContext.getAllContext().put(sourceName, context);
-            }
-            context.getMetrics().add(result);
-        }
-    }
-
-    private void generateDisable() throws IOException, TemplateException {
-        File file = new File(outputPath, 
"generated/DisableSourceDefinition.java");
-        createFile(file);
-        
configuration.getTemplate("DisableSourceDefinition.ftl").process(collection, 
new FileWriter(file));
-    }
-}
diff --git 
a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/WriteWrapper.java
 
b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/WriteWrapper.java
deleted file mode 100644
index a98a271..0000000
--- 
a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/output/WriteWrapper.java
+++ /dev/null
@@ -1,26 +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.rt.output;
-
-import freemarker.template.TemplateException;
-import java.io.*;
-
-public interface WriteWrapper {
-    void execute(FileWriter fileWriter) throws IOException, TemplateException;
-}
diff --git 
a/oap-server/oal-rt/src/main/resources/code-templates/DisableSourceDefinition.ftl
 
b/oap-server/oal-rt/src/main/resources/code-templates/DisableSourceDefinition.ftl
deleted file mode 100644
index b1c9be5..0000000
--- 
a/oap-server/oal-rt/src/main/resources/code-templates/DisableSourceDefinition.ftl
+++ /dev/null
@@ -1,33 +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.oap.server.core.analysis.generated;
-<#if (allDisableSources?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.Disable;
-</#if>
-
-/**
-* This class is auto generated. Please don't change this class manually.
-*
-* @author Observability Analysis Language code generator
-*/
-<#list allDisableSources as disableSource>
-@Disable("${disableSource}")
-</#list>
-public class DisableSourceDefinition {
-}
\ No newline at end of file
diff --git 
a/oap-server/oal-rt/src/main/resources/code-templates/DispatcherTemplate.ftl 
b/oap-server/oal-rt/src/main/resources/code-templates/DispatcherTemplate.ftl
deleted file mode 100644
index ea6b319..0000000
--- a/oap-server/oal-rt/src/main/resources/code-templates/DispatcherTemplate.ftl
+++ /dev/null
@@ -1,73 +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.oap.server.core.analysis.generated.${packageName};
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (metrics?size>0)>
-import 
org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
-    <#list metrics as metrics>
-        <#if metrics.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.metrics.expression.*;
-            <#break>
-        </#if>
-    </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ${source}Dispatcher implements SourceDispatcher<${source}> {
-
-    @Override public void dispatch(${source} source) {
-<#list metrics as metrics>
-        do${metrics.metricsName}(source);
-</#list>
-    }
-
-<#list metrics as metrics>
-    private void do${metrics.metricsName}(${source} source) {
-        ${metrics.metricsName}Metrics metrics = new 
${metrics.metricsName}Metrics();
-
-    <#if metrics.filterExpressions??>
-        <#list metrics.filterExpressions as filterExpression>
-            <#if filterExpression.expressionObject == "GreaterMatch" || 
filterExpression.expressionObject == "LessMatch" || 
filterExpression.expressionObject == "GreaterEqualMatch" || 
filterExpression.expressionObject == "LessEqualMatch">
-        if (!new 
${filterExpression.expressionObject}().match(${filterExpression.left}, 
${filterExpression.right})) {
-            return;
-        }
-            <#else>
-        if (!new 
${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match())
 {
-            return;
-        }
-            </#if>
-        </#list>
-    </#if>
-
-        metrics.setTimeBucket(source.getTimeBucket());
-    <#list metrics.fieldsFromSource as field>
-        metrics.${field.fieldSetter}(source.${field.fieldGetter}());
-    </#list>
-        metrics.${metrics.entryMethod.methodName}(<#list 
metrics.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, 
</#if></#list>);
-
-        MetricsStreamProcessor.getInstance().in(metrics);
-    }
-</#list>
-}
diff --git 
a/oap-server/oal-rt/src/main/resources/code-templates/MetricsImplementor.ftl 
b/oap-server/oal-rt/src/main/resources/code-templates/MetricsImplementor.ftl
deleted file mode 100644
index bd94528..0000000
--- a/oap-server/oal-rt/src/main/resources/code-templates/MetricsImplementor.ftl
+++ /dev/null
@@ -1,293 +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.oap.server.core.analysis.generated.${packageName};
-
-import java.util.*;
-<#if (fieldsFromSource?size>0) >
-import lombok.*;
-</#if>
-<#list fieldsFromSource as sourceField>
-    <#if sourceField.isID()>
-import org.apache.skywalking.oap.server.core.Const;
-        <#break>
-    </#if>
-</#list>
-import org.apache.skywalking.oap.server.core.analysis.Stream;
-import org.apache.skywalking.oap.server.core.analysis.metrics.*;
-import 
org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
-import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
-import org.apache.skywalking.oap.server.core.storage.annotation.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-@Stream(name = "${tableName}", scopeId = ${sourceScopeId}, builder = 
${metricsName}Metrics.Builder.class, processor = MetricsStreamProcessor.class)
-public class ${metricsName}Metrics extends ${metricsClassName} implements 
WithMetadata {
-
-<#list fieldsFromSource as sourceField>
-    @Setter @Getter @Column(columnName = "${sourceField.columnName}") <#if 
sourceField.isID()>@IDColumn</#if> private ${sourceField.typeName} 
${sourceField.fieldName};
-</#list>
-
-    @Override public String id() {
-        String splitJointId = String.valueOf(getTimeBucket());
-<#list fieldsFromSource as sourceField>
-    <#if sourceField.isID()>
-        <#if sourceField.getTypeName() == "java.lang.String">
-        splitJointId += Const.ID_SPLIT + ${sourceField.fieldName};
-        <#else>
-        splitJointId += Const.ID_SPLIT + 
String.valueOf(${sourceField.fieldName});
-        </#if>
-    </#if>
-</#list>
-        return splitJointId;
-    }
-
-    @Override public int hashCode() {
-        int result = 17;
-<#list fieldsFromSource as sourceField>
-    <#if sourceField.isID()>
-        <#if sourceField.getTypeName() == "java.lang.String">
-        result = 31 * result + ${sourceField.fieldName}.hashCode();
-        <#else>
-        result += Const.ID_SPLIT + ${sourceField.fieldName};
-        </#if>
-    </#if>
-</#list>
-        result = 31 * result + (int)getTimeBucket();
-        return result;
-    }
-
-    @Override public int remoteHashCode() {
-        int result = 17;
-<#list fieldsFromSource as sourceField>
-    <#if sourceField.isID()>
-        <#if sourceField.getTypeName() == "java.lang.String">
-        result = 31 * result + ${sourceField.fieldName}.hashCode();
-        <#else>
-        result += Const.ID_SPLIT + ${sourceField.fieldName};
-        </#if>
-    </#if>
-</#list>
-        return result;
-    }
-
-    @Override public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-
-        ${metricsName}Metrics metrics = (${metricsName}Metrics)obj;
-<#list fieldsFromSource as sourceField>
-    <#if sourceField.isID()>
-        <#if sourceField.getTypeName() == "java.lang.String">
-        if (!${sourceField.fieldName}.equals(metrics.${sourceField.fieldName}))
-        <#else>
-        if (${sourceField.fieldName} != metrics.${sourceField.fieldName})
-        </#if>
-            return false;
-    </#if>
-</#list>
-
-        if (getTimeBucket() != metrics.getTimeBucket())
-            return false;
-
-        return true;
-    }
-
-    @Override public RemoteData.Builder serialize() {
-        RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
-<#list serializeFields.stringFields as field>
-        remoteBuilder.addDataStrings(${field.getter}());
-</#list>
-
-<#list serializeFields.longFields as field>
-        remoteBuilder.addDataLongs(${field.getter}());
-</#list>
-
-<#list serializeFields.doubleFields as field>
-        remoteBuilder.addDataDoubles(${field.getter}());
-</#list>
-
-<#list serializeFields.intFields as field>
-        remoteBuilder.addDataIntegers(${field.getter}());
-</#list>
-<#list serializeFields.intLongValuePairListFields as field>
-        ${field.getter}().forEach(element -> 
remoteBuilder.addDataIntLongPairList(element.serialize()));
-</#list>
-
-        return remoteBuilder;
-    }
-
-    @Override public void deserialize(RemoteData remoteData) {
-<#list serializeFields.stringFields as field>
-        ${field.setter}(remoteData.getDataStrings(${field?index}));
-</#list>
-
-<#list serializeFields.longFields as field>
-        ${field.setter}(remoteData.getDataLongs(${field?index}));
-</#list>
-
-<#list serializeFields.doubleFields as field>
-        ${field.setter}(remoteData.getDataDoubles(${field?index}));
-</#list>
-
-<#list serializeFields.intFields as field>
-        ${field.setter}(remoteData.getDataIntegers(${field?index}));
-</#list>
-
-<#list serializeFields.intLongValuePairListFields as field>
-        setDetailGroup(new IntKeyLongValueArray(30));
-        remoteData.getDataIntLongPairListList().forEach(element -> {
-            getDetailGroup().add(new IntKeyLongValue(element.getKey(), 
element.getValue()));
-        });
-</#list>
-
-    }
-
-    @Override public MetricsMetaInfo getMeta() {
-        return new MetricsMetaInfo("${varName}", ${sourceScopeId}<#if 
(fieldsFromSource?size>0) ><#list fieldsFromSource as field><#if field.isID()>, 
${field.fieldName}</#if></#list></#if>);
-    }
-
-    @Override
-    public Metrics toHour() {
-        ${metricsName}Metrics metrics = new ${metricsName}Metrics();
-<#list fieldsFromSource as field>
-    <#if field.columnName == "time_bucket">
-        metrics.setTimeBucket(toTimeBucketInHour());
-    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
-        metrics.${field.fieldSetter}(this.${field.fieldGetter}());
-    <#else>
-        ${field.typeName} newValue = new ${field.typeName}();
-        newValue.copyFrom(this.${field.fieldGetter}());
-        metrics.${field.fieldSetter}(newValue);
-    </#if>
-</#list>
-<#list persistentFields as field>
-    <#if field.columnName == "time_bucket">
-        metrics.setTimeBucket(toTimeBucketInHour());
-    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
-        metrics.${field.fieldSetter}(this.${field.fieldGetter}());
-    <#else>
-        ${field.typeName} newValue = new ${field.typeName}();
-        newValue.copyFrom(this.${field.fieldGetter}());
-        metrics.${field.fieldSetter}(newValue);
-    </#if>
-</#list>
-        return metrics;
-    }
-
-    @Override
-    public Metrics toDay() {
-        ${metricsName}Metrics metrics = new ${metricsName}Metrics();
-<#list fieldsFromSource as field>
-    <#if field.columnName == "time_bucket">
-        metrics.setTimeBucket(toTimeBucketInDay());
-    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
-        metrics.${field.fieldSetter}(this.${field.fieldGetter}());
-    <#else>
-        ${field.typeName} newValue = new ${field.typeName}();
-        newValue.copyFrom(this.${field.fieldGetter}());
-        metrics.${field.fieldSetter}(newValue);
-    </#if>
-</#list>
-<#list persistentFields as field>
-    <#if field.columnName == "time_bucket">
-        metrics.setTimeBucket(toTimeBucketInDay());
-    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
-        metrics.${field.fieldSetter}(this.${field.fieldGetter}());
-    <#else>
-        ${field.typeName} newValue = new ${field.typeName}();
-        newValue.copyFrom(this.${field.fieldGetter}());
-        metrics.${field.fieldSetter}(newValue);
-    </#if>
-</#list>
-        return metrics;
-    }
-
-    @Override
-    public Metrics toMonth() {
-        ${metricsName}Metrics metrics = new ${metricsName}Metrics();
-<#list fieldsFromSource as field>
-    <#if field.columnName == "time_bucket">
-        metrics.setTimeBucket(toTimeBucketInMonth());
-    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
-        metrics.${field.fieldSetter}(this.${field.fieldGetter}());
-    <#else>
-        ${field.typeName} newValue = new ${field.typeName}();
-        newValue.copyFrom(this.${field.fieldGetter}());
-        metrics.${field.fieldSetter}(newValue);
-    </#if>
-</#list>
-<#list persistentFields as field>
-    <#if field.columnName == "time_bucket">
-        metrics.setTimeBucket(toTimeBucketInMonth());
-    <#elseif field.typeName == "java.lang.String" || field.typeName == "long" 
|| field.typeName == "int" || field.typeName == "double" || field.typeName == 
"float">
-        metrics.${field.fieldSetter}(this.${field.fieldGetter}());
-    <#else>
-        ${field.typeName} newValue = new ${field.typeName}();
-        newValue.copyFrom(this.${field.fieldGetter}());
-        metrics.${field.fieldSetter}(newValue);
-    </#if>
-</#list>
-        return metrics;
-    }
-
-    public static class Builder implements 
StorageBuilder<${metricsName}Metrics> {
-
-        @Override public Map<String, Object> data2Map(${metricsName}Metrics 
storageData) {
-            Map<String, Object> map = new HashMap<>();
-    <#list fieldsFromSource as field>
-            map.put("${field.columnName}", storageData.${field.fieldGetter}());
-    </#list>
-    <#list persistentFields as field>
-            map.put("${field.columnName}", storageData.${field.fieldGetter}());
-    </#list>
-            return map;
-        }
-
-        @Override public ${metricsName}Metrics map2Data(Map<String, Object> 
dbMap) {
-            ${metricsName}Metrics metrics = new ${metricsName}Metrics();
-    <#list fieldsFromSource as field>
-        <#if field.typeName == "long" || field.typeName == "int" || 
field.typeName == "double" || field.typeName == "float">
-            
metrics.${field.fieldSetter}(((Number)dbMap.get("${field.columnName}")).${field.typeName}Value());
-        <#elseif field.typeName == "java.lang.String">
-            
metrics.${field.fieldSetter}((String)dbMap.get("${field.columnName}"));
-        <#else>
-            metrics.${field.fieldSetter}(new 
${field.typeName}((String)dbMap.get("${field.columnName}")));
-        </#if>
-    </#list>
-    <#list persistentFields as field>
-        <#if field.typeName == "long" || field.typeName == "int" || 
field.typeName == "double" || field.typeName == "float">
-            
metrics.${field.fieldSetter}(((Number)dbMap.get("${field.columnName}")).${field.typeName}Value());
-        <#elseif field.typeName == "java.lang.String">
-            
metrics.${field.fieldSetter}((String)dbMap.get("${field.columnName}"));
-        <#else>
-            metrics.${field.fieldSetter}(new 
${field.typeName}((String)dbMap.get("${field.columnName}")));
-        </#if>
-    </#list>
-            return metrics;
-        }
-    }
-}
diff --git 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/output/FileGeneratorTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/output/FileGeneratorTest.java
deleted file mode 100644
index 2acd6b5..0000000
--- 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/output/FileGeneratorTest.java
+++ /dev/null
@@ -1,120 +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.rt.output;
-
-import freemarker.template.TemplateException;
-import java.io.*;
-import java.util.LinkedList;
-import org.apache.skywalking.oal.rt.meta.*;
-import org.apache.skywalking.oal.rt.parser.*;
-import org.junit.*;
-
-public class FileGeneratorTest {
-    @BeforeClass
-    public static void init() {
-        MetaReader reader = new MetaReader();
-        InputStream stream = 
MetaReaderTest.class.getResourceAsStream("/scope-meta.yml");
-        MetaSettings metaSettings = reader.read(stream);
-        SourceColumnsFactory.setSettings(metaSettings);
-    }
-
-    private AnalysisResult buildResult() {
-        AnalysisResult result = new AnalysisResult();
-        result.setVarName("generate_metrics");
-        result.setSourceName("Service");
-        result.setSourceScopeId(1);
-        result.setPackageName("service.serviceavg");
-        result.setTableName("service_avg");
-        result.setSourceAttribute("latency");
-        result.setMetricsName("ServiceAvg");
-        result.setAggregationFunctionName("avg");
-        result.setMetricsClassName("LongAvgMetrics");
-
-        Expression equalExpression = new Expression();
-        equalExpression.setExpressionObject("EqualMatch");
-        equalExpression.setLeft("source.getName()");
-        equalExpression.setRight("\"/service/prod/save\"");
-        result.addFilterExpressions(equalExpression);
-
-        Expression greaterExpression = new Expression();
-        greaterExpression.setExpressionObject("GreaterMatch");
-        greaterExpression.setLeft("source.getLatency()");
-        greaterExpression.setRight("1000");
-        result.addFilterExpressions(greaterExpression);
-
-        EntryMethod method = new EntryMethod();
-        method.setMethodName("combine");
-        method.setArgsExpressions(new LinkedList<>());
-        method.getArgsExpressions().add("source.getLatency()");
-        method.getArgsExpressions().add("1");
-        result.setEntryMethod(method);
-        result.addPersistentField("summation", "summation", long.class);
-        result.addPersistentField("count", "count", int.class);
-        result.addPersistentField("value", "value", long.class);
-        result.addPersistentField("timeBucket", "time_bucket", long.class);
-        result.addPersistentField("stringField", "string_field", String.class);
-        result.setFieldsFromSource(SourceColumnsFactory.getColumns("Service"));
-        result.generateSerializeFields();
-
-        return result;
-    }
-
-    @Test
-    public void testGenerateMetricsImplementor() throws IOException, 
TemplateException {
-        AnalysisResult result = buildResult();
-
-        OALScripts oalScripts = new OALScripts();
-        oalScripts.getMetricsStmts().add(result);
-
-        FileGenerator fileGenerator = new FileGenerator(oalScripts, ".");
-        StringWriter writer = new StringWriter();
-        fileGenerator.generateMetricsImplementor(result, writer);
-        
Assert.assertEquals(readExpectedFile("MetricsImplementorExpected.java"), 
writer.toString());
-
-//        fileGenerator.generateMetricsImplementor(result, new 
OutputStreamWriter(System.out));
-    }
-
-    @Test
-    public void testServiceDispatcher() throws IOException, TemplateException {
-        AnalysisResult result = buildResult();
-
-        OALScripts oalScripts = new OALScripts();
-        oalScripts.getMetricsStmts().add(result);
-
-        FileGenerator fileGenerator = new FileGenerator(oalScripts, ".");
-        StringWriter writer = new StringWriter();
-        fileGenerator.generateDispatcher(result, writer);
-        
Assert.assertEquals(readExpectedFile("ServiceDispatcherExpected.java"), 
writer.toString());
-
-//        fileGenerator.generateDispatcher(result, new 
OutputStreamWriter(System.out));
-    }
-
-    private String readExpectedFile(String filename) throws IOException {
-        BufferedReader reader = new BufferedReader(new 
InputStreamReader(FileGenerator.class.getResourceAsStream("/expectedFiles/" + 
filename)));
-
-        StringBuilder fileContent = new StringBuilder();
-        String sCurrentLine;
-
-        while ((sCurrentLine = reader.readLine()) != null) {
-            fileContent.append(sCurrentLine).append("\n");
-        }
-
-        return fileContent.toString();
-    }
-}
diff --git 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
index 7701c13..18b035a 100644
--- 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
@@ -47,8 +47,8 @@ public class DeepAnalysisTest {
 
         EntryMethod method = result.getEntryMethod();
         Assert.assertEquals("combine", method.getMethodName());
-        Assert.assertEquals("source.getLatency()", 
method.getArgsExpressions().get(0));
-        Assert.assertEquals("1", method.getArgsExpressions().get(1));
+        Assert.assertEquals("(long)(source.getLatency())", 
method.getArgsExpressions().get(0));
+        Assert.assertEquals("(long)(1)", method.getArgsExpressions().get(1));
 
         List<SourceColumn> source = result.getFieldsFromSource();
         Assert.assertEquals(1, source.size());
@@ -71,8 +71,8 @@ public class DeepAnalysisTest {
 
         EntryMethod method = result.getEntryMethod();
         Assert.assertEquals("combine", method.getMethodName());
-        Assert.assertEquals("source.getLatency()", 
method.getArgsExpressions().get(0));
-        Assert.assertEquals("1", method.getArgsExpressions().get(1));
+        Assert.assertEquals("(long)(source.getLatency())", 
method.getArgsExpressions().get(0));
+        Assert.assertEquals("(long)(1)", method.getArgsExpressions().get(1));
 
         List<SourceColumn> source = result.getFieldsFromSource();
         Assert.assertEquals(3, source.size());
@@ -100,8 +100,8 @@ public class DeepAnalysisTest {
 
         EntryMethod method = result.getEntryMethod();
         Assert.assertEquals("combine", method.getMethodName());
-        Assert.assertEquals("source.getLatency()", 
method.getArgsExpressions().get(0));
-        Assert.assertEquals("1", method.getArgsExpressions().get(1));
+        Assert.assertEquals("(long)(source.getLatency())", 
method.getArgsExpressions().get(0));
+        Assert.assertEquals("(long)(1)", method.getArgsExpressions().get(1));
 
         List<SourceColumn> source = result.getFieldsFromSource();
         Assert.assertEquals(3, source.size());
diff --git 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
index 7748d4f..35464db 100644
--- 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/ScriptParserTest.java
@@ -81,9 +81,7 @@ public class ScriptParserTest {
         Assert.assertEquals("percent", 
endpointPercent.getAggregationFunctionName());
         EntryMethod entryMethod = endpointPercent.getEntryMethod();
         List<Object> methodArgsExpressions = entryMethod.getArgsExpressions();
-        Assert.assertEquals(3, methodArgsExpressions.size());
-        Assert.assertEquals("source.isStatus()", methodArgsExpressions.get(1));
-        Assert.assertEquals("true", methodArgsExpressions.get(2));
+        Assert.assertEquals(1, methodArgsExpressions.size());
     }
 
     @Test
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java
index 1f8654f..e88539c 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java
@@ -18,9 +18,11 @@
 
 package org.apache.skywalking.oap.server.core.analysis.metrics;
 
-import lombok.*;
-import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.*;
-import 
org.apache.skywalking.oap.server.core.analysis.metrics.expression.EqualMatch;
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entrance;
+import 
org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Expression;
+import 
org.apache.skywalking.oap.server.core.analysis.metrics.annotation.MetricsFunction;
 import org.apache.skywalking.oap.server.core.query.sql.Function;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
 
diff --git a/oap-server/server-starter/pom.xml 
b/oap-server/server-starter/pom.xml
index 2f7fd2d..761c377 100644
--- a/oap-server/server-starter/pom.xml
+++ b/oap-server/server-starter/pom.xml
@@ -225,6 +225,7 @@
                         <exclude>datasource-settings.properties</exclude>
                         <exclude>endpoint_naming_rules.properties</exclude>
                         <exclude>official_analysis.oal</exclude>
+                        <exclude>scope-meta.yml</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 ed116d6..0758aa4 100644
--- a/oap-server/server-starter/src/main/assembly/assembly.xml
+++ b/oap-server/server-starter/src/main/assembly/assembly.xml
@@ -40,6 +40,8 @@
                 <include>alarm-settings.yml</include>
                 <include>alarm-settings-sample.yml</include>
                 <include>datasource-settings.properties</include>
+                <include>official_analysis.oal</include>
+                <include>scope-meta.yml</include>
             </includes>
         </fileSet>
         <fileSet>

Reply via email to