diff --git a/core/src/main/java/com/google/net/stubby/AbstractChannelBuilder.java b/core/src/main/java/com/google/net/stubby/AbstractChannelBuilder.java index 7f74d4538b..0c5348b5a5 100644 --- a/core/src/main/java/com/google/net/stubby/AbstractChannelBuilder.java +++ b/core/src/main/java/com/google/net/stubby/AbstractChannelBuilder.java @@ -11,8 +11,10 @@ import javax.annotation.Nullable; /** * The base class for channel builders. + * + * @param The concrete type of this builder. */ -public abstract class AbstractChannelBuilder +public abstract class AbstractChannelBuilder> extends AbstractServiceBuilder { @Override diff --git a/core/src/main/java/com/google/net/stubby/AbstractServerBuilder.java b/core/src/main/java/com/google/net/stubby/AbstractServerBuilder.java index 11d805a4f7..969184b365 100644 --- a/core/src/main/java/com/google/net/stubby/AbstractServerBuilder.java +++ b/core/src/main/java/com/google/net/stubby/AbstractServerBuilder.java @@ -8,8 +8,10 @@ import java.util.concurrent.ExecutorService; /** * The base class for server builders. + * + * @param The concrete type for this builder. */ -public abstract class AbstractServerBuilder +public abstract class AbstractServerBuilder> extends AbstractServiceBuilder { private final HandlerRegistry registry; @@ -34,6 +36,7 @@ public abstract class AbstractServerBuilderThis is supported only if the user didn't provide a handler registry, or the provided one is * a {@link MutableHandlerRegistry}. Otherwise it throws an UnsupportedOperationException. */ + @SuppressWarnings("unchecked") public final BuilderT addService(ServerServiceDefinition service) { if (registry instanceof MutableHandlerRegistry) { ((MutableHandlerRegistry) registry).addService(service); diff --git a/core/src/main/java/com/google/net/stubby/AbstractServiceBuilder.java b/core/src/main/java/com/google/net/stubby/AbstractServiceBuilder.java index 42074d3c9a..56dcabdc25 100644 --- a/core/src/main/java/com/google/net/stubby/AbstractServiceBuilder.java +++ b/core/src/main/java/com/google/net/stubby/AbstractServiceBuilder.java @@ -17,9 +17,12 @@ import javax.annotation.Nullable; *

The ownership rule: a builder generally does not take ownership of any objects passed to it. * The caller is responsible for closing them if needed. The builder is only responsible for the * life-cycle of objects created inside. + * + * @param The product that is built by this builder. + * @param The concrete type of this builder. */ abstract class AbstractServiceBuilder { + BuilderT extends AbstractServiceBuilder> { @Nullable private ExecutorService userExecutor; @@ -33,6 +36,7 @@ abstract class AbstractServiceBuilderThe service won't take ownership of the given executor. It's caller's responsibility to * shut down the executor when it's desired. */ + @SuppressWarnings("unchecked") public final BuilderT executor(ExecutorService executor) { userExecutor = executor; return (BuilderT) this; diff --git a/core/src/main/java/com/google/net/stubby/HandlerRegistry.java b/core/src/main/java/com/google/net/stubby/HandlerRegistry.java index 1a0db15949..b47965ff06 100644 --- a/core/src/main/java/com/google/net/stubby/HandlerRegistry.java +++ b/core/src/main/java/com/google/net/stubby/HandlerRegistry.java @@ -16,9 +16,9 @@ public abstract class HandlerRegistry { /** A method definition and its parent's service definition. */ public static final class Method { private final ServerServiceDefinition serviceDef; - private final ServerMethodDefinition methodDef; + private final ServerMethodDefinition methodDef; - public Method(ServerServiceDefinition serviceDef, ServerMethodDefinition methodDef) { + public Method(ServerServiceDefinition serviceDef, ServerMethodDefinition methodDef) { this.serviceDef = serviceDef; this.methodDef = methodDef; } @@ -27,7 +27,7 @@ public abstract class HandlerRegistry { return serviceDef; } - public ServerMethodDefinition getMethodDefinition() { + public ServerMethodDefinition getMethodDefinition() { return methodDef; } } diff --git a/core/src/main/java/com/google/net/stubby/Metadata.java b/core/src/main/java/com/google/net/stubby/Metadata.java index 37fbc64150..5c69c19216 100644 --- a/core/src/main/java/com/google/net/stubby/Metadata.java +++ b/core/src/main/java/com/google/net/stubby/Metadata.java @@ -160,7 +160,7 @@ public abstract class Metadata { /** * Returns true if a value is defined for the given key. */ - public boolean containsKey(Key key) { + public boolean containsKey(Key key) { return store.containsKey(key.name); } @@ -274,13 +274,14 @@ public abstract class Metadata { /** * Merge values for the given set of keys into this set of metadata. */ - public void merge(Metadata other, Set keys) { + @SuppressWarnings({"rawtypes", "unchecked"}) + public void merge(Metadata other, Set> keys) { Preconditions.checkNotNull(other); - for (Key key : keys) { + for (Key key : keys) { if (other.containsKey(key)) { - Iterable values = other.getAll(key); + Iterable values = other.getAll(key); for (Object value : values) { - put(key, value); + put((Key) key, value); } } } @@ -350,7 +351,7 @@ public abstract class Metadata { } @Override - public void merge(Metadata other, Set keys) { + public void merge(Metadata other, Set> keys) { super.merge(other, keys); mergePathAndAuthority(other); } @@ -470,7 +471,7 @@ public abstract class Metadata { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - Key key = (Key) o; + Key key = (Key) o; return !(name != null ? !name.equals(key.name) : key.name != null); } @@ -487,6 +488,8 @@ public abstract class Metadata { private static class MetadataEntry { Object parsed; + + @SuppressWarnings("rawtypes") Key key; byte[] serializedBinary; String serializedAscii; @@ -494,7 +497,7 @@ public abstract class Metadata { /** * Constructor used when application layer adds a parsed value. */ - private MetadataEntry(Key key, Object parsed) { + private MetadataEntry(Key key, Object parsed) { this.parsed = Preconditions.checkNotNull(parsed); this.key = Preconditions.checkNotNull(key); } @@ -514,8 +517,8 @@ public abstract class Metadata { this.serializedAscii = Preconditions.checkNotNull(serializedAscii); } + @SuppressWarnings("unchecked") public T getParsed(Key key) { - @SuppressWarnings("unchecked") T value = (T) parsed; if (value != null) { if (this.key != key) { diff --git a/core/src/main/java/com/google/net/stubby/MethodDescriptor.java b/core/src/main/java/com/google/net/stubby/MethodDescriptor.java index 0ac3c393f6..2fd4a9fda4 100644 --- a/core/src/main/java/com/google/net/stubby/MethodDescriptor.java +++ b/core/src/main/java/com/google/net/stubby/MethodDescriptor.java @@ -3,10 +3,6 @@ package com.google.net.stubby; import com.google.common.base.Preconditions; import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; import java.util.concurrent.TimeUnit; import javax.annotation.concurrent.Immutable; diff --git a/core/src/main/java/com/google/net/stubby/MutableHandlerRegistryImpl.java b/core/src/main/java/com/google/net/stubby/MutableHandlerRegistryImpl.java index 8cd2c7254f..33a53d9dba 100644 --- a/core/src/main/java/com/google/net/stubby/MutableHandlerRegistryImpl.java +++ b/core/src/main/java/com/google/net/stubby/MutableHandlerRegistryImpl.java @@ -1,9 +1,5 @@ package com.google.net.stubby; -import com.google.net.stubby.ServerMethodDefinition; -import com.google.net.stubby.ServerServiceDefinition; - -import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -43,7 +39,7 @@ public final class MutableHandlerRegistryImpl extends MutableHandlerRegistry { if (service == null) { return null; } - ServerMethodDefinition method = service.getMethod(methodName.substring(index + 1)); + ServerMethodDefinition method = service.getMethod(methodName.substring(index + 1)); if (method == null) { return null; } diff --git a/core/src/main/java/com/google/net/stubby/Status.java b/core/src/main/java/com/google/net/stubby/Status.java index 1db8842a15..cdb306c54b 100644 --- a/core/src/main/java/com/google/net/stubby/Status.java +++ b/core/src/main/java/com/google/net/stubby/Status.java @@ -192,11 +192,10 @@ public final class Status { * Return a {@link Status} given a canonical error {@link Code} value. */ public static Status fromCodeValue(int codeValue) { - Status status; if (codeValue < 0 || codeValue > STATUS_LIST.size()) { return UNKNOWN.withDescription("Unknown code " + codeValue); } else { - return status = STATUS_LIST.get(codeValue); + return STATUS_LIST.get(codeValue); } } diff --git a/core/src/main/java/com/google/net/stubby/context/ForwardingChannel.java b/core/src/main/java/com/google/net/stubby/context/ForwardingChannel.java index 07b821adb7..892d3c7654 100644 --- a/core/src/main/java/com/google/net/stubby/context/ForwardingChannel.java +++ b/core/src/main/java/com/google/net/stubby/context/ForwardingChannel.java @@ -55,7 +55,8 @@ public abstract class ForwardingChannel implements Channel { } /** - * A {@link Call.Listener} which forwards all of its methods to another {@link Call.Listener}. + * A {@link com.google.net.stubby.Call.Listener} which forwards all of its methods to another + * {@link com.google.net.stubby.Call.Listener}. */ public static class ForwardingListener extends Call.Listener { diff --git a/core/src/main/java/com/google/net/stubby/newtransport/ClientStream.java b/core/src/main/java/com/google/net/stubby/newtransport/ClientStream.java index c5981f4877..a2110bbb01 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/ClientStream.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/ClientStream.java @@ -8,7 +8,7 @@ public interface ClientStream extends Stream { /** * Used to abnormally terminate the stream. After calling this method, no further messages will be * sent or received, however it may still be possible to receive buffered messages for a brief - * period until {@link StreamListener#closed} is called. + * period until {@link ClientStreamListener#closed} is called. */ void cancel(); diff --git a/core/src/main/java/com/google/net/stubby/newtransport/ClientStreamListener.java b/core/src/main/java/com/google/net/stubby/newtransport/ClientStreamListener.java index 063ab7f324..07b92dd7c3 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/ClientStreamListener.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/ClientStreamListener.java @@ -21,7 +21,7 @@ public interface ClientStreamListener extends StreamListener { /** * Called when the stream is fully closed. {@link - * com.google.net.stubby.transport.Transport.Code#OK} is the only status code that is guaranteed + * com.google.net.stubby.Status.Code#OK} is the only status code that is guaranteed * to have been sent from the remote server. Any other status code may have been caused by * abnormal stream termination. This is guaranteed to always be the final call on a listener. No * further callbacks will be issued. diff --git a/core/src/main/java/com/google/net/stubby/newtransport/CompressionFramer.java b/core/src/main/java/com/google/net/stubby/newtransport/CompressionFramer.java index 82b4943b8f..43b34847f4 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/CompressionFramer.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/CompressionFramer.java @@ -197,7 +197,7 @@ class CompressionFramer { } } if (message instanceof DeferredInputStream) { - return ((DeferredInputStream) message).flushTo(outputStreamAdapter); + return ((DeferredInputStream) message).flushTo(outputStreamAdapter); } else { // This could be optimized when compression is off, but we expect performance-critical code // to provide a DeferredInputStream. diff --git a/core/src/main/java/com/google/net/stubby/newtransport/MessageFramer2.java b/core/src/main/java/com/google/net/stubby/newtransport/MessageFramer2.java index bdb09ef8a5..c46b54aed5 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/MessageFramer2.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/MessageFramer2.java @@ -46,15 +46,14 @@ public class MessageFramer2 implements Framer { try { if (compression == Compression.NONE) { writeFrame(message, messageLength, false); + } else if (compression != Compression.GZIP) { + throw new AssertionError("Unknown compression type"); } else { + // compression == GZIP DirectAccessByteArrayOutputStream out = new DirectAccessByteArrayOutputStream(); - if (compression == Compression.GZIP) { - gzipCompressTo(message, messageLength, out); - } else { - throw new AssertionError("Unknown compression type"); - } - InputStream compressedMessage - = new DeferredByteArrayInputStream(out.getBuf(), 0, out.getCount()); + gzipCompressTo(message, messageLength, out); + InputStream compressedMessage = + new DeferredByteArrayInputStream(out.getBuf(), 0, out.getCount()); writeFrame(compressedMessage, out.getCount(), true); } } catch (IOException ex) { @@ -88,6 +87,7 @@ public class MessageFramer2 implements Framer { } } + @SuppressWarnings("rawtypes") private static long writeToOutputStream(InputStream message, OutputStream outputStream) throws IOException { if (message instanceof DeferredInputStream) { diff --git a/core/src/main/java/com/google/net/stubby/newtransport/ServerStreamListener.java b/core/src/main/java/com/google/net/stubby/newtransport/ServerStreamListener.java index 1af44763d5..1bd06c7acd 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/ServerStreamListener.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/ServerStreamListener.java @@ -14,7 +14,7 @@ public interface ServerStreamListener extends StreamListener { /** * Called when the stream is fully closed. A status code of {@link - * com.google.net.stubby.transport.Transport.Code#OK} implies normal termination of the stream. + * com.google.net.stubby.Status.Code#OK} implies normal termination of the stream. * Any other value implies abnormal termination. Since clients cannot send status, the passed * status is always library-generated and only is concerned with transport-level stream shutdown * (the call itself may have had a failing status, but if the stream terminated cleanly with the diff --git a/core/src/main/java/com/google/net/stubby/newtransport/Stream.java b/core/src/main/java/com/google/net/stubby/newtransport/Stream.java index eb0eb67e3f..cd2e6d2007 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/Stream.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/Stream.java @@ -25,8 +25,7 @@ public interface Stream { * called. The definition of what it means to be "accepted" is up to the transport implementation, * but this is a general indication that the transport is capable of handling more out-bound data * on the stream. If the stream/connection is closed for any reason before the write could be - * accepted, the callback will never be invoked. Any writes that are still pending upon receiving - * a {@link StreamListener#closed} callback are assumed to be cancelled. + * accepted, the callback will never be invoked. * * @param message stream containing the serialized message to be sent * @param length the length of the {@link InputStream}. diff --git a/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyClientTransport.java b/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyClientTransport.java index f3080debf4..28368b1420 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyClientTransport.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyClientTransport.java @@ -13,7 +13,7 @@ import com.google.net.stubby.newtransport.ClientStream; import com.google.net.stubby.newtransport.ClientStreamListener; import com.google.net.stubby.newtransport.ClientTransport; import com.google.net.stubby.newtransport.netty.NettyClientTransportFactory.NegotiationType; -import com.google.net.stubby.testing.utils.ssl.SslContextFactory; +import com.google.net.stubby.util.ssl.SslContextFactory; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; diff --git a/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyServerBuilder.java b/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyServerBuilder.java index e13e4a644e..5a03818116 100644 --- a/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyServerBuilder.java +++ b/core/src/main/java/com/google/net/stubby/newtransport/netty/NettyServerBuilder.java @@ -76,8 +76,10 @@ public final class NettyServerBuilder extends AbstractServerBuilder { /** * Returns the original protobuf message. Returns null after this stream has been read. */ + @Override @Nullable public MessageLite getDeferred() { return message; diff --git a/testing/src/main/java/com/google/net/stubby/testing/utils/ssl/InsecureTrustManager.java b/core/src/main/java/com/google/net/stubby/util/ssl/InsecureTrustManager.java similarity index 94% rename from testing/src/main/java/com/google/net/stubby/testing/utils/ssl/InsecureTrustManager.java rename to core/src/main/java/com/google/net/stubby/util/ssl/InsecureTrustManager.java index a54e017eaf..1fc45ca6dd 100644 --- a/testing/src/main/java/com/google/net/stubby/testing/utils/ssl/InsecureTrustManager.java +++ b/core/src/main/java/com/google/net/stubby/util/ssl/InsecureTrustManager.java @@ -1,4 +1,4 @@ -package com.google.net.stubby.testing.utils.ssl; +package com.google.net.stubby.util.ssl; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; @@ -19,6 +19,7 @@ public class InsecureTrustManager implements X509TrustManager { * @throws CertificateException never, even if the certificate chain * is invalid. */ + @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { // Doing absolutely no checking of client certificate chain. @@ -31,6 +32,7 @@ public class InsecureTrustManager implements X509TrustManager { * @throws CertificateException never, even if the certificate chain * is invalid. */ + @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // Doing absolutely no checking of server certificate chain. @@ -39,6 +41,7 @@ public class InsecureTrustManager implements X509TrustManager { /** * @return null, always. */ + @Override public X509Certificate[] getAcceptedIssuers() { return null; } diff --git a/testing/src/main/java/com/google/net/stubby/testing/utils/ssl/SslContextFactory.java b/core/src/main/java/com/google/net/stubby/util/ssl/SslContextFactory.java similarity index 97% rename from testing/src/main/java/com/google/net/stubby/testing/utils/ssl/SslContextFactory.java rename to core/src/main/java/com/google/net/stubby/util/ssl/SslContextFactory.java index 8225bb84a3..74b4e9f309 100644 --- a/testing/src/main/java/com/google/net/stubby/testing/utils/ssl/SslContextFactory.java +++ b/core/src/main/java/com/google/net/stubby/util/ssl/SslContextFactory.java @@ -1,4 +1,4 @@ -package com.google.net.stubby.testing.utils.ssl; +package com.google.net.stubby.util.ssl; import java.security.KeyStore; diff --git a/testing/src/main/java/com/google/net/stubby/testing/utils/ssl/SslKeyStore.java b/core/src/main/java/com/google/net/stubby/util/ssl/SslKeyStore.java similarity index 99% rename from testing/src/main/java/com/google/net/stubby/testing/utils/ssl/SslKeyStore.java rename to core/src/main/java/com/google/net/stubby/util/ssl/SslKeyStore.java index 904b53a7f7..a75c3484b7 100644 --- a/testing/src/main/java/com/google/net/stubby/testing/utils/ssl/SslKeyStore.java +++ b/core/src/main/java/com/google/net/stubby/util/ssl/SslKeyStore.java @@ -1,4 +1,4 @@ -package com.google.net.stubby.testing.utils.ssl; +package com.google.net.stubby.util.ssl; import java.io.ByteArrayInputStream; import java.io.InputStream; diff --git a/core/src/test/java/com/google/net/stubby/MetadataTest.java b/core/src/test/java/com/google/net/stubby/MetadataTest.java index 12fbc900c5..158f03c62e 100644 --- a/core/src/test/java/com/google/net/stubby/MetadataTest.java +++ b/core/src/test/java/com/google/net/stubby/MetadataTest.java @@ -1,5 +1,6 @@ package com.google.net.stubby; +import static com.google.common.base.Charsets.UTF_8; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -24,7 +25,7 @@ public class MetadataTest { private static final Metadata.Marshaller FISH_MARSHALLER = new Metadata.Marshaller() { @Override public byte[] toBytes(Fish fish) { - return fish.name.getBytes(StandardCharsets.UTF_8); + return fish.name.getBytes(UTF_8); } @Override @@ -34,7 +35,7 @@ public class MetadataTest { @Override public Fish parseBytes(byte[] serialized) { - return new Fish(new String(serialized, StandardCharsets.UTF_8)); + return new Fish(new String(serialized, UTF_8)); } @Override diff --git a/core/src/test/java/com/google/net/stubby/MutableHandlerRegistryImplTest.java b/core/src/test/java/com/google/net/stubby/MutableHandlerRegistryImplTest.java index 86b03d29f5..b6cb2e2a95 100644 --- a/core/src/test/java/com/google/net/stubby/MutableHandlerRegistryImplTest.java +++ b/core/src/test/java/com/google/net/stubby/MutableHandlerRegistryImplTest.java @@ -22,17 +22,23 @@ import org.mockito.Mockito; @RunWith(JUnit4.class) public class MutableHandlerRegistryImplTest { private MutableHandlerRegistry registry = new MutableHandlerRegistryImpl(); + @SuppressWarnings("unchecked") private Marshaller requestMarshaller = mock(Marshaller.class); + @SuppressWarnings("unchecked") private Marshaller responseMarshaller = mock(Marshaller.class); + @SuppressWarnings("unchecked") private ServerCallHandler handler = mock(ServerCallHandler.class); private ServerServiceDefinition basicServiceDefinition = ServerServiceDefinition.builder("basic") - .addMethod("flow", requestMarshaller, responseMarshaller, handler).build(); + .addMethod("flow", requestMarshaller, responseMarshaller, handler).build(); + @SuppressWarnings("rawtypes") private ServerMethodDefinition flowMethodDefinition = basicServiceDefinition.getMethods().get(0); private ServerServiceDefinition multiServiceDefinition = ServerServiceDefinition.builder("multi") - .addMethod("couple", requestMarshaller, responseMarshaller, handler) - .addMethod("few", requestMarshaller, responseMarshaller, handler).build(); - private ServerMethodDefinition coupleMethodDefinition - = multiServiceDefinition.getMethod("couple"); + .addMethod("couple", requestMarshaller, responseMarshaller, handler) + .addMethod("few", requestMarshaller, responseMarshaller, handler).build(); + @SuppressWarnings("rawtypes") + private ServerMethodDefinition coupleMethodDefinition = + multiServiceDefinition.getMethod("couple"); + @SuppressWarnings("rawtypes") private ServerMethodDefinition fewMethodDefinition = multiServiceDefinition.getMethod("few"); @After @@ -93,7 +99,8 @@ public class MutableHandlerRegistryImplTest { assertNotNull(registry.lookupMethod("/basic.flow")); ServerServiceDefinition replaceServiceDefinition = ServerServiceDefinition.builder("basic") .addMethod("another", requestMarshaller, responseMarshaller, handler).build(); - ServerMethodDefinition anotherMethodDefinition = replaceServiceDefinition.getMethods().get(0); + ServerMethodDefinition anotherMethodDefinition = + replaceServiceDefinition.getMethods().get(0); assertSame(basicServiceDefinition, registry.addService(replaceServiceDefinition)); assertNull(registry.lookupMethod("/basic.flow")); diff --git a/core/src/test/java/com/google/net/stubby/ServerImplTest.java b/core/src/test/java/com/google/net/stubby/ServerImplTest.java index d9cc37e643..825185bef7 100644 --- a/core/src/test/java/com/google/net/stubby/ServerImplTest.java +++ b/core/src/test/java/com/google/net/stubby/ServerImplTest.java @@ -1,18 +1,18 @@ package com.google.net.stubby; +import static com.google.common.base.Charsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isNull; import static org.mockito.Matchers.notNull; import static org.mockito.Matchers.same; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; -import com.google.common.base.Charsets; import com.google.common.io.ByteStreams; import com.google.common.util.concurrent.AbstractService; import com.google.common.util.concurrent.ListenableFuture; @@ -21,7 +21,6 @@ import com.google.common.util.concurrent.SettableFuture; import com.google.net.stubby.newtransport.ServerStream; import com.google.net.stubby.newtransport.ServerStreamListener; import com.google.net.stubby.newtransport.ServerTransportListener; -import com.google.net.stubby.newtransport.StreamListener; import org.junit.After; import org.junit.Before; @@ -29,18 +28,20 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.ArgumentCaptor; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; import java.io.ByteArrayInputStream; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.Executor; -import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeoutException; +import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicReference; /** Unit tests for {@link ServerImpl}. */ @@ -55,10 +56,14 @@ public class ServerImplTest { private ServerImpl server = new ServerImpl(executor, registry) .setTransportServer(transportServer); private ServerStream stream = Mockito.mock(ServerStream.class); - private ServerCall.Listener callListener = Mockito.mock(ServerCall.Listener.class); + + @Mock + private ServerCall.Listener callListener; @Before public void startup() { + MockitoAnnotations.initMocks(this); + server.startAsync(); server.awaitRunning(); } @@ -345,13 +350,13 @@ public class ServerImplTest { private static class StringMarshaller implements Marshaller { @Override public InputStream stream(String value) { - return new ByteArrayInputStream(value.getBytes(Charsets.UTF_8)); + return new ByteArrayInputStream(value.getBytes(UTF_8)); } @Override public String parse(InputStream stream) { try { - return new String(ByteStreams.toByteArray(stream), Charsets.UTF_8); + return new String(ByteStreams.toByteArray(stream), UTF_8); } catch (IOException ex) { throw new RuntimeException(ex); } diff --git a/core/src/test/java/com/google/net/stubby/ServerInterceptorsTest.java b/core/src/test/java/com/google/net/stubby/ServerInterceptorsTest.java index 1358fbe6bc..6efc5cb4c2 100644 --- a/core/src/test/java/com/google/net/stubby/ServerInterceptorsTest.java +++ b/core/src/test/java/com/google/net/stubby/ServerInterceptorsTest.java @@ -28,12 +28,11 @@ import java.util.List; @RunWith(JUnit4.class) public class ServerInterceptorsTest { @SuppressWarnings("unchecked") - private Marshaller requestMarshaller = (Marshaller) mock(Marshaller.class); + private Marshaller requestMarshaller = mock(Marshaller.class); @SuppressWarnings("unchecked") - private Marshaller responseMarshaller = (Marshaller) mock(Marshaller.class); + private Marshaller responseMarshaller = mock(Marshaller.class); @SuppressWarnings("unchecked") - private ServerCallHandler handler - = (ServerCallHandler) mock(ServerCallHandler.class); + private ServerCallHandler handler = mock(ServerCallHandler.class); @Mock private ServerCall.Listener listener; private String methodName = "/someRandom.Name"; @Mock private ServerCall call; @@ -63,7 +62,7 @@ public class ServerInterceptorsTest { @Test(expected = NullPointerException.class) public void npeForNullInterceptorList() { - ServerInterceptors.intercept(serviceDefinition, (List) null); + ServerInterceptors.intercept(serviceDefinition, (List) null); } @Test(expected = NullPointerException.class) diff --git a/core/src/test/java/com/google/net/stubby/newtransport/BufferTestBase.java b/core/src/test/java/com/google/net/stubby/newtransport/BufferTestBase.java index 40ed998c20..dbb78c3aed 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/BufferTestBase.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/BufferTestBase.java @@ -1,6 +1,6 @@ package com.google.net.stubby.newtransport; -import static java.nio.charset.StandardCharsets.UTF_8; +import static com.google.common.base.Charsets.UTF_8; import static org.junit.Assert.assertEquals; import org.junit.Test; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/BuffersArrayTest.java b/core/src/test/java/com/google/net/stubby/newtransport/BuffersArrayTest.java index 2dbb0bf77f..a6314c385e 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/BuffersArrayTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/BuffersArrayTest.java @@ -1,7 +1,7 @@ package com.google.net.stubby.newtransport; +import static com.google.common.base.Charsets.UTF_8; import static com.google.net.stubby.newtransport.Buffers.wrap; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/BuffersByteBufferTest.java b/core/src/test/java/com/google/net/stubby/newtransport/BuffersByteBufferTest.java index 6765d9ad52..09df5ae7fe 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/BuffersByteBufferTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/BuffersByteBufferTest.java @@ -1,6 +1,6 @@ package com.google.net.stubby.newtransport; -import static java.nio.charset.StandardCharsets.UTF_8; +import static com.google.common.base.Charsets.UTF_8; import java.nio.ByteBuffer; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/CompositeBufferTest.java b/core/src/test/java/com/google/net/stubby/newtransport/CompositeBufferTest.java index 14bda501cd..9e1210f341 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/CompositeBufferTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/CompositeBufferTest.java @@ -1,6 +1,6 @@ package com.google.net.stubby.newtransport; -import static io.netty.util.CharsetUtil.UTF_8; +import static com.google.common.base.Charsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/GrpcDeframerTest.java b/core/src/test/java/com/google/net/stubby/newtransport/GrpcDeframerTest.java index a4178b817c..dcaf18850a 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/GrpcDeframerTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/GrpcDeframerTest.java @@ -2,7 +2,6 @@ package com.google.net.stubby.newtransport; import static com.google.net.stubby.newtransport.TransportFrameUtil.PAYLOAD_FRAME; import static com.google.net.stubby.newtransport.TransportFrameUtil.STATUS_FRAME; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; @@ -15,6 +14,7 @@ import com.google.common.io.ByteStreams; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import com.google.net.stubby.Status; +import com.google.common.base.Charsets; import com.google.protobuf.ByteString; import org.junit.Before; @@ -161,7 +161,7 @@ public class GrpcDeframerTest { try { byte[] bytes = new byte[length]; ByteStreams.readFully(in, bytes); - return new String(bytes, UTF_8); + return new String(bytes, Charsets.UTF_8); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/core/src/test/java/com/google/net/stubby/newtransport/MessageFramer2Test.java b/core/src/test/java/com/google/net/stubby/newtransport/MessageFramer2Test.java index a8bb2508e0..8f74123aba 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/MessageFramer2Test.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/MessageFramer2Test.java @@ -3,16 +3,19 @@ package com.google.net.stubby.newtransport; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import com.google.common.primitives.Bytes; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import java.io.ByteArrayInputStream; import java.nio.ByteBuffer; @@ -25,10 +28,21 @@ import java.util.List; public class MessageFramer2Test { private static final int TRANSPORT_FRAME_SIZE = 12; - private Framer.Sink> sink = mock(Framer.Sink.class); - private Framer.Sink copyingSink = new ByteArrayConverterSink(sink); - private MessageFramer2 framer = new MessageFramer2(copyingSink, TRANSPORT_FRAME_SIZE); - private ArgumentCaptor> frameCaptor = ArgumentCaptor.forClass((Class) List.class); + @Mock + private Framer.Sink> sink; + private Framer.Sink copyingSink; + private MessageFramer2 framer; + + @Captor + private ArgumentCaptor> frameCaptor; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + + copyingSink = new ByteArrayConverterSink(sink); + framer = new MessageFramer2(copyingSink, TRANSPORT_FRAME_SIZE); + } @Test public void simplePayload() { diff --git a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyBufferTest.java b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyBufferTest.java index 98a277ef96..766a90c7fa 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyBufferTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyBufferTest.java @@ -1,10 +1,10 @@ package com.google.net.stubby.newtransport.netty; -import static java.nio.charset.StandardCharsets.UTF_8; +import static com.google.common.base.Charsets.UTF_8; import static org.junit.Assert.assertEquals; -import com.google.net.stubby.newtransport.BufferTestBase; import com.google.net.stubby.newtransport.Buffer; +import com.google.net.stubby.newtransport.BufferTestBase; import org.junit.Before; import org.junit.Test; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyClientHandlerTest.java b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyClientHandlerTest.java index 791ba60169..eb4e2857d5 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyClientHandlerTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyClientHandlerTest.java @@ -1,11 +1,11 @@ package com.google.net.stubby.newtransport.netty; -import static com.google.net.stubby.newtransport.netty.Utils.CONTENT_TYPE_HEADER; +import static com.google.common.base.Charsets.UTF_8; import static com.google.net.stubby.newtransport.netty.Utils.CONTENT_TYPE_GRPC; +import static com.google.net.stubby.newtransport.netty.Utils.CONTENT_TYPE_HEADER; import static com.google.net.stubby.newtransport.netty.Utils.HTTPS; import static com.google.net.stubby.newtransport.netty.Utils.HTTP_METHOD; import static com.google.net.stubby.newtransport.netty.Utils.STATUS_OK; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyDecompressorTest.java b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyDecompressorTest.java index 1edede08a0..5475048523 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyDecompressorTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyDecompressorTest.java @@ -1,5 +1,6 @@ package com.google.net.stubby.newtransport.netty; +import static com.google.common.base.Charsets.UTF_8; import static com.google.net.stubby.newtransport.Buffers.readAsStringUtf8; import static com.google.net.stubby.newtransport.TransportFrameUtil.COMPRESSION_HEADER_LENGTH; import static com.google.net.stubby.newtransport.TransportFrameUtil.FLATE_FLAG; @@ -21,7 +22,6 @@ import io.netty.buffer.UnpooledByteBufAllocator; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.zip.DeflaterOutputStream; @@ -157,7 +157,7 @@ public class NettyDecompressorTest { } private byte[] bytes(String str) { - return str.getBytes(StandardCharsets.UTF_8); + return str.getBytes(UTF_8); } private byte[] compress(byte[] data) throws Exception { diff --git a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyServerHandlerTest.java b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyServerHandlerTest.java index b000cb357c..d18c8b399f 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyServerHandlerTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/netty/NettyServerHandlerTest.java @@ -1,11 +1,11 @@ package com.google.net.stubby.newtransport.netty; -import static com.google.net.stubby.newtransport.netty.Utils.CONTENT_TYPE_HEADER; +import static com.google.common.base.Charsets.UTF_8; import static com.google.net.stubby.newtransport.netty.Utils.CONTENT_TYPE_GRPC; +import static com.google.net.stubby.newtransport.netty.Utils.CONTENT_TYPE_HEADER; import static com.google.net.stubby.newtransport.netty.Utils.HTTP_METHOD; import static io.netty.handler.codec.http2.Http2CodecUtil.toByteBuf; import static io.netty.handler.codec.http2.Http2Exception.protocolError; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; diff --git a/core/src/test/java/com/google/net/stubby/newtransport/okhttp/OkHttpClientTransportTest.java b/core/src/test/java/com/google/net/stubby/newtransport/okhttp/OkHttpClientTransportTest.java index 7e46f7d00d..f35096c79f 100644 --- a/core/src/test/java/com/google/net/stubby/newtransport/okhttp/OkHttpClientTransportTest.java +++ b/core/src/test/java/com/google/net/stubby/newtransport/okhttp/OkHttpClientTransportTest.java @@ -1,15 +1,15 @@ package com.google.net.stubby.newtransport.okhttp; +import static com.google.common.base.Charsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.eq; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; -import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -45,7 +45,6 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -178,7 +177,7 @@ public class OkHttpClientTransportTest { MockStreamListener listener = new MockStreamListener(); clientTransport.newStream(method,new Metadata.Headers(), listener); OkHttpClientStream stream = streams.get(3); - InputStream input = new ByteArrayInputStream(message.getBytes(StandardCharsets.UTF_8)); + InputStream input = new ByteArrayInputStream(message.getBytes(UTF_8)); assertEquals(12, input.available()); stream.writeMessage(input, input.available(), null); stream.flush(); @@ -312,7 +311,7 @@ public class OkHttpClientTransportTest { final String sentMessage = "Should I also go away?"; OkHttpClientStream stream = streams.get(3); InputStream input = - new ByteArrayInputStream(sentMessage.getBytes(StandardCharsets.UTF_8)); + new ByteArrayInputStream(sentMessage.getBytes(UTF_8)); assertEquals(22, input.available()); stream.writeMessage(input, input.available(), null); stream.flush(); @@ -361,7 +360,7 @@ public class OkHttpClientTransportTest { } private static Buffer createMessageFrame(String message) { - return createMessageFrame(message.getBytes(StandardCharsets.UTF_8)); + return createMessageFrame(message.getBytes(UTF_8)); } private static Buffer createMessageFrame(byte[] message) { @@ -452,7 +451,7 @@ public class OkHttpClientTransportTest { static String getContent(InputStream message) { BufferedReader br = - new BufferedReader(new InputStreamReader(message, StandardCharsets.UTF_8)); + new BufferedReader(new InputStreamReader(message, UTF_8)); try { // Only one line message is used in this test. return br.readLine(); diff --git a/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceImpl.java b/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceImpl.java index fc7dbb9e06..e0a4f8b802 100644 --- a/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceImpl.java +++ b/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceImpl.java @@ -1,6 +1,5 @@ package com.google.net.stubby.testing.integration; -import com.google.common.base.Randoms; import com.google.common.collect.Lists; import com.google.common.collect.Queues; import com.google.net.stubby.stub.StreamObserver; @@ -33,7 +32,7 @@ public class TestServiceImpl implements TestServiceGrpc.TestService { "/com/google/net/stubby/testing/integration/testdata/compressable.txt"; private static final String UNCOMPRESSABLE_FILE = "/com/google/net/stubby/testing/integration/testdata/uncompressable.bin"; - private final Random random = Randoms.insecureRandom(); + private final Random random = new Random(); private final ScheduledExecutorService executor; private final ByteString uncompressableBuffer; diff --git a/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceServer.java b/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceServer.java index 487761e577..5861641be6 100644 --- a/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceServer.java +++ b/integration-testing/src/main/java/com/google/net/stubby/testing/integration/TestServiceServer.java @@ -3,11 +3,9 @@ package com.google.net.stubby.testing.integration; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.google.common.util.concurrent.MoreExecutors; -import com.google.net.stubby.MutableHandlerRegistry; -import com.google.net.stubby.MutableHandlerRegistryImpl; import com.google.net.stubby.ServerImpl; import com.google.net.stubby.ServerInterceptors; -import com.google.net.stubby.newtransport.netty.NettyServer; +import com.google.net.stubby.newtransport.netty.NettyServerBuilder; import com.google.net.stubby.testing.TestUtils; import io.netty.handler.ssl.SslContext; @@ -181,12 +179,12 @@ public class TestServiceServer { SelfSignedCertificate ssc = new SelfSignedCertificate(); sslContext = SslContext.newServerContext(ssc.certificate(), ssc.privateKey()); } - MutableHandlerRegistry handlerRegistry = new MutableHandlerRegistryImpl(); - handlerRegistry.addService( - ServerInterceptors.intercept(TestServiceGrpc.bindService(testService), - TestUtils.echoRequestHeadersInterceptor(Util.METADATA_KEY))); - server = new ServerImpl(executor, handlerRegistry); - server.setTransportServer(new NettyServer(server.serverListener(), port)); + server = NettyServerBuilder.forPort(port) + .executor(executor) + .sslContext(sslContext) + .addService(ServerInterceptors.intercept(TestServiceGrpc.bindService(testService), + TestUtils.echoRequestHeadersInterceptor(Util.METADATA_KEY))) + .build(); } @Override diff --git a/stub/src/main/java/com/google/net/stubby/stub/AbstractServiceDescriptor.java b/stub/src/main/java/com/google/net/stubby/stub/AbstractServiceDescriptor.java index 9c047141e8..35e785db54 100644 --- a/stub/src/main/java/com/google/net/stubby/stub/AbstractServiceDescriptor.java +++ b/stub/src/main/java/com/google/net/stubby/stub/AbstractServiceDescriptor.java @@ -7,16 +7,18 @@ import java.util.Map; /** * Base class for all stub configurations. + * + * @param The concrete class type. */ -public abstract class AbstractServiceDescriptor { +public abstract class AbstractServiceDescriptor> { /** * Returns the list of operations defined in the stub configuration. */ - public abstract ImmutableList methods(); + public abstract ImmutableList> methods(); /** * Returns a new stub configuration for the provided method configurations. */ - protected abstract T build(Map methodMap); + protected abstract T build(Map> methodMap); } diff --git a/stub/src/main/java/com/google/net/stubby/stub/AbstractStub.java b/stub/src/main/java/com/google/net/stubby/stub/AbstractStub.java index df97c0caa1..4494d148f2 100644 --- a/stub/src/main/java/com/google/net/stubby/stub/AbstractStub.java +++ b/stub/src/main/java/com/google/net/stubby/stub/AbstractStub.java @@ -9,11 +9,15 @@ import java.util.concurrent.TimeUnit; /** * Common base type for stub implementations. Allows for reconfiguration. + * + * @param the concrete type of this stub. + * @param the service descriptor type */ // TODO(user): Move into 3rd party when tidy -// TOOD(lryan/kevinb): Excessive parameterization can be a pain, try to eliminate once the generated +// TODO(lryan/kevinb): Excessive parameterization can be a pain, try to eliminate once the generated // code is more tangible. -public abstract class AbstractStub> { +public abstract class AbstractStub, + C extends AbstractServiceDescriptor> { protected final Channel channel; protected final C config; @@ -47,13 +51,13 @@ public abstract class AbstractStub methodMap; - private Channel channel; + private final Map> methodMap; + private Channel stubChannel; private StubConfigBuilder() { - this.channel = AbstractStub.this.channel; + this.stubChannel = AbstractStub.this.channel; methodMap = Maps.newHashMapWithExpectedSize(config.methods().size()); - for (MethodDescriptor method : AbstractStub.this.config.methods()) { + for (MethodDescriptor method : AbstractStub.this.config.methods()) { methodMap.put(method.getName(), method); } } @@ -62,7 +66,7 @@ public abstract class AbstractStub entry : methodMap.entrySet()) { + for (Map.Entry> entry : methodMap.entrySet()) { entry.setValue(entry.getValue().withTimeout(timeout, unit)); } return this; @@ -72,7 +76,7 @@ public abstract class AbstractStub MethodDescriptor createMethodDescriptor( - String fullServiceName, Method method) { + String fullServiceName, Method method) { // TODO(user): if timeout is not defined in proto file, use a default timeout here. // If timeout is defined in proto file, Method should carry the timeout. return MethodDescriptor.create(method.getType(), fullServiceName + "/" + method.getName(), @@ -288,7 +288,8 @@ public class Calls { } /** - * Convert events on a {@link Call.Listener} into a blocking {@link Iterator}. + * Convert events on a {@link com.google.net.stubby.Call.Listener} into a blocking + * {@link Iterator}. * *

The class is not thread-safe, but it does permit Call.Listener calls in a separate thread * from Iterator calls. diff --git a/stub/src/main/java/com/google/net/stubby/stub/MetadataUtils.java b/stub/src/main/java/com/google/net/stubby/stub/MetadataUtils.java index ac6901412c..e3bee248ac 100644 --- a/stub/src/main/java/com/google/net/stubby/stub/MetadataUtils.java +++ b/stub/src/main/java/com/google/net/stubby/stub/MetadataUtils.java @@ -1,24 +1,16 @@ package com.google.net.stubby.stub; -import com.google.common.collect.ImmutableList; import com.google.common.io.BaseEncoding; import com.google.common.util.concurrent.ListenableFuture; import com.google.net.stubby.Call; import com.google.net.stubby.Channel; import com.google.net.stubby.Metadata; import com.google.net.stubby.MethodDescriptor; -import com.google.net.stubby.ServerCall; -import com.google.net.stubby.ServerCallHandler; -import com.google.net.stubby.ServerInterceptor; -import com.google.net.stubby.ServerInterceptors; -import com.google.net.stubby.ServerServiceDefinition; import com.google.net.stubby.Status; import com.google.net.stubby.context.ForwardingChannel; import com.google.protobuf.GeneratedMessage; import com.google.protobuf.InvalidProtocolBufferException; -import java.util.List; -import java.util.Set; import java.util.concurrent.atomic.AtomicReference; /** @@ -32,7 +24,7 @@ public class MetadataUtils { * @param extraHeaders the headers to be passed by each call on the returned stub. * @return an implementation of the stub with extraHeaders bound to each call. */ - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "rawtypes"}) public static T attachHeaders( T stub, final Metadata.Headers extraHeaders) { @@ -70,7 +62,7 @@ public class MetadataUtils { * @param trailersCapture to record the last received trailers * @return an implementation of the stub with extraHeaders bound to each call. */ - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "rawtypes"}) public static T captureMetadata( T stub, AtomicReference headersCapture, diff --git a/stub/src/main/java/com/google/net/stubby/stub/Method.java b/stub/src/main/java/com/google/net/stubby/stub/Method.java index 2283cfbfe7..f76a5546ef 100644 --- a/stub/src/main/java/com/google/net/stubby/stub/Method.java +++ b/stub/src/main/java/com/google/net/stubby/stub/Method.java @@ -28,7 +28,7 @@ public class Method { public static Method create( MethodType type, String name, Marshaller requestMarshaller, Marshaller responseMarshaller) { - return new Method(type, name, requestMarshaller, responseMarshaller); + return new Method(type, name, requestMarshaller, responseMarshaller); } private Method(MethodType type, String name, Marshaller requestMarshaller, diff --git a/stub/src/main/java/com/google/net/stubby/stub/ServerCalls.java b/stub/src/main/java/com/google/net/stubby/stub/ServerCalls.java index 63c2b74f0d..f11e060697 100644 --- a/stub/src/main/java/com/google/net/stubby/stub/ServerCalls.java +++ b/stub/src/main/java/com/google/net/stubby/stub/ServerCalls.java @@ -16,7 +16,7 @@ public class ServerCalls { } public static ServerMethodDefinition createMethodDefinition( - Method method, ServerCallHandler handler) { + Method method, ServerCallHandler handler) { return ServerMethodDefinition.create(method.getName(), method.getRequestMarshaller(), method.getResponseMarshaller(), handler); } @@ -27,7 +27,7 @@ public class ServerCalls { @Override public ServerCall.Listener startCall( String fullMethodName, final ServerCall call, Metadata.Headers headers) { - final ResponseObserver responseObserver = new ResponseObserver(call); + final ResponseObserver responseObserver = new ResponseObserver(call); return new EmptyServerCallListener() { ReqT request; @Override @@ -70,7 +70,7 @@ public class ServerCalls { @Override public ServerCall.Listener startCall(String fullMethodName, ServerCall call, Metadata.Headers headers) { - final ResponseObserver responseObserver = new ResponseObserver(call); + final ResponseObserver responseObserver = new ResponseObserver(call); final StreamObserver requestObserver = method.invoke(responseObserver); return new EmptyServerCallListener() { boolean halfClosed = false; diff --git a/testing/src/main/java/com/google/net/stubby/testing/InProcessUtils.java b/testing/src/main/java/com/google/net/stubby/testing/InProcessUtils.java index 525577ef54..1e452c8dd5 100644 --- a/testing/src/main/java/com/google/net/stubby/testing/InProcessUtils.java +++ b/testing/src/main/java/com/google/net/stubby/testing/InProcessUtils.java @@ -89,10 +89,12 @@ public class InProcessUtils { return new NoOpClientStream(); } + @SuppressWarnings("rawtypes") final ServerMethodDefinition serverMethod = resolvedMethod.getMethodDefinition(); final AtomicBoolean cancelled = new AtomicBoolean(); // Implementation of ServerCall which delegates to the client listener. + @SuppressWarnings("rawtypes") final ServerCall serverCall = new ServerCall() { @Override @@ -113,6 +115,7 @@ public class InProcessUtils { try { // TODO(user): Consider adapting at the Channel layer on the client // so we avoid serialization costs. + @SuppressWarnings("unchecked") InputStream message = serverMethod.streamResponse(payload); clientListener.messageRead(message, message.available()); } catch (IOException ioe) { @@ -140,6 +143,7 @@ public class InProcessUtils { }; // Get the listener from the service implementation + @SuppressWarnings({"rawtypes", "unchecked"}) final ServerCall.Listener serverListener = serverMethod.getServerCallHandler().startCall(method.getName(), serverCall, headers); @@ -181,6 +185,7 @@ public class InProcessUtils { public void writeMessage(final InputStream message, int length, @Nullable final Runnable accepted) { serverWorkQueue.execute(new Runnable() { + @SuppressWarnings("unchecked") @Override public void run() { try { diff --git a/testing/src/main/java/com/google/net/stubby/testing/TestUtils.java b/testing/src/main/java/com/google/net/stubby/testing/TestUtils.java index 0b4f8c9b43..753bed439c 100644 --- a/testing/src/main/java/com/google/net/stubby/testing/TestUtils.java +++ b/testing/src/main/java/com/google/net/stubby/testing/TestUtils.java @@ -20,8 +20,8 @@ public class TestUtils { * Echo the request headers from a client into response headers and trailers. Useful for * testing end-to-end metadata propagation. */ - public static ServerInterceptor echoRequestHeadersInterceptor(Metadata.Key... keys) { - final Set keySet = new HashSet(Arrays.asList(keys)); + public static ServerInterceptor echoRequestHeadersInterceptor(final Metadata.Key... keys) { + final Set> keySet = new HashSet>(Arrays.asList(keys)); return new ServerInterceptor() { @Override public ServerCall.Listener interceptCall(String method,