1
0
mirror of https://github.com/square/okhttp.git synced 2025-07-31 05:04:26 +03:00

EverythingIsNonNull annotation (#4286)

Adds an annotation EverythingIsNonNull, and fixes some nullability on public API.
This commit is contained in:
Yuri Schimke
2018-09-30 09:33:42 +01:00
committed by GitHub
parent a1b6632fd9
commit ceb42f1322
18 changed files with 80 additions and 32 deletions

View File

@ -1,3 +1,3 @@
/** A DNS over HTTPS implementation for OkHttp. */
@javax.annotation.ParametersAreNonnullByDefault
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3.dnsoverhttps;

View File

@ -1,3 +1,3 @@
/** An OkHttp interceptor which logs HTTP request and response data. */
@javax.annotation.ParametersAreNonnullByDefault
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3.logging;

View File

@ -35,7 +35,7 @@ public final class RealEventSource
private final Request request;
private final EventSourceListener listener;
private Call call;
private @Nullable Call call;
public RealEventSource(Request request, EventSourceListener listener) {
this.request = request;

View File

@ -1,3 +1,3 @@
/** Private support classes for server-sent events. */
@javax.annotation.ParametersAreNonnullByDefault
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3.internal.sse;

View File

@ -1,3 +1,3 @@
/** Support for server-sent events. */
@javax.annotation.ParametersAreNonnullByDefault
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3.sse;

View File

@ -49,7 +49,7 @@ public final class EventSourceRecorder extends EventSourceListener {
}
@Override
public void onFailure(EventSource eventSource, Throwable t, @Nullable Response response) {
public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) {
Platform.get().log(Platform.INFO, "[ES] onFailure", t);
events.add(new Failure(t, response));
}

View File

@ -22,6 +22,7 @@ import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
@ -110,8 +111,8 @@ public final class HandshakeCertificates {
}
public static final class Builder {
private HeldCertificate heldCertificate;
private X509Certificate[] intermediates;
private @Nullable HeldCertificate heldCertificate;
private @Nullable X509Certificate[] intermediates;
private final List<X509Certificate> trustedCertificates = new ArrayList<>();

View File

@ -32,6 +32,7 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import javax.security.auth.x500.X500Principal;
import okio.ByteString;
import org.bouncycastle.asn1.ASN1Encodable;
@ -203,14 +204,14 @@ public final class HeldCertificate {
private long notBefore = -1L;
private long notAfter = -1L;
private String cn;
private String ou;
private @Nullable String cn;
private @Nullable String ou;
private final List<String> altNames = new ArrayList<>();
private BigInteger serialNumber;
private KeyPair keyPair;
private HeldCertificate signedBy;
private @Nullable BigInteger serialNumber;
private @Nullable KeyPair keyPair;
private @Nullable HeldCertificate signedBy;
private int maxIntermediateCas = -1;
private String keyAlgorithm;
private @Nullable String keyAlgorithm;
private int keySize;
public Builder() {

View File

@ -0,0 +1,3 @@
/** OkHttp Transport Layer Security (TLS) library. */
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3.tls;

View File

@ -0,0 +1,3 @@
/** Support for JDK provider APIs. */
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3;

View File

@ -62,7 +62,7 @@ import javax.annotation.Nullable;
public interface Authenticator {
/** An authenticator that knows no credentials and makes no attempt to authenticate. */
Authenticator NONE = new Authenticator() {
@Override public Request authenticate(Route route, Response response) {
@Override public Request authenticate(@Nullable Route route, Response response) {
return null;
}
};

View File

@ -458,10 +458,10 @@ public final class Cookie {
* #domain() domain} values must all be set before calling {@link #build}.
*/
public static final class Builder {
String name;
String value;
@Nullable String name;
@Nullable String value;
long expiresAt = HttpDate.MAX_DATE;
String domain;
@Nullable String domain;
String path = "/";
boolean secure;
boolean httpOnly;

View File

@ -18,6 +18,7 @@ package okhttp3;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import okhttp3.internal.NamedRunnable;
import okhttp3.internal.cache.CacheInterceptor;
import okhttp3.internal.connection.ConnectInterceptor;
@ -38,7 +39,7 @@ final class RealCall implements Call {
* There is a cycle between the {@link Call} and {@link EventListener} that makes this awkward.
* This will be set after we create the call instance then create the event listener instance.
*/
private EventListener eventListener;
private @Nullable EventListener eventListener;
/** The application's original request unadulterated by redirects or auth headers. */
final Request originalRequest;

View File

@ -35,7 +35,7 @@ public final class Request {
final @Nullable RequestBody body;
final Map<Class<?>, Object> tags;
private volatile CacheControl cacheControl; // Lazily initialized.
private volatile @Nullable CacheControl cacheControl; // Lazily initialized.
Request(Builder builder) {
this.url = builder.url;
@ -117,10 +117,10 @@ public final class Request {
}
public static class Builder {
HttpUrl url;
@Nullable HttpUrl url;
String method;
Headers.Builder headers;
RequestBody body;
@Nullable RequestBody body;
/** A mutable map of tags, or an immutable empty map if we don't have any. */
Map<Class<?>, Object> tags = Collections.emptyMap();

View File

@ -54,7 +54,7 @@ public final class Response implements Closeable {
final long sentRequestAtMillis;
final long receivedResponseAtMillis;
private volatile CacheControl cacheControl; // Lazily initialized.
private volatile @Nullable CacheControl cacheControl; // Lazily initialized.
Response(Builder builder) {
this.request = builder.request;
@ -302,16 +302,16 @@ public final class Response implements Closeable {
}
public static class Builder {
Request request;
Protocol protocol;
@Nullable Request request;
@Nullable Protocol protocol;
int code = -1;
String message;
@Nullable Handshake handshake;
Headers.Builder headers;
ResponseBody body;
Response networkResponse;
Response cacheResponse;
Response priorResponse;
@Nullable ResponseBody body;
@Nullable Response networkResponse;
@Nullable Response cacheResponse;
@Nullable Response priorResponse;
long sentRequestAtMillis;
long receivedResponseAtMillis;

View File

@ -102,7 +102,7 @@ import static okhttp3.internal.Util.UTF_8;
*/
public abstract class ResponseBody implements Closeable {
/** Multiple calls to {@link #charStream()} must return the same instance. */
private Reader reader;
private @Nullable Reader reader;
public abstract @Nullable MediaType contentType();
@ -241,7 +241,7 @@ public abstract class ResponseBody implements Closeable {
private final Charset charset;
private boolean closed;
private Reader delegate;
private @Nullable Reader delegate;
BomAwareReader(BufferedSource source, Charset charset) {
this.source = source;

View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2018 Square, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package okhttp3.internal.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.annotation.Nonnull;
import javax.annotation.meta.TypeQualifierDefault;
/**
* Extends {@code ParametersAreNonnullByDefault} to also apply to Method results and fields.
*
* @see javax.annotation.ParametersAreNonnullByDefault
*/
@Documented
@Nonnull
@TypeQualifierDefault({
ElementType.FIELD,
ElementType.METHOD,
ElementType.PARAMETER
})
@Retention(RetentionPolicy.RUNTIME)
public @interface EverythingIsNonNull { }

View File

@ -1,3 +1,3 @@
/** An HTTP+HTTP/2 client for Android and Java applications. */
@javax.annotation.ParametersAreNonnullByDefault
@okhttp3.internal.annotations.EverythingIsNonNull
package okhttp3;