From f6a032d6b26e41c42550064928b9243db9d0a44c Mon Sep 17 00:00:00 2001 From: ZHANG Dapeng Date: Thu, 19 Apr 2018 10:05:48 -0700 Subject: [PATCH] core: forward toString for forwarding classes Forward `toString()` method for forwarding classes to improve debug information. For example, `ForwardingManagedChannel.toString()` will return something like: ``` ForwardingManagedChannel{delegate=ManagedChannelImpl{logId=tag-13247, target=localhost:8080}} ``` --- .../java/io/grpc/ForwardingChannelBuilder.java | 6 ++++++ .../io/grpc/PartialForwardingClientCall.java | 6 ++++++ .../PartialForwardingClientCallListener.java | 7 +++++++ .../io/grpc/PartialForwardingServerCall.java | 7 +++++++ .../PartialForwardingServerCallListener.java | 7 +++++++ .../io/grpc/internal/ForwardingClientStream.java | 6 ++++++ .../internal/ForwardingClientStreamListener.java | 6 ++++++ .../ForwardingConnectionClientTransport.java | 3 ++- .../grpc/internal/ForwardingManagedChannel.java | 6 ++++++ .../io/grpc/internal/ForwardingNameResolver.java | 6 ++++++ .../grpc/internal/ForwardingReadableBuffer.java | 6 ++++++ .../test/java/io/grpc/ForwardingTestUtil.java | 16 ++++++++++++++++ 12 files changed, 81 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/io/grpc/ForwardingChannelBuilder.java b/core/src/main/java/io/grpc/ForwardingChannelBuilder.java index 9c780698ce..9297753d48 100644 --- a/core/src/main/java/io/grpc/ForwardingChannelBuilder.java +++ b/core/src/main/java/io/grpc/ForwardingChannelBuilder.java @@ -16,6 +16,7 @@ package io.grpc; +import com.google.common.base.MoreObjects; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; @@ -219,6 +220,11 @@ public abstract class ForwardingChannelBuilder extends ClientCall extends ClientCall.Lis public void onReady() { delegate().onReady(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate()).toString(); + } } diff --git a/core/src/main/java/io/grpc/PartialForwardingServerCall.java b/core/src/main/java/io/grpc/PartialForwardingServerCall.java index 3f5dcf86d6..27f4990c95 100644 --- a/core/src/main/java/io/grpc/PartialForwardingServerCall.java +++ b/core/src/main/java/io/grpc/PartialForwardingServerCall.java @@ -16,6 +16,8 @@ package io.grpc; +import com.google.common.base.MoreObjects; + /** * A {@link ServerCall} which forwards all of it's methods to another {@link ServerCall} which * may have a different onMessage() message type. @@ -73,4 +75,9 @@ abstract class PartialForwardingServerCall extends ServerCall public void onReady() { delegate().onReady(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate()).toString(); + } } diff --git a/core/src/main/java/io/grpc/internal/ForwardingClientStream.java b/core/src/main/java/io/grpc/internal/ForwardingClientStream.java index 8ff72faba2..7af41c8ab9 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingClientStream.java +++ b/core/src/main/java/io/grpc/internal/ForwardingClientStream.java @@ -16,6 +16,7 @@ package io.grpc.internal; +import com.google.common.base.MoreObjects; import io.grpc.Attributes; import io.grpc.Compressor; import io.grpc.DecompressorRegistry; @@ -99,4 +100,9 @@ abstract class ForwardingClientStream implements ClientStream { public Attributes getAttributes() { return delegate().getAttributes(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate()).toString(); + } } diff --git a/core/src/main/java/io/grpc/internal/ForwardingClientStreamListener.java b/core/src/main/java/io/grpc/internal/ForwardingClientStreamListener.java index 04e8085742..cbb80b5fe7 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingClientStreamListener.java +++ b/core/src/main/java/io/grpc/internal/ForwardingClientStreamListener.java @@ -16,6 +16,7 @@ package io.grpc.internal; +import com.google.common.base.MoreObjects; import io.grpc.Metadata; import io.grpc.Status; @@ -47,4 +48,9 @@ abstract class ForwardingClientStreamListener implements ClientStreamListener { public void onReady() { delegate().onReady(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate()).toString(); + } } diff --git a/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java b/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java index eadd7c21c7..7d730d6a47 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java +++ b/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java @@ -16,6 +16,7 @@ package io.grpc.internal; +import com.google.common.base.MoreObjects; import com.google.common.util.concurrent.ListenableFuture; import io.grpc.Attributes; import io.grpc.CallOptions; @@ -64,7 +65,7 @@ abstract class ForwardingConnectionClientTransport implements ConnectionClientTr @Override public String toString() { - return getClass().getSimpleName() + "[" + delegate().toString() + "]"; + return MoreObjects.toStringHelper(this).add("delegate", delegate()).toString(); } @Override diff --git a/core/src/main/java/io/grpc/internal/ForwardingManagedChannel.java b/core/src/main/java/io/grpc/internal/ForwardingManagedChannel.java index 31147e7c61..69f5a083f2 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingManagedChannel.java +++ b/core/src/main/java/io/grpc/internal/ForwardingManagedChannel.java @@ -16,6 +16,7 @@ package io.grpc.internal; +import com.google.common.base.MoreObjects; import io.grpc.CallOptions; import io.grpc.ClientCall; import io.grpc.ConnectivityState; @@ -86,4 +87,9 @@ abstract class ForwardingManagedChannel extends ManagedChannel { public void enterIdle() { delegate.enterIdle(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate).toString(); + } } diff --git a/core/src/main/java/io/grpc/internal/ForwardingNameResolver.java b/core/src/main/java/io/grpc/internal/ForwardingNameResolver.java index 768f82e792..7d63d5582c 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingNameResolver.java +++ b/core/src/main/java/io/grpc/internal/ForwardingNameResolver.java @@ -18,6 +18,7 @@ package io.grpc.internal; import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.MoreObjects; import io.grpc.NameResolver; /** @@ -50,4 +51,9 @@ abstract class ForwardingNameResolver extends NameResolver { public void refresh() { delegate.refresh(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate).toString(); + } } diff --git a/core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java b/core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java index 2a402cdf95..ac6e2b446c 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java +++ b/core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java @@ -16,6 +16,7 @@ package io.grpc.internal; +import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import java.io.IOException; import java.io.OutputStream; @@ -99,4 +100,9 @@ public abstract class ForwardingReadableBuffer implements ReadableBuffer { public void close() { buf.close(); } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", buf).toString(); + } } diff --git a/core/src/test/java/io/grpc/ForwardingTestUtil.java b/core/src/test/java/io/grpc/ForwardingTestUtil.java index 00682da48f..cb673eef31 100644 --- a/core/src/test/java/io/grpc/ForwardingTestUtil.java +++ b/core/src/test/java/io/grpc/ForwardingTestUtil.java @@ -17,11 +17,13 @@ package io.grpc; import static junit.framework.TestCase.assertFalse; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mockingDetails; import static org.mockito.Mockito.verify; import com.google.common.base.Defaults; +import com.google.common.base.MoreObjects; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; @@ -68,5 +70,19 @@ public final class ForwardingTestUtil { throw new AssertionError(String.format("Method was not forwarded: %s", method)); } } + + boolean skipToString = false; + for (Method method : skippedMethods) { + if (method.getName().equals("toString")) { + skipToString = true; + break; + } + } + if (!skipToString) { + String actual = forwarder.toString(); + String expected = + MoreObjects.toStringHelper(forwarder).add("delegate", mockDelegate).toString(); + assertEquals("Method toString() was not forwarded properly", expected, actual); + } } }