diff --git a/skywalking-application-toolkit/pom.xml b/skywalking-application-toolkit/pom.xml index 19be7c443a52c1b8761936a12d45af6f67485613..2fb8b4a9dd9625a9e9a6b7aad8928ce71023b3f7 100644 --- a/skywalking-application-toolkit/pom.xml +++ b/skywalking-application-toolkit/pom.xml @@ -18,5 +18,6 @@ skywalking-toolkit-log4j-2.x skywalking-toolkit-logback-1.x skywalking-toolkit-trace-context + skywalking-toolkit-opentracing diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/pom.xml b/skywalking-application-toolkit/skywalking-toolkit-opentracing/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..be3ccede11bbf85e18edbf1b4a9c4a45cf4ee9c0 --- /dev/null +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/pom.xml @@ -0,0 +1,26 @@ + + + + skywalking-application-toolkit + com.a.eye + 2.1-2017 + + 4.0.0 + + skywalking-toolkit-opentracing + + + + io.opentracing + opentracing-api + 0.20.4 + + + io.opentracing + opentracing-noop + 0.20.4 + + + diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java new file mode 100644 index 0000000000000000000000000000000000000000..7d5c72639f5aa88b1b0bc84a5d32ee30249b0628 --- /dev/null +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java @@ -0,0 +1,104 @@ +package com.a.eye.skywalking.toolkit.opentracing; + +import io.opentracing.Span; +import io.opentracing.SpanContext; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by wusheng on 2016/12/20. + */ +public class SkyWalkingSpan implements Span, SpanContext { + private final Map baggageItems; + + SkyWalkingSpan(){ + baggageItems = new HashMap(); + } + + @Override + public SpanContext context() { + return this; + } + + @Override + public void finish() { + + } + + @Override + public void finish(long finishMicros) { + + } + + @Override + public void close() { + + } + + @Override + public Span setTag(String key, String value) { + return this; + } + + @Override + public Span setTag(String key, boolean value) { + return this; + } + + @Override + public Span setTag(String key, Number value) { + return this; + } + + @Override + public Span log(Map fields) { + return this; + } + + @Override + public Span log(long timestampMicroseconds, Map fields) { + return this; + } + + @Override + public Span log(String event) { + return this; + } + + @Override + public Span log(long timestampMicroseconds, String event) { + return this; + } + + @Override + public Span setBaggageItem(String key, String value) { + baggageItems.put(key, value); + return this; + } + + @Override + public String getBaggageItem(String key) { + return baggageItems.get(key); + } + + @Override + public Span setOperationName(String operationName) { + return this; + } + + @Override + public Span log(String eventName, Object payload) { + return this; + } + + @Override + public Span log(long timestampMicroseconds, String eventName, Object payload) { + return this; + } + + @Override + public Iterable> baggageItems() { + return baggageItems.entrySet(); + } +} diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..f69b1940120b72761a1e3b294e7f293714d2455e --- /dev/null +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java @@ -0,0 +1,72 @@ +package com.a.eye.skywalking.toolkit.opentracing; + +import io.opentracing.References; +import io.opentracing.Span; +import io.opentracing.SpanContext; +import io.opentracing.Tracer; + +import java.util.Map; + +/** + * All source code in SkyWalkingSpanBuilder acts like an NoopSpanBuilder. + * Actually, it is NOT. + * The whole logic will be added after toolkit-activation. + * + * Created by wusheng on 2016/12/20. + */ +public class SkyWalkingSpanBuilder implements Tracer.SpanBuilder { + private String operationName; + + SkyWalkingSpanBuilder(String operationName){ + this.operationName = operationName; + } + + @Override + public Tracer.SpanBuilder asChildOf(SpanContext spanContext) { + return null; + } + + @Override + public Tracer.SpanBuilder asChildOf(Span span) { + return null; + } + + @Override + public Tracer.SpanBuilder addReference(String referenceType, SpanContext referencedContext) { + if (referenceType.equals(References.CHILD_OF)) { + return asChildOf(referencedContext); + } else { + return this; + } + } + + @Override + public Tracer.SpanBuilder withTag(String key, String value) { + return this; + } + + @Override + public Tracer.SpanBuilder withTag(String key, boolean value) { + return this; + } + + @Override + public Tracer.SpanBuilder withTag(String key, Number value) { + return this; + } + + @Override + public Tracer.SpanBuilder withStartTimestamp(long microseconds) { + return this; + } + + @Override + public Span start() { + return new SkyWalkingSpan(); + } + + @Override + public Iterable> baggageItems() { + return null; + } +} diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java new file mode 100644 index 0000000000000000000000000000000000000000..8b1aa7968e863529d4dcbf4ec50fb6d1a2bcd2d1 --- /dev/null +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java @@ -0,0 +1,27 @@ +package com.a.eye.skywalking.toolkit.opentracing; + +import io.opentracing.SpanContext; +import io.opentracing.Tracer; +import io.opentracing.propagation.Format; + +/** + * Created by wusheng on 2016/12/20. + */ +public class SkyWalkingTracer implements Tracer{ + public static Tracer INSTANCE = new SkyWalkingTracer(); + + @Override + public SpanBuilder buildSpan(String operationName) { + return new SkyWalkingSpanBuilder(operationName); + } + + @Override + public void inject(SpanContext spanContext, Format format, C c) { + + } + + @Override + public SpanContext extract(Format format, C c) { + return null; + } +}