Skip to content

Commit

Permalink
Merge pull request #2442 from square/jwilson.0428.api_dumps
Browse files Browse the repository at this point in the history
Add the Kotlin binary compatibility validator plugin
  • Loading branch information
oldergod authored Apr 29, 2023
2 parents 0795c89 + 3b7c095 commit 0d6a439
Show file tree
Hide file tree
Showing 16 changed files with 629 additions and 92 deletions.
12 changes: 11 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@ import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import kotlinx.validation.ApiValidationExtension

buildscript {
dependencies {
classpath(libs.animalSniffer.gradle)
classpath(libs.dokka.core)
classpath(libs.dokka.gradlePlugin)
classpath(libs.pluginz.android)
classpath(libs.pluginz.japicmp)
classpath(libs.pluginz.binaryCompatibilityValidator)
classpath(libs.pluginz.kotlin)
classpath(libs.pluginz.kotlinSerialization)
classpath(libs.pluginz.shadow)
Expand Down Expand Up @@ -232,6 +233,15 @@ allprojects {
}
}

subprojects {
plugins.withId("binary-compatibility-validator") {
configure<ApiValidationExtension> {
ignoredPackages += "com.squareup.wire.internal"
ignoredPackages += "grpc.reflection.v1alpha"
}
}
}

tasks.register("publishPluginToGradlePortalIfRelease") {
val VERSION_NAME: String by project
// Snapshots cannot be released to the Gradle portal. And we don't want to release internal square
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem" }
# Check https://docs.gradle.org/current/userguide/platforms.html#sec:version-catalog-plugin
# if we ever wanna migrate to this.
pluginz-android = { module = "com.android.tools.build:gradle", version = "7.1.2" }
pluginz-japicmp = { module = "me.champeau.gradle:japicmp-gradle-plugin", version = "0.3.1" }
pluginz-binaryCompatibilityValidator = { module = "org.jetbrains.kotlinx.binary-compatibility-validator:org.jetbrains.kotlinx.binary-compatibility-validator.gradle.plugin", version = "0.13.0" }
pluginz-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
pluginz-kotlinSerialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" }
pluginz-shadow = { module = "com.github.jengelman.gradle.plugins:shadow", version = "4.0.1" }
Expand Down
1 change: 0 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ include(":wire-java-generator")
include(":wire-kotlin-generator")
include(":wire-moshi-adapter")
include(":wire-reflector")
include(":wire-runtime:japicmp")
include(":wire-runtime")
include(":wire-schema")
include(":wire-schema-tests")
Expand Down
108 changes: 108 additions & 0 deletions wire-grpc-client/api/wire-grpc-client.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
public abstract interface class com/squareup/wire/GrpcCall {
public abstract fun cancel ()V
public abstract fun clone ()Lcom/squareup/wire/GrpcCall;
public abstract fun enqueue (Ljava/lang/Object;Lcom/squareup/wire/GrpcCall$Callback;)V
public abstract fun execute (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public abstract fun executeBlocking (Ljava/lang/Object;)Ljava/lang/Object;
public abstract fun getMethod ()Lcom/squareup/wire/GrpcMethod;
public abstract fun getRequestMetadata ()Ljava/util/Map;
public abstract fun getResponseMetadata ()Ljava/util/Map;
public abstract fun getTimeout ()Lokio/Timeout;
public abstract fun isCanceled ()Z
public abstract fun isExecuted ()Z
public abstract fun setRequestMetadata (Ljava/util/Map;)V
}

public abstract interface class com/squareup/wire/GrpcCall$Callback {
public abstract fun onFailure (Lcom/squareup/wire/GrpcCall;Ljava/io/IOException;)V
public abstract fun onSuccess (Lcom/squareup/wire/GrpcCall;Ljava/lang/Object;)V
}

public final class com/squareup/wire/GrpcCalls {
public static final fun grpcCall (Lkotlin/jvm/functions/Function1;)Lcom/squareup/wire/GrpcCall;
public static final fun grpcStreamingCall (Lkotlin/jvm/functions/Function3;)Lcom/squareup/wire/GrpcStreamingCall;
}

public final class com/squareup/wire/GrpcClient {
public synthetic fun <init> (Lokhttp3/Call$Factory;Lokhttp3/HttpUrl;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun create (Lkotlin/reflect/KClass;)Lcom/squareup/wire/Service;
public final fun newBuilder ()Lcom/squareup/wire/GrpcClient$Builder;
public final fun newCall (Lcom/squareup/wire/GrpcMethod;)Lcom/squareup/wire/GrpcCall;
public final fun newStreamingCall (Lcom/squareup/wire/GrpcMethod;)Lcom/squareup/wire/GrpcStreamingCall;
}

public final class com/squareup/wire/GrpcClient$Builder {
public fun <init> ()V
public final fun baseUrl (Ljava/lang/String;)Lcom/squareup/wire/GrpcClient$Builder;
public final fun baseUrl (Lokhttp3/HttpUrl;)Lcom/squareup/wire/GrpcClient$Builder;
public final fun build ()Lcom/squareup/wire/GrpcClient;
public final fun callFactory (Lokhttp3/Call$Factory;)Lcom/squareup/wire/GrpcClient$Builder;
public final fun client (Lokhttp3/OkHttpClient;)Lcom/squareup/wire/GrpcClient$Builder;
public final fun minMessageToCompress (J)Lcom/squareup/wire/GrpcClient$Builder;
}

public final class com/squareup/wire/GrpcException : java/io/IOException {
public fun <init> (Lcom/squareup/wire/GrpcStatus;Ljava/lang/String;[B)V
public synthetic fun <init> (Lcom/squareup/wire/GrpcStatus;Ljava/lang/String;[BILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun getGrpcMessage ()Ljava/lang/String;
public final fun getGrpcStatus ()Lcom/squareup/wire/GrpcStatus;
public final fun getGrpcStatusDetails ()[B
}

public final class com/squareup/wire/GrpcHttpUrlKt {
public static final fun toHttpUrl (Ljava/lang/String;)Lokhttp3/HttpUrl;
}

public final class com/squareup/wire/GrpcMethod {
public fun <init> (Ljava/lang/String;Lcom/squareup/wire/ProtoAdapter;Lcom/squareup/wire/ProtoAdapter;)V
public final fun getPath ()Ljava/lang/String;
public final fun getRequestAdapter ()Lcom/squareup/wire/ProtoAdapter;
public final fun getResponseAdapter ()Lcom/squareup/wire/ProtoAdapter;
}

public final class com/squareup/wire/GrpcStatus {
public static final field ABORTED Lcom/squareup/wire/GrpcStatus;
public static final field ALREADY_EXISTS Lcom/squareup/wire/GrpcStatus;
public static final field CANCELLED Lcom/squareup/wire/GrpcStatus;
public static final field Companion Lcom/squareup/wire/GrpcStatus$Companion;
public static final field DATA_LOSS Lcom/squareup/wire/GrpcStatus;
public static final field DEADLINE_EXCEEDED Lcom/squareup/wire/GrpcStatus;
public static final field FAILED_PRECONDITION Lcom/squareup/wire/GrpcStatus;
public static final field INTERNAL Lcom/squareup/wire/GrpcStatus;
public static final field INVALID_ARGUMENT Lcom/squareup/wire/GrpcStatus;
public static final field NOT_FOUND Lcom/squareup/wire/GrpcStatus;
public static final field OK Lcom/squareup/wire/GrpcStatus;
public static final field OUT_OF_RANGE Lcom/squareup/wire/GrpcStatus;
public static final field PERMISSION_DENIED Lcom/squareup/wire/GrpcStatus;
public static final field RESOURCE_EXHAUSTED Lcom/squareup/wire/GrpcStatus;
public static final field UNAUTHENTICATED Lcom/squareup/wire/GrpcStatus;
public static final field UNAVAILABLE Lcom/squareup/wire/GrpcStatus;
public static final field UNIMPLEMENTED Lcom/squareup/wire/GrpcStatus;
public static final field UNKNOWN Lcom/squareup/wire/GrpcStatus;
public synthetic fun <init> (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun getCode ()I
public final fun getName ()Ljava/lang/String;
}

public final class com/squareup/wire/GrpcStatus$Companion {
public final fun get (I)Lcom/squareup/wire/GrpcStatus;
}

public abstract interface class com/squareup/wire/GrpcStreamingCall {
public abstract fun cancel ()V
public abstract fun clone ()Lcom/squareup/wire/GrpcStreamingCall;
public abstract fun execute ()Lkotlin/Pair;
public abstract fun executeBlocking ()Lkotlin/Pair;
public abstract fun executeIn (Lkotlinx/coroutines/CoroutineScope;)Lkotlin/Pair;
public abstract fun getMethod ()Lcom/squareup/wire/GrpcMethod;
public abstract fun getRequestMetadata ()Ljava/util/Map;
public abstract fun getResponseMetadata ()Ljava/util/Map;
public abstract fun getTimeout ()Lokio/Timeout;
public abstract fun isCanceled ()Z
public abstract fun isExecuted ()Z
public abstract fun setRequestMetadata (Ljava/util/Map;)V
}

public abstract interface annotation class com/squareup/wire/WireGrpcExperimental : java/lang/annotation/Annotation {
}

1 change: 1 addition & 0 deletions wire-grpc-client/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ plugins {
if (project.rootProject.name == "wire") {
apply(plugin = "ru.vyarus.animalsniffer")
apply(plugin = "com.vanniktech.maven.publish.base")
apply(plugin = "binary-compatibility-validator")
}

kotlin {
Expand Down
30 changes: 30 additions & 0 deletions wire-grpc-server/api/wire-grpc-server.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
public final class com/squareup/wire/kotlin/grpcserver/FlowAdapter {
public static final field INSTANCE Lcom/squareup/wire/kotlin/grpcserver/FlowAdapter;
public final fun bidiStream (Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow;
public final fun clientStream (Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun serverStream (Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow;
}

public final class com/squareup/wire/kotlin/grpcserver/MessageSinkAdapter : com/squareup/wire/MessageSink {
public fun <init> (Lio/grpc/stub/StreamObserver;)V
public fun cancel ()V
public fun close ()V
public fun write (Ljava/lang/Object;)V
}

public final class com/squareup/wire/kotlin/grpcserver/MessageSourceAdapter : com/squareup/wire/MessageSource, io/grpc/stub/StreamObserver {
public fun <init> ()V
public fun close ()V
public fun onCompleted ()V
public fun onError (Ljava/lang/Throwable;)V
public fun onNext (Ljava/lang/Object;)V
public fun read ()Ljava/lang/Object;
}

public abstract interface class com/squareup/wire/kotlin/grpcserver/WireBindableService : io/grpc/BindableService {
}

public abstract interface class com/squareup/wire/kotlin/grpcserver/WireMethodMarshaller : io/grpc/MethodDescriptor$Marshaller {
public abstract fun marshalledClass ()Ljava/lang/Class;
}

1 change: 1 addition & 0 deletions wire-grpc-server/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ plugins {

if (project.rootProject.name == "wire") {
apply(plugin = "com.vanniktech.maven.publish.base")
apply(plugin = "binary-compatibility-validator")
}

dependencies {
Expand Down
18 changes: 18 additions & 0 deletions wire-gson-support/api/wire-gson-support.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
public final class com/squareup/wire/AnyMessageTypeAdapter : com/google/gson/TypeAdapter {
public fun <init> (Lcom/google/gson/Gson;Ljava/util/Map;)V
public fun read (Lcom/google/gson/stream/JsonReader;)Lcom/squareup/wire/AnyMessage;
public synthetic fun read (Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
public fun write (Lcom/google/gson/stream/JsonWriter;Lcom/squareup/wire/AnyMessage;)V
public synthetic fun write (Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
}

public final class com/squareup/wire/WireTypeAdapterFactory : com/google/gson/TypeAdapterFactory {
public fun <init> ()V
public fun <init> (Ljava/util/Map;)V
public fun <init> (Ljava/util/Map;Z)V
public synthetic fun <init> (Ljava/util/Map;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun create (Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter;
public final fun plus (Lcom/squareup/wire/ProtoAdapter;)Lcom/squareup/wire/WireTypeAdapterFactory;
public final fun plus (Ljava/util/List;)Lcom/squareup/wire/WireTypeAdapterFactory;
}

1 change: 1 addition & 0 deletions wire-gson-support/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ plugins {
if (project.rootProject.name == "wire") {
apply(plugin = "ru.vyarus.animalsniffer")
apply(plugin = "com.vanniktech.maven.publish.base")
apply(plugin = "binary-compatibility-validator")

val main by sourceSets.getting
configure<AnimalSnifferExtension> {
Expand Down
14 changes: 14 additions & 0 deletions wire-moshi-adapter/api/wire-moshi-adapter.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
public final class com/squareup/wire/RedactingJsonAdapterKt {
public static final fun redacting (Lcom/squareup/moshi/JsonAdapter;)Lcom/squareup/moshi/JsonAdapter;
}

public final class com/squareup/wire/WireJsonAdapterFactory : com/squareup/moshi/JsonAdapter$Factory {
public fun <init> ()V
public fun <init> (Ljava/util/Map;)V
public fun <init> (Ljava/util/Map;Z)V
public synthetic fun <init> (Ljava/util/Map;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun create (Ljava/lang/reflect/Type;Ljava/util/Set;Lcom/squareup/moshi/Moshi;)Lcom/squareup/moshi/JsonAdapter;
public final fun plus (Lcom/squareup/wire/ProtoAdapter;)Lcom/squareup/wire/WireJsonAdapterFactory;
public final fun plus (Ljava/util/List;)Lcom/squareup/wire/WireJsonAdapterFactory;
}

1 change: 1 addition & 0 deletions wire-moshi-adapter/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ plugins {
if (project.rootProject.name == "wire") {
apply(plugin = "ru.vyarus.animalsniffer")
apply(plugin = "com.vanniktech.maven.publish.base")
apply(plugin = "binary-compatibility-validator")

val main by sourceSets.getting
configure<AnimalSnifferExtension> {
Expand Down
6 changes: 6 additions & 0 deletions wire-reflector/api/wire-reflector.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
public final class com/squareup/wire/reflector/SchemaReflector {
public fun <init> (Lcom/squareup/wire/schema/Schema;Z)V
public synthetic fun <init> (Lcom/squareup/wire/schema/Schema;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun process (Lgrpc/reflection/v1alpha/ServerReflectionRequest;)Lgrpc/reflection/v1alpha/ServerReflectionResponse;
}

1 change: 1 addition & 0 deletions wire-reflector/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ plugins {

if (project.rootProject.name == "wire") {
apply(plugin = "com.vanniktech.maven.publish.base")
apply(plugin = "binary-compatibility-validator")

configure<MavenPublishBaseExtension> {
configure(
Expand Down
Loading

0 comments on commit 0d6a439

Please sign in to comment.