All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.pickling.pickler.JavaUUIDPickler.scala Maven / Gradle / Ivy

The newest version!
package scala.pickling
package pickler

import java.util.UUID

trait JavaUUIDPicklers extends PrimitivePicklers {

  implicit val javaUUIDPickler:
    Pickler[UUID] with Unpickler[UUID] = new AbstractPicklerUnpickler[UUID] {
    def tag = FastTypeTag[UUID]
    def pickle(picklee: java.util.UUID, builder: PBuilder):Unit = {
      builder.beginEntry(picklee, tag)

      builder.putField("msb", { b =>
        b.hintElidedType(FastTypeTag.Long)
        longPickler.pickle(picklee.getMostSignificantBits, b)
      })
      builder.putField("lsb", { b =>
        b.hintElidedType(FastTypeTag.Long)
        longPickler.pickle(picklee.getLeastSignificantBits, b)
      })
      builder.endEntry()
    }

    def unpickle(tag: String, reader: PReader): Any = {
      reader.hintElidedType(FastTypeTag.Long)
      reader.pinHints()
      val r1 = reader.readField("msb")
      val tag1 = r1.beginEntry()
      val msb = longPickler.unpickle(tag1, r1).asInstanceOf[Long]
      r1.endEntry()
      val r2 = reader.readField("lsb")
      val tag2 = r2.beginEntry()
      val lsb = longPickler.unpickle(tag2, r2).asInstanceOf[Long]
      r2.endEntry()
      reader.unpinHints()
      new java.util.UUID(msb, lsb)
    }
  }
  internal.currentRuntime.picklers.registerPicklerUnpickler(javaUUIDPickler.tag.key, javaUUIDPickler)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy