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 cc37ea86b..1ded62e98 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 0b9e091d7..a08d50e57 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 7261cc350..e02e7e580 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 1ce53d5dd..1fa32f7ce 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 7e2f89f15..391c71594 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 04e5bb5f0..43d0b1c19 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()); } }