aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Song <songy23@users.noreply.github.com>2018-09-18 16:25:14 -0700
committerGitHub <noreply@github.com>2018-09-18 16:25:14 -0700
commit7da904c4e75d68eaf77ecaca59e82fa932251e0c (patch)
treefacb0f32924df0ad6d60a0d1cc54dc101c22efd7
parent0a3fb9761fbc0d31e06a60dcb650c9e9a8d5f5f3 (diff)
downloadopencensus-java-7da904c4e75d68eaf77ecaca59e82fa932251e0c.tar.gz
Common: Add an API Functions.returnToString(). (#1443)
* Common: Add an API Functions.returnToString(). * Fix comments and add tests.
-rw-r--r--CHANGELOG.md1
-rw-r--r--api/src/main/java/io/opencensus/common/Functions.java18
-rw-r--r--api/src/test/java/io/opencensus/common/FunctionsTest.java8
-rw-r--r--contrib/zpages/src/main/java/io/opencensus/contrib/zpages/TracezZPageHandler.java7
-rw-r--r--exporters/trace/instana/src/main/java/io/opencensus/exporter/trace/instana/InstanaExporterHandler.java7
-rw-r--r--exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java11
6 files changed, 33 insertions, 19 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 364d5775..39cc492e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
- Add `AttributeValueDouble` to `AttributeValue`.
- Add `createWithSender` to `JaegerTraceExporter` to allow use of `HttpSender`
with extra configurations
+- Add an API `Functions.returnToString()`.
## 0.16.1 - 2018-09-18
- Fix ClassCastException in Log4j log correlation
diff --git a/api/src/main/java/io/opencensus/common/Functions.java b/api/src/main/java/io/opencensus/common/Functions.java
index eb5984af..ea3457ca 100644
--- a/api/src/main/java/io/opencensus/common/Functions.java
+++ b/api/src/main/java/io/opencensus/common/Functions.java
@@ -53,6 +53,14 @@ public final class Functions {
}
};
+ private static final Function<Object, /*@Nullable*/ String> RETURN_TO_STRING =
+ new Function<Object, /*@Nullable*/ String>() {
+ @Override
+ public /*@Nullable*/ String apply(Object input) {
+ return input == null ? null : input.toString();
+ }
+ };
+
/**
* A {@code Function} that always ignores its argument and returns {@code null}.
*
@@ -82,6 +90,16 @@ public final class Functions {
}
/**
+ * A {@code Function} that always returns the {@link #toString()} value of the input.
+ *
+ * @return a {@code Function} that always returns the {@link #toString()} value of the input.
+ * @since 0.17
+ */
+ public static Function<Object, /*@Nullable*/ String> returnToString() {
+ return RETURN_TO_STRING;
+ }
+
+ /**
* A {@code Function} that always ignores its argument and throws an {@link
* IllegalArgumentException}.
*
diff --git a/api/src/test/java/io/opencensus/common/FunctionsTest.java b/api/src/test/java/io/opencensus/common/FunctionsTest.java
index e4d37569..55d58d4d 100644
--- a/api/src/test/java/io/opencensus/common/FunctionsTest.java
+++ b/api/src/test/java/io/opencensus/common/FunctionsTest.java
@@ -40,6 +40,14 @@ public class FunctionsTest {
}
@Test
+ public void testReturnToString() {
+ assertThat(Functions.returnToString().apply("input")).isEqualTo("input");
+ assertThat(Functions.returnToString().apply(Boolean.FALSE)).isEqualTo("false");
+ assertThat(Functions.returnToString().apply(Double.valueOf(123.45))).isEqualTo("123.45");
+ assertThat(Functions.returnToString().apply(null)).isEqualTo(null);
+ }
+
+ @Test
public void testThrowIllegalArgumentException() {
Function<Object, Void> f = Functions.throwIllegalArgumentException();
thrown.expect(IllegalArgumentException.class);
diff --git a/contrib/zpages/src/main/java/io/opencensus/contrib/zpages/TracezZPageHandler.java b/contrib/zpages/src/main/java/io/opencensus/contrib/zpages/TracezZPageHandler.java
index 0da29d73..f6a36996 100644
--- a/contrib/zpages/src/main/java/io/opencensus/contrib/zpages/TracezZPageHandler.java
+++ b/contrib/zpages/src/main/java/io/opencensus/contrib/zpages/TracezZPageHandler.java
@@ -654,12 +654,7 @@ final class TracezZPageHandler extends ZPageHandler {
// The return type needs to be nullable when this function is used as an argument to 'match' in
// attributeValueToString, because 'match' doesn't allow covariant return types.
private static final Function<Object, /*@Nullable*/ String> returnToString =
- new Function<Object, /*@Nullable*/ String>() {
- @Override
- public String apply(Object input) {
- return input.toString();
- }
- };
+ Functions.returnToString();
@javax.annotation.Nullable
private static String attributeValueToString(AttributeValue attributeValue) {
diff --git a/exporters/trace/instana/src/main/java/io/opencensus/exporter/trace/instana/InstanaExporterHandler.java b/exporters/trace/instana/src/main/java/io/opencensus/exporter/trace/instana/InstanaExporterHandler.java
index 1bbb665a..649a026f 100644
--- a/exporters/trace/instana/src/main/java/io/opencensus/exporter/trace/instana/InstanaExporterHandler.java
+++ b/exporters/trace/instana/src/main/java/io/opencensus/exporter/trace/instana/InstanaExporterHandler.java
@@ -114,12 +114,7 @@ final class InstanaExporterHandler extends SpanExporter.Handler {
// The return type needs to be nullable when this function is used as an argument to 'match' in
// attributeValueToString, because 'match' doesn't allow covariant return types.
private static final Function<Object, /*@Nullable*/ String> returnToString =
- new Function<Object, /*@Nullable*/ String>() {
- @Override
- public String apply(Object input) {
- return input.toString();
- }
- };
+ Functions.returnToString();
@javax.annotation.Nullable
private static String attributeValueToString(AttributeValue attributeValue) {
diff --git a/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java b/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java
index 711dcaa9..70bc725c 100644
--- a/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java
+++ b/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java
@@ -172,14 +172,11 @@ final class ZipkinExporterHandler extends SpanExporter.Handler {
// The return type needs to be nullable when this function is used as an argument to 'match' in
// attributeValueToString, because 'match' doesn't allow covariant return types.
- private static final Function<Object, String> returnToString =
- new Function<Object, String>() {
- @Override
- public String apply(Object input) {
- return input.toString();
- }
- };
+ private static final Function<Object, /*@Nullable*/ String> returnToString =
+ Functions.returnToString();
+ // TODO: Fix the Checker Framework warning.
+ @SuppressWarnings("nullness")
private static String attributeValueToString(AttributeValue attributeValue) {
return attributeValue.match(
returnToString,