scala - Scodec: Coproducts could not find implicit value for parameter auto: scodec.codecs.CoproductBuilderAuto -


i trying define scodec coproduct codec communicating eelink gps.

here code:

import scodec.codec import scodec.bits.bytevector import scodec.codecs._  trait message object message {   implicit val discriminated: discriminated[ message, int ] = discriminated(uint8)   val codec: codec[ message ] = codec.coproduct[ message ].discriminatedbyindex(uint8) }  case class gpsid(value: bytevector) object gpsid {   val codec = bytes(8).as[ gpsid ] }  case class serialnumber(value: int) object serialnumber {   val codec = uint16.as[ serialnumber ] }  case class header(protocolnumber: int, length: int, serial: serialnumber) object header {   val codec = (uint8 :: uint16 :: serialnumber.codec).as[ header ] }  case class login(header: header, id: gpsid, language: int) extends message object login {   val protocolnumber = 0x01   implicit val discriminator: discriminator[ message, login, int ] = discriminator(protocolnumber)   implicit val codec: codec[login] = (header.codec :: gpsid.codec :: uint8).as[ login ] } 

i getting following:

error:(14, 48) not find implicit value parameter auto: scodec.codecs.coproductbuilderauto[com.tecnoguru.ridespark.gps.eelink.messages.message]   val codec: codec[ message ] = codec.coproduct[ message ].discriminatedbyindex(uint8)                                            ^ 

i have looked @ scodec - coproducts not find implicit value parameter auto: scodec.codecs.coproductbuilderauto did not help, see defining codec , discriminator correctly.

i running on scala 2.11.5 scodec-core 1.7.0 , scodec-bits 1.0.5

the code there needs 2 minor changes:

  1. the message trait must sealed, or otherwise, shapeless not provide generic.aux[message, somecoproduct] instance.
  2. the call codec.coproduct[message] must after subtypes defined. moving companion end of file sufficient.

with these 2 changes, example compiles successfully.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -