@@ -56,7 +56,7 @@ object avro {
56
56
57
57
override def stream (value : A ): InputStream = {
58
58
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()
60
60
output.write(value)
61
61
output.close()
62
62
@@ -73,17 +73,22 @@ object avro {
73
73
)
74
74
object bigdecimal {
75
75
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 ))
79
78
80
79
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 =
82
84
BigDecimalUtil .byteToBigDecimal(value.asInstanceOf [ByteBuffer ].array())
83
85
}
84
86
85
87
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 =
87
92
ByteBuffer .wrap(BigDecimalUtil .bigDecimalToByte(value))
88
93
}
89
94
@@ -150,14 +155,10 @@ object avro {
150
155
151
156
private [this ] def bigDecimalSchemaFor [A , B ](
152
157
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
161
162
}
162
163
163
164
private [this ] def bigDecimalDecoder [A , B ](
@@ -166,7 +167,10 @@ object avro {
166
167
): Decoder [BigDecimal @@ (A , B )] = {
167
168
new Decoder [BigDecimal @@ (A , B )] {
168
169
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 ) =
170
174
toDecimalTag[(A , B )](inner.fromByteBuffer(value.asInstanceOf [ByteBuffer ]))
171
175
}
172
176
}
@@ -176,8 +180,11 @@ object avro {
176
180
rm : RoundingMode .RoundingMode
177
181
): Encoder [BigDecimal @@ (A , B )] = {
178
182
new Encoder [BigDecimal @@ (A , B )] {
183
+
184
+ override val schemaFor = bigDecimalSchemaFor[A , B ](sp)
185
+
179
186
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 =
181
188
inner.toByteBuffer(value)
182
189
}
183
190
}
@@ -327,9 +334,8 @@ object avro {
327
334
* the datetime as nanoseconds).
328
335
*/
329
336
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 ))
333
339
334
340
implicit val localDateTimeDecoder : Decoder [LocalDateTime ] =
335
341
Decoder [Long ].map(JavaTimeUtil .longToLocalDateTime)
@@ -403,12 +409,12 @@ object avrowithschema {
403
409
404
410
override def parse (stream : InputStream ): A = {
405
411
val dfs = new DataFileStream (stream, new GenericDatumReader [GenericRecord ](schema))
406
- FromRecord [A ](schema ).from(dfs.next())
412
+ FromRecord [A ](Decoder [ A ] ).from(dfs.next())
407
413
}
408
414
409
415
override def stream (value : A ): InputStream = {
410
416
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()
412
418
output.write(value)
413
419
output.close()
414
420
0 commit comments