From 33db8adda4638edd85ec6443c445c3511b4c31a4 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Fri, 4 Dec 2015 12:11:53 -0800 Subject: [PATCH] Remove outdated and misleading JavaDoc "onHeaders always is called" is from the initial gRPC design where 0-many context frames were sent before the first message. That is why it was possible for "no headers were received". That has long-since not been true, but in the various refactorings this language was accidentally left. The language "Headers always precede messages" is correct since headers are only guaranteed if messages were sent. --- core/src/main/java/io/grpc/ClientCall.java | 2 -- .../main/java/io/grpc/internal/ClientCallImpl.java | 3 --- .../java/io/grpc/internal/ClientCallImplTest.java | 14 +------------- 3 files changed, 1 insertion(+), 18 deletions(-) diff --git a/core/src/main/java/io/grpc/ClientCall.java b/core/src/main/java/io/grpc/ClientCall.java index 3122877dba..fadd54eb26 100644 --- a/core/src/main/java/io/grpc/ClientCall.java +++ b/core/src/main/java/io/grpc/ClientCall.java @@ -75,8 +75,6 @@ public abstract class ClientCall { /** * The response headers have been received. Headers always precede messages. - * This method is always called, if no headers were received then an empty {@link Metadata} - * is passed. * * @param headers containing metadata sent by the server at the start of the response. */ diff --git a/core/src/main/java/io/grpc/internal/ClientCallImpl.java b/core/src/main/java/io/grpc/internal/ClientCallImpl.java index a2c5b7fc00..8a9d8881b8 100644 --- a/core/src/main/java/io/grpc/internal/ClientCallImpl.java +++ b/core/src/main/java/io/grpc/internal/ClientCallImpl.java @@ -169,9 +169,6 @@ final class ClientCallImpl extends ClientCall callExecutor.execute(new ContextRunnable(context) { @Override public void runInContext() { - // Must call onHeaders per API contract - observer.onHeaders(new Metadata()); - // then notify of immediate closure. observer.onClose(Status.CANCELLED.withCause(context.cause()), new Metadata()); } }); diff --git a/core/src/test/java/io/grpc/internal/ClientCallImplTest.java b/core/src/test/java/io/grpc/internal/ClientCallImplTest.java index 8e27b732c2..029331c789 100644 --- a/core/src/test/java/io/grpc/internal/ClientCallImplTest.java +++ b/core/src/test/java/io/grpc/internal/ClientCallImplTest.java @@ -414,21 +414,9 @@ public class ClientCallImplTest { final SettableFuture statusFuture = SettableFuture.create(); call.start(new ClientCall.Listener() { - boolean headersCalled; - @Override - public void onHeaders(Metadata headers) { - headersCalled = true; - } - @Override public void onClose(Status status, Metadata trailers) { - if (headersCalled) { - statusFuture.set(status); - } else { - statusFuture.setException( - new AssertionError("Headers must be called before close")); - } - + statusFuture.set(status); } }, new Metadata());