-
-
Notifications
You must be signed in to change notification settings - Fork 481
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
Trying to get a BinaryCodec from a Schema fails for sealed trait / case object hierarchies.
Given the following class hierarchy:
sealed trait Foo derives Schema
case object Foo1 extends Foo
sealed trait Bar extends Foo
case object Bar1 extends Barzio.http.codec.TextBinaryCodec.fromSchema[Foo] throws:
java.lang.ClassCastException: class zio.schema.Schema$Enum1 cannot be cast to class zio.schema.Schema$CaseClass0 (zio.schema.Schema$Enum1 and zio.schema.Schema$CaseClass0 are in unnamed module of loader 'app')
[info] at zio.http.codec.TextBinaryCodec$.$anonfun$1(TextBinaryCodec.scala:58)
[info] at scala.collection.ArrayOps$.map$extension(ArrayOps.scala:936)
[info] at zio.Chunk$Arr.mapChunk(Chunk.scala:1774)
[info] at zio.ChunkLike.map(ChunkLike.scala:125)
[info] at zio.ChunkLike.map$(ChunkLike.scala:39)
[info] at zio.Chunk.map(Chunk.scala:44)
[info] at zio.http.codec.TextBinaryCodec$.fromSchema(TextBinaryCodec.scala:57)
and val jsonCodec = zio.schema.codec.JsonCodec.schemaBasedBinaryCodec[Foo] succeeds, but using it via jsonCodec.encode(Foo1) fails with:
java.lang.ClassCastException: class zio.schema.Schema$Enum1 cannot be cast to class zio.schema.Schema$CaseClass0 (zio.schema.Schema$Enum1 and zio.schema.Schema$CaseClass0 are in unnamed module of loader 'app')
[info] at zio.schema.codec.JsonCodec$.zio$schema$codec$JsonCodec$JsonEncoder$$$_$caseMap$$anonfun$1(JsonCodec.scala:643)
[info] at scala.collection.ArrayOps$.map$extension(ArrayOps.scala:936)
[info] at zio.Chunk$Arr.mapChunk(Chunk.scala:1774)
[info] at zio.ChunkLike.map(ChunkLike.scala:125)
[info] at zio.ChunkLike.map$(ChunkLike.scala:39)
[info] at zio.Chunk.map(Chunk.scala:44)
[info] at zio.schema.codec.JsonCodec$JsonEncoder$.caseMap(JsonCodec.scala:642)
[info] at zio.schema.codec.JsonCodec$JsonEncoder$.enumEncoder(JsonCodec.scala:651)
[info] at zio.schema.codec.JsonCodec$JsonEncoder$.schemaEncoderSlow(JsonCodec.scala:495)
[info] at zio.schema.codec.JsonCodec$JsonEncoder$.schemaEncoder(JsonCodec.scala:471)
[info] at zio.schema.codec.JsonCodec$JsonEncoder$.encode(JsonCodec.scala:452)
[info] at zio.schema.codec.JsonCodec$$anon$2.encode(JsonCodec.scala:331)
[info] at zio.schema.codec.JsonCodec$$anon$2.encode(JsonCodec.scala:330)
To Reproduce
https://scastie.scala-lang.org/tYRKPj1gSdeVmfdXcJmssw
Expected behaviour
I would expect no exceptions.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
tested on Scala 3.7.3 and 3.74, zio-http 3.5.1
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working