Skip to content

Commit

Permalink
Support deserialization of proto3 default param when absent
Browse files Browse the repository at this point in the history
  • Loading branch information
oldergod committed Feb 15, 2023
1 parent a7721c5 commit 2a12b53
Show file tree
Hide file tree
Showing 13 changed files with 1,599 additions and 3 deletions.
6 changes: 4 additions & 2 deletions gen-tests.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ val generateGsonAdapterKotlinTests by tasks.creating(JavaExec::class) {
"dinosaur_kotlin.proto",
"period_kotlin.proto",
"person_kotlin.proto",
"getters_kotlin.proto"
"getters_kotlin.proto",
"pizza.proto"
)
}

Expand Down Expand Up @@ -517,7 +518,8 @@ val generateMoshiAdapterKotlinTests by tasks.creating(JavaExec::class) {
"person_kotlin.proto",
"dinosaur_kotlin.proto",
"period_kotlin.proto",
"getters_kotlin.proto"
"getters_kotlin.proto",
"pizza.proto"
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source: squareup.proto3.BuyOneGetOnePromotion in pizza.proto
package squareup.proto3

import com.squareup.wire.FieldEncoding
import com.squareup.wire.Message
import com.squareup.wire.ProtoAdapter
import com.squareup.wire.ProtoReader
import com.squareup.wire.ProtoWriter
import com.squareup.wire.ReverseProtoWriter
import com.squareup.wire.Syntax.PROTO_3
import com.squareup.wire.WireField
import com.squareup.wire.`internal`.sanitize
import kotlin.Any
import kotlin.AssertionError
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.DeprecationLevel
import kotlin.Int
import kotlin.Long
import kotlin.Nothing
import kotlin.String
import kotlin.Unit
import kotlin.jvm.JvmField
import okio.ByteString

public class BuyOneGetOnePromotion(
@field:WireField(
tag = 1,
adapter = "com.squareup.wire.ProtoAdapter#STRING",
label = WireField.Label.OMIT_IDENTITY,
)
public val coupon: String = "",
unknownFields: ByteString = ByteString.EMPTY,
) : Message<BuyOneGetOnePromotion, Nothing>(ADAPTER, unknownFields) {
@Deprecated(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")

public override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is BuyOneGetOnePromotion) return false
if (unknownFields != other.unknownFields) return false
if (coupon != other.coupon) return false
return true
}

public override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
result = result * 37 + coupon.hashCode()
super.hashCode = result
}
return result
}

public override fun toString(): String {
val result = mutableListOf<String>()
result += """coupon=${sanitize(coupon)}"""
return result.joinToString(prefix = "BuyOneGetOnePromotion{", separator = ", ", postfix = "}")
}

public fun copy(coupon: String = this.coupon, unknownFields: ByteString = this.unknownFields):
BuyOneGetOnePromotion = BuyOneGetOnePromotion(coupon, unknownFields)

public companion object {
@JvmField
public val ADAPTER: ProtoAdapter<BuyOneGetOnePromotion> = object :
ProtoAdapter<BuyOneGetOnePromotion>(
FieldEncoding.LENGTH_DELIMITED,
BuyOneGetOnePromotion::class,
"type.googleapis.com/squareup.proto3.BuyOneGetOnePromotion",
PROTO_3,
null,
"pizza.proto"
) {
public override fun encodedSize(`value`: BuyOneGetOnePromotion): Int {
var size = value.unknownFields.size
if (value.coupon != "") size += ProtoAdapter.STRING.encodedSizeWithTag(1, value.coupon)
return size
}

public override fun encode(writer: ProtoWriter, `value`: BuyOneGetOnePromotion): Unit {
if (value.coupon != "") ProtoAdapter.STRING.encodeWithTag(writer, 1, value.coupon)
writer.writeBytes(value.unknownFields)
}

public override fun encode(writer: ReverseProtoWriter, `value`: BuyOneGetOnePromotion): Unit {
writer.writeBytes(value.unknownFields)
if (value.coupon != "") ProtoAdapter.STRING.encodeWithTag(writer, 1, value.coupon)
}

public override fun decode(reader: ProtoReader): BuyOneGetOnePromotion {
var coupon: String = ""
val unknownFields = reader.forEachTag { tag ->
when (tag) {
1 -> coupon = ProtoAdapter.STRING.decode(reader)
else -> reader.readUnknownField(tag)
}
}
return BuyOneGetOnePromotion(
coupon = coupon,
unknownFields = unknownFields
)
}

public override fun redact(`value`: BuyOneGetOnePromotion): BuyOneGetOnePromotion =
value.copy(
unknownFields = ByteString.EMPTY
)
}

private const val serialVersionUID: Long = 0L
}
}
155 changes: 155 additions & 0 deletions wire-gson-support/src/test/java/squareup/proto3/FreeDrinkPromotion.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source: squareup.proto3.FreeDrinkPromotion in pizza.proto
package squareup.proto3

