/** * Returns all the ambient context entries named 'name', in the order they were received, parsed as T, or * null if there are none. The iterator is not guaranteed to be "live." It may or may not be * accurate if the ambient context is mutated. */ @Nullable public <T> Iterable<T> getAll(final Metadata.Key<T> key) { return contextMetadata.getAll(key); }
/** * Returns all the ambient context entries named 'name', in the order they were received, parsed as T, or * null if there are none. The iterator is not guaranteed to be "live." It may or may not be * accurate if the ambient context is mutated. */ @Nullable public <T> Iterable<T> getAll(final Metadata.Key<T> key) { return contextMetadata.getAll(key); }
@Override public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) { Iterable<List<XForwardedClientCert>> values = headers.getAll(XFCC_METADATA_KEY); if (values != null) { List<XForwardedClientCert> xfccs = new ArrayList<>(); for (List<XForwardedClientCert> value : values) { xfccs.addAll(value); } Context xfccContext = Context.current().withValue(XForwardedClientCert.XFCC_CONTEXT_KEY, xfccs); return Contexts.interceptCall(xfccContext, call, headers, next); } else { return next.startCall(call, headers); } } }
@Override public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) { Iterable<List<XForwardedClientCert>> values = headers.getAll(XFCC_METADATA_KEY); if (values != null) { List<XForwardedClientCert> xfccs = new ArrayList<>(); for (List<XForwardedClientCert> value : values) { xfccs.addAll(value); } Context xfccContext = Context.current().withValue(XForwardedClientCert.XFCC_CONTEXT_KEY, xfccs); return Contexts.interceptCall(xfccContext, call, headers, next); } else { return next.startCall(call, headers); } } }
public Void answer(InvocationOnMock invocation) { Metadata clientCallHeaders = (Metadata) invocation.getArguments()[1]; Metadata.Key<String> key1 = Metadata.Key.of("header-key-1", Metadata.ASCII_STRING_MARSHALLER); Metadata.Key<String> key2 = Metadata.Key.of("header-key-2", Metadata.ASCII_STRING_MARSHALLER); assertThat(clientCallHeaders.getAll(key1)) .containsExactly("header-value-11", "header-value-12"); assertThat(clientCallHeaders.getAll(key2)).containsExactly("header-value-21"); return null; } })