Fix ‘tags.get’ cause ClassCastException, because after akka-message/serialize, all tags values are type of String.class.

This commit is contained in:
wusheng 2017-02-22 18:58:03 +08:00
parent d6760d35eb
commit b00cadb9e6
3 changed files with 43 additions and 5 deletions

View File

@ -17,7 +17,20 @@ public class BooleanTag extends AbstractTag<Boolean>{
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());
}
}
}

View File

@ -17,7 +17,20 @@ public class IntTag extends AbstractTag<Integer> {
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());
}
}
}

View File

@ -17,7 +17,19 @@ public class ShortTag extends AbstractTag<Short> {
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());
}
}
}