diff --git a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/AbstractTag.java b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/AbstractTag.java index cc37ea86be41d26f33ec0196e4132811489254af..1ded62e9824f8e1c58ebe637098d7f968eb1fff3 100644 --- a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/AbstractTag.java +++ b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/AbstractTag.java @@ -30,4 +30,6 @@ public abstract class AbstractTag { public String key() { return this.key; } + + public abstract T get(Span span); } diff --git a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/BooleanTag.java b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/BooleanTag.java index 0b9e091d7a614be83c73040a7edabb4a14cca2d8..a08d50e5736d341815dd183de76a66f35740e7e9 100644 --- a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/BooleanTag.java +++ b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/BooleanTag.java @@ -21,7 +21,20 @@ public class BooleanTag extends AbstractTag { span.setTag(key, tagValue); } - public boolean defaultValue() { - return this.defaultValue; + /** + * Get a tag value, type of {@link Boolean}. After akka-message/serialize, all tags values are type of {@link + * String}, convert to {@link Boolean}, if necessary. + * + * @param span + * @return tag value + */ + @Override + public Boolean get(Span span) { + Boolean tagValue = span.getBoolTag(super.key); + if (tagValue == null) { + return defaultValue; + } else { + return tagValue; + } } } diff --git a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/IntTag.java b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/IntTag.java index 7261cc3501d909d8c178aca84052f8e038bffcb7..e02e7e580403f70c936ded7acb4fe46a1f660ef5 100644 --- a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/IntTag.java +++ b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/IntTag.java @@ -16,4 +16,21 @@ public class IntTag extends AbstractTag { public void set(Span span, Integer tagValue) { span.setTag(super.key, tagValue); } + + /** + * Get a tag value, type of {@link Integer}. After akka-message/serialize, all tags values are type of {@link + * String}, convert to {@link Integer}, if necessary. + * + * @param span + * @return tag value + */ + @Override + public Integer get(Span span) { + Integer tagValue = span.getIntTag(super.key); + if (tagValue == null) { + return null; + } else { + return tagValue; + } + } } diff --git a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/StringTag.java b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/StringTag.java index 1ce53d5dd9dffa5acbcffae93138a54bd82ebf5f..1fa32f7ce67b873704f4a2408d8ec5812a949c17 100644 --- a/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/StringTag.java +++ b/apm-commons/apm-trace/src/main/java/org/skywalking/apm/trace/tag/StringTag.java @@ -17,4 +17,9 @@ public class StringTag extends AbstractTag { public void set(Span span, String tagValue) { span.setTag(key, tagValue); } + + @Override + public String get(Span span) { + return span.getStrTag(super.key); + } } diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/BooleanTagGetter.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/BooleanTagGetter.java index 7e2f89f15c782fc86f33a185b0b026dff9f98f89..391c7159445ba8685388258cf8ba27a0f18dda3d 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/BooleanTagGetter.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/BooleanTagGetter.java @@ -10,11 +10,6 @@ import org.skywalking.apm.trace.tag.BooleanTag; */ public class BooleanTagGetter { public static Boolean get(Span span, BooleanTag tag) { - Boolean tagValue = span.getBoolTag(tag.key()); - if (tagValue == null) { - return tag.defaultValue(); - } else { - return tagValue; - } + return span.getBoolTag(tag.key()); } } diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/IntTagGetter.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/IntTagGetter.java index 04e5bb5f0b6a3bceb1ec0cc3c44f8f73d9637069..43d0b1c19e870914a2c172eefd78f4066f2d685f 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/IntTagGetter.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tag/IntTagGetter.java @@ -10,11 +10,6 @@ import org.skywalking.apm.trace.tag.IntTag; */ public class IntTagGetter { public static Integer get(Span span, IntTag tag) { - Integer tagValue = span.getIntTag(tag.key()); - if (tagValue == null) { - return null; - } else { - return tagValue; - } + return span.getIntTag(tag.key()); } }