Package io.grpc.stub

Class MetadataUtils


  • public final class MetadataUtils
    extends Object
    Utility functions for binding and receiving headers.
    • Method Detail

      • newAttachHeadersInterceptor

        public static ClientInterceptor newAttachHeadersInterceptor​(Metadata extraHeaders)
        Returns a client interceptor that attaches a set of headers to requests.
        Parameters:
        extraHeaders - the headers to be passed by each call that is processed by the returned interceptor
      • newCaptureMetadataInterceptor

        public static ClientInterceptor newCaptureMetadataInterceptor​(AtomicReference<Metadata> headersCapture,
                                                                      AtomicReference<Metadata> trailersCapture)
        Captures the last received metadata on a channel. Useful for testing.
        Parameters:
        headersCapture - to record the last received headers
        trailersCapture - to record the last received trailers
        Returns:
        an implementation of the channel with captures installed.
      • newAttachMetadataServerInterceptor

        @ExperimentalApi("https://github.com/grpc/grpc-java/issues/11462")
        public static ServerInterceptor newAttachMetadataServerInterceptor​(Metadata extras)
        Returns a ServerInterceptor that adds the specified Metadata to every response stream, one way or another.

        If, absent this interceptor, a stream would have headers, 'extras' will be added to those headers. Otherwise, 'extras' will be sent as trailers. This pattern is useful when you have some fixed information, server identity say, that should be included no matter how the call turns out. The fallback to trailers avoids artificially committing clients to error responses that could otherwise be retried (see https://grpc.io/docs/guides/retry/ for more).

        For correct operation, be sure to arrange for this interceptor to run *before* any others that might add headers.

        Parameters:
        extras - the Metadata to be added to each stream. Caller gives up ownership.