Skip to content

Commit 18a1989

Browse files
Update avro4s to v4.0.7
1 parent 6cf265d commit 18a1989

File tree

4 files changed

+35
-30
lines changed

4 files changed

+35
-30
lines changed

microsite/src/main/docs/guides/custom-grpc-serialization.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,18 +144,17 @@ object AvroCustomCodecExample {
144144
import com.sksamuel.avro4s._
145145
import org.apache.avro.Schema
146146

147-
implicit object LocalDateSchemaFor extends SchemaFor[LocalDate] {
148-
override def schema(fm: com.sksamuel.avro4s.FieldMapper): Schema =
149-
Schema.create(Schema.Type.STRING)
150-
}
147+
implicit val LocalDateSchemaFor: SchemaFor[LocalDate] = SchemaFor[LocalDate](Schema.create(Schema.Type.STRING))
151148

152149
implicit object LocalDateEncoder extends Encoder[LocalDate] {
153-
override def encode(value: LocalDate, schema: Schema, fm: FieldMapper): String =
150+
override val schemaFor = LocalDateSchemaFor
151+
override def encode(value: LocalDate): String =
154152
value.format(DateTimeFormatter.ISO_LOCAL_DATE)
155153
}
156154

157155
implicit object LocalDateDecoder extends Decoder[LocalDate] {
158-
override def decode(value: Any, schema: Schema, fm: FieldMapper): LocalDate =
156+
override val schemaFor = LocalDateSchemaFor
157+
override def decode(value: Any): LocalDate =
159158
LocalDate.parse(value.toString(), DateTimeFormatter.ISO_LOCAL_DATE)
160159
}
161160

modules/kafka/src/main/scala/higherkindness/mu/format/AvroWithSchema.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import java.io.ByteArrayOutputStream
2020
import com.sksamuel.avro4s._
2121

2222
object AvroWithSchema {
23-
implicit def serialiser[T: Encoder: SchemaFor]: Serialiser[T] =
23+
implicit def serialiser[T: Encoder]: Serialiser[T] =
2424
new Serialiser[T] {
2525
override def serialise(t: T): Array[Byte] = {
2626
val bOut = new ByteArrayOutputStream()
27-
val out = AvroOutputStream.data[T].to(bOut).build(AvroSchema[T])
27+
val out = AvroOutputStream.data[T].to(bOut).build()
2828
out.write(t)
2929
out.close()
3030
bOut.toByteArray

modules/service/src/main/scala/higherkindness/mu/rpc/internal/encoders/avro.scala

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ object avro {
5656

5757
override def stream(value: A): InputStream = {
5858
val baos: ByteArrayOutputStream = new ByteArrayOutputStream()
59-
val output: AvroOutputStream[A] = AvroOutputStream.binary[A].to(baos).build(AvroSchema[A])
59+
val output: AvroOutputStream[A] = AvroOutputStream.binary[A].to(baos).build()
6060
output.write(value)
6161
output.close()
6262

@@ -73,17 +73,22 @@ object avro {
7373
)
7474
object bigdecimal {
7575

76-
implicit object bigDecimalSchemaFor extends SchemaFor[BigDecimal] {
77-
def schema(fm: FieldMapper): Schema = Schema.create(Schema.Type.BYTES)
78-
}
76+
implicit val bigDecimalSchemaFor: SchemaFor[BigDecimal] =
77+
SchemaFor[BigDecimal](Schema.create(Schema.Type.BYTES))
7978

8079
implicit object bigDecimalDecoder extends Decoder[BigDecimal] {
81-
def decode(value: Any, schema: Schema, fm: FieldMapper): BigDecimal =
80+
81+
override val schemaFor = bigDecimalSchemaFor
82+
83+
def decode(value: Any): BigDecimal =
8284
BigDecimalUtil.byteToBigDecimal(value.asInstanceOf[ByteBuffer].array())
8385
}
8486

8587
implicit object bigDecimalEncoder extends Encoder[BigDecimal] {
86-
def encode(value: BigDecimal, schema: Schema, fm: FieldMapper): ByteBuffer =
88+
89+
override val schemaFor = bigDecimalSchemaFor
90+
91+
def encode(value: BigDecimal): ByteBuffer =
8792
ByteBuffer.wrap(BigDecimalUtil.bigDecimalToByte(value))
8893
}
8994

@@ -150,14 +155,10 @@ object avro {
150155

151156
private[this] def bigDecimalSchemaFor[A, B](
152157
sp: ScalePrecision
153-
): SchemaFor[BigDecimal @@ (A, B)] = {
154-
new SchemaFor[BigDecimal @@ (A, B)] {
155-
def schema(fm: FieldMapper) = {
156-
val schema = Schema.create(Schema.Type.BYTES)
157-
LogicalTypes.decimal(sp.precision, sp.scale).addToSchema(schema)
158-
schema
159-
}
160-
}
158+
): SchemaFor[BigDecimal @@ (A, B)] = SchemaFor[BigDecimal @@ (A, B)] {
159+
val schema = Schema.create(Schema.Type.BYTES)
160+
LogicalTypes.decimal(sp.precision, sp.scale).addToSchema(schema)
161+
schema
161162
}
162163

163164
private[this] def bigDecimalDecoder[A, B](
@@ -166,7 +167,10 @@ object avro {
166167
): Decoder[BigDecimal @@ (A, B)] = {
167168
new Decoder[BigDecimal @@ (A, B)] {
168169
val inner = BDSerializer(sp, rm)
169-
def decode(value: Any, schema: Schema, fm: FieldMapper): BigDecimal @@ (A, B) =
170+
171+
override val schemaFor = bigDecimalSchemaFor[A, B](sp)
172+
173+
def decode(value: Any): BigDecimal @@ (A, B) =
170174
toDecimalTag[(A, B)](inner.fromByteBuffer(value.asInstanceOf[ByteBuffer]))
171175
}
172176
}
@@ -176,8 +180,11 @@ object avro {
176180
rm: RoundingMode.RoundingMode
177181
): Encoder[BigDecimal @@ (A, B)] = {
178182
new Encoder[BigDecimal @@ (A, B)] {
183+
184+
override val schemaFor = bigDecimalSchemaFor[A, B](sp)
185+
179186
val inner = BDSerializer(sp, rm)
180-
def encode(value: BigDecimal @@ (A, B), schema: Schema, fm: FieldMapper): ByteBuffer =
187+
def encode(value: BigDecimal @@ (A, B)): ByteBuffer =
181188
inner.toByteBuffer(value)
182189
}
183190
}
@@ -327,9 +334,8 @@ object avro {
327334
* the datetime as nanoseconds).
328335
*/
329336

330-
implicit object localDateTimeSchemaFor extends SchemaFor[LocalDateTime] {
331-
override def schema(fm: FieldMapper): Schema = Schema.create(Schema.Type.LONG)
332-
}
337+
implicit val localDateTimeSchemaFor: SchemaFor[LocalDateTime] =
338+
SchemaFor[LocalDateTime](Schema.create(Schema.Type.LONG))
333339

334340
implicit val localDateTimeDecoder: Decoder[LocalDateTime] =
335341
Decoder[Long].map(JavaTimeUtil.longToLocalDateTime)
@@ -403,12 +409,12 @@ object avrowithschema {
403409

404410
override def parse(stream: InputStream): A = {
405411
val dfs = new DataFileStream(stream, new GenericDatumReader[GenericRecord](schema))
406-
FromRecord[A](schema).from(dfs.next())
412+
FromRecord[A](Decoder[A]).from(dfs.next())
407413
}
408414

409415
override def stream(value: A): InputStream = {
410416
val baos: ByteArrayOutputStream = new ByteArrayOutputStream()
411-
val output: AvroOutputStream[A] = AvroOutputStream.data[A].to(baos).build(schema)
417+
val output: AvroOutputStream[A] = AvroOutputStream.data[A].to(baos).build()
412418
output.write(value)
413419
output.close()
414420

project/ProjectPlugin.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ object ProjectPlugin extends AutoPlugin {
1414
object autoImport {
1515

1616
lazy val V = new {
17-
val avro4s: String = "3.1.0"
17+
val avro4s: String = "4.0.7"
1818
val betterMonadicFor: String = "0.3.1"
1919
val catsEffect: String = "2.5.0"
2020
val circe: String = "0.13.0"

0 commit comments

Comments
 (0)