diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/v2/generator/OALClassGeneratorV2.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/v2/generator/OALClassGeneratorV2.java index 3313ca8288c1..b50a142462bb 100644 --- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/v2/generator/OALClassGeneratorV2.java +++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/v2/generator/OALClassGeneratorV2.java @@ -89,7 +89,16 @@ public class OALClassGeneratorV2 { "deserialize", "getMeta", "toHour", - "toDay" + "toDay", + // Emits the source's @ScopeDefaultColumn fields (the codegen- + // materialised dynamic @Column fields on the generated subclass) + // onto the dsl-debugging `output` sample. For a Service-style + // scope that is exactly entityId + attr0..attr5 — nothing about + // the metric's own value, which is delegated upward via + // super.appendDebugFields(obj) to the family parent's override + // (CPMMetrics emits total + value, SumMetrics emits value, + // LongAvgMetrics emits summation + count + value, …). + "appendDebugFields" }; private static final String[] METRICS_BUILDER_CLASS_METHODS = { "entity2Storage", diff --git a/oap-server/oal-rt/src/main/resources/code-templates-v2/metrics/appendDebugFields.ftl b/oap-server/oal-rt/src/main/resources/code-templates-v2/metrics/appendDebugFields.ftl new file mode 100644 index 000000000000..0af18f7a905b --- /dev/null +++ b/oap-server/oal-rt/src/main/resources/code-templates-v2/metrics/appendDebugFields.ftl @@ -0,0 +1,18 @@ +protected void appendDebugFields(com.google.gson.JsonObject obj) { +super.appendDebugFields(obj); +<#list fieldsFromSource as field> + <#if field.typeName == "long"> + obj.addProperty("${field.columnName}", java.lang.Long.valueOf(${field.fieldGetter}())); + <#elseif field.typeName == "int"> + obj.addProperty("${field.columnName}", java.lang.Integer.valueOf(${field.fieldGetter}())); + <#elseif field.typeName == "double"> + obj.addProperty("${field.columnName}", java.lang.Double.valueOf(${field.fieldGetter}())); + <#elseif field.typeName == "float"> + obj.addProperty("${field.columnName}", java.lang.Float.valueOf(${field.fieldGetter}())); + <#elseif field.typeName == "boolean"> + obj.addProperty("${field.columnName}", java.lang.Boolean.valueOf(${field.fieldGetter}())); + <#else> + obj.addProperty("${field.columnName}", ${field.fieldGetter}() == null ? null : ${field.fieldGetter}().toString()); + + +}