import com.squareup.wire.EnumAdapter
import com.squareup.wire.FieldEncoding
import com.squareup.wire.Message
import com.squareup.wire.ProtoAdapter
import com.squareup.wire.ProtoReader
import com.squareup.wire.ProtoWriter
import com.squareup.wire.ReverseProtoWriter
import com.squareup.wire.Syntax
import com.squareup.wire.Syntax.PROTO_3
import com.squareup.wire.WireEnum
import com.squareup.wire.WireField
import kotlin.Any
import kotlin.AssertionError
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.DeprecationLevel
import kotlin.Int
import kotlin.Long
import kotlin.Nothing
import kotlin.String
import kotlin.Unit
import kotlin.jvm.JvmField
import kotlin.jvm.JvmStatic
import okio.ByteString

public class FreeDrinkPromotion(
@field:WireField(
tag = 1,
adapter = "squareup.proto3.FreeDrinkPromotion${'$'}Drink#ADAPTER",
label = WireField.Label.OMIT_IDENTITY,
)
public val drink: Drink = Drink.UNKNOWN,
unknownFields: ByteString = ByteString.EMPTY,
) : Message<FreeDrinkPromotion, Nothing>(ADAPTER, unknownFields) {
@Deprecated(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")

public override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is FreeDrinkPromotion) return false
if (unknownFields != other.unknownFields) return false
if (drink != other.drink) return false
return true
}

public override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
result = result * 37 + drink.hashCode()
super.hashCode = result
}
return result
}

public override fun toString(): String {
val result = mutableListOf<String>()
result += """drink=$drink"""
return result.joinToString(prefix = "FreeDrinkPromotion{", separator = ", ", postfix = "}")
}

public fun copy(drink: Drink = this.drink, unknownFields: ByteString = this.unknownFields):
FreeDrinkPromotion = FreeDrinkPromotion(drink, unknownFields)

public companion object {
@JvmField
public val ADAPTER: ProtoAdapter<FreeDrinkPromotion> = object :
ProtoAdapter<FreeDrinkPromotion>(
FieldEncoding.LENGTH_DELIMITED,
FreeDrinkPromotion::class,
"type.googleapis.com/squareup.proto3.FreeDrinkPromotion",
PROTO_3,
null,
"pizza.proto"
) {
public override fun encodedSize(`value`: FreeDrinkPromotion): Int {
var size = value.unknownFields.size
if (value.drink != Drink.UNKNOWN) size += Drink.ADAPTER.encodedSizeWithTag(1, value.drink)
return size
}

public override fun encode(writer: ProtoWriter, `value`: FreeDrinkPromotion): Unit {
if (value.drink != Drink.UNKNOWN) Drink.ADAPTER.encodeWithTag(writer, 1, value.drink)
writer.writeBytes(value.unknownFields)
}

public override fun encode(writer: ReverseProtoWriter, `value`: FreeDrinkPromotion): Unit {
writer.writeBytes(value.unknownFields)
if (value.drink != Drink.UNKNOWN) Drink.ADAPTER.encodeWithTag(writer, 1, value.drink)
}

public override fun decode(reader: ProtoReader): FreeDrinkPromotion {
var drink: Drink = Drink.UNKNOWN
val unknownFields = reader.forEachTag { tag ->
when (tag) {
1 -> try {
drink = Drink.ADAPTER.decode(reader)
} catch (e: ProtoAdapter.EnumConstantNotFoundException) {
reader.addUnknownField(tag, FieldEncoding.VARINT, e.value.toLong())
}
else -> reader.readUnknownField(tag)
}
}
return FreeDrinkPromotion(
drink = drink,
unknownFields = unknownFields
)
}

public override fun redact(`value`: FreeDrinkPromotion): FreeDrinkPromotion = value.copy(
unknownFields = ByteString.EMPTY
)
}

private const val serialVersionUID: Long = 0L
}

public enum class Drink(
public override val `value`: Int,
) : WireEnum {
UNKNOWN(0),
PEPSI(1),
MOUNTAIN_DEW(2),
ROOT_BEER(9),
;

public companion object {
@JvmField
public val ADAPTER: ProtoAdapter<Drink> = object : EnumAdapter<Drink>(
Drink::class,
PROTO_3,
Drink.UNKNOWN
) {
public override fun fromValue(`value`: Int): Drink? = Drink.fromValue(value)
}

@JvmStatic
public fun fromValue(`value`: Int): Drink? = when (value) {
0 -> UNKNOWN
1 -> PEPSI
2 -> MOUNTAIN_DEW
9 -> ROOT_BEER
else -> null
}
}
}
}
Loading

0 comments on commit 2a12b53

Please sign in to comment.