ensure id is converted to long when required
diff --git a/geronimo-opentracing-impl/src/main/java/org/apache/geronimo/microprofile/opentracing/microprofile/zipkin/ZipkinConverter.java b/geronimo-opentracing-impl/src/main/java/org/apache/geronimo/microprofile/opentracing/microprofile/zipkin/ZipkinConverter.java
index f7fc1b5..d2f62d0 100644
--- a/geronimo-opentracing-impl/src/main/java/org/apache/geronimo/microprofile/opentracing/microprofile/zipkin/ZipkinConverter.java
+++ b/geronimo-opentracing-impl/src/main/java/org/apache/geronimo/microprofile/opentracing/microprofile/zipkin/ZipkinConverter.java
@@ -63,9 +63,9 @@
private ZipkinSpan toZipkin(final SpanImpl span) {
final ZipkinSpan zipkin = new ZipkinSpan();
- zipkin.setParentId(Long.class.cast(span.getParentId()));
- zipkin.setTraceId(Long.class.cast(span.getTraceId()));
- zipkin.setId(Long.class.cast(span.getId()));
+ zipkin.setParentId(asLong(span.getParentId()));
+ zipkin.setTraceId(asLong(span.getTraceId()));
+ zipkin.setId(asLong(span.getId()));
zipkin.setName(span.getName());
zipkin.setKind(ofNullable(span.getKind()).map(s -> s.toUpperCase(ROOT)).orElse(null));
zipkin.setTimestamp(span.getTimestamp());
@@ -79,6 +79,16 @@
return zipkin;
}
+ private long asLong(final Object value) {
+ if (value == null) {
+ return 0;
+ }
+ if (Long.class.isInstance(value)) {
+ return Long.class.cast(value);
+ }
+ return Long.valueOf(String.valueOf(value));
+ }
+
private ZipkinSpan.ZipkinEndpoint toEndpoint(final SpanImpl span) {
final Map<String, Object> tags = span.getTags();
switch (String.valueOf(tags.get(Tags.SPAN_KIND.getKey()))) {