From b00cadb9e62f6caba9b83462b97cb95a85f5a93e Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 22 Feb 2017 18:58:03 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20=E2=80=98tags.get=E2=80=99=20cause=20Clas?= =?UTF-8?q?sCastException,=20because=20after=20akka-message/serialize,=20a?= =?UTF-8?q?ll=20tags=20values=20are=20type=20of=20String.class.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../a/eye/skywalking/trace/tag/BooleanTag.java | 17 +++++++++++++++-- .../com/a/eye/skywalking/trace/tag/IntTag.java | 17 +++++++++++++++-- .../a/eye/skywalking/trace/tag/ShortTag.java | 14 +++++++++++++- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/BooleanTag.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/BooleanTag.java index 6a6cd106b..25de949d9 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/BooleanTag.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/BooleanTag.java @@ -17,7 +17,20 @@ public class BooleanTag extends AbstractTag{ span.setTag(key, tagValue); } - @Override public Boolean get(Span span) { - return (Boolean)span.getTag(super.key); + /** + * 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) { + Object tagValue = span.getTag(super.key); + if(tagValue instanceof Boolean){ + return (Boolean)tagValue; + }else { + return Boolean.valueOf(tagValue.toString()); + } } } diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/IntTag.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/IntTag.java index 758374ada..2157ff993 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/IntTag.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/IntTag.java @@ -17,7 +17,20 @@ public class IntTag extends AbstractTag { span.setTag(super.key, tagValue); } - @Override public Integer get(Span span) { - return (Integer)span.getTag(super.key); + /** + * 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) { + Object tagValue = span.getTag(super.key); + if(tagValue instanceof Integer){ + return (Integer)tagValue; + }else { + return Integer.valueOf(tagValue.toString()); + } } } diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/ShortTag.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/ShortTag.java index ce81ea060..5d0116e03 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/ShortTag.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/tag/ShortTag.java @@ -17,7 +17,19 @@ public class ShortTag extends AbstractTag { span.setTag(super.key, tagValue); } + /** + * Get a tag value, type of {@link Short}. + * After akka-message/serialize, all tags values are type of {@link String}, convert to {@link Short}, if necessary. + * + * @param span + * @return tag value + */ @Override public Short get(Span span) { - return (Short)span.getTag(super.key); + Object tagValue = span.getTag(super.key); + if(tagValue instanceof Short){ + return (Short)tagValue; + }else { + return Short.valueOf(tagValue.toString()); + } } }