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

scala.pickling.internal.NoReflectionRuntime.scala Maven / Gradle / Ivy

The newest version!
package scala.pickling
package internal

import java.util.concurrent.locks.ReentrantLock

import scala.pickling.refs.Share
import scala.pickling.{Pickler, Unpickler, FastTypeTag}
import scala.pickling.spi.{PicklerRegistry, RefRegistry, PicklingRuntime}
import scala.reflect.runtime

/**
 * An implementation of the pickling runtime that tries to avoid ALL runtime picklers,
 * including runtime lookup of statically defined picklers.
 */
final class NoReflectionRuntime() extends PicklingRuntime {
  /** The current reflection mirror to use when doing runtime unpickling/pickling. */
  override def currentMirror: runtime.universe.Mirror = runtime.currentMirror
  object picklers extends PicklerRegistry {
    override def genUnpickler(mirror: runtime.universe.Mirror, tagKey: String)(implicit share: refs.Share): _root_.scala.pickling.Unpickler[_] =
      throw new UnsupportedOperationException(s"Runtime pickler generation is disabled.  Cannot create unpickler for $tagKey")
    override def genPickler(classLoader: ClassLoader, clazz: Class[_], tag: FastTypeTag[_])(implicit share: Share): Pickler[_] =
      throw new UnsupportedOperationException(s"Runtime pickler generation is disabled.  Cannot create pickler for $tag")
    override def lookupUnpickler(key: String): Option[Unpickler[_]] = None
    override def lookupPickler(key: String): Option[Pickler[_]] = None
    override def registerPickler[T](key: String, p: Pickler[T]): Unit = ()
    override def registerUnpicklerGenerator[T](typeConstructorKey: String, generator: (AppliedType) => Unpickler[T]): Unit = ()
    override def registerPicklerUnpicklerGenerator[T](typeConstructorKey: String, generator: (AppliedType) => Pickler[T] with Unpickler[T]): Unit = ()
    override def registerPicklerGenerator[T](typeConstructorKey: String, generator: (AppliedType) => Pickler[T]): Unit = ()
    override def registerUnpickler[T](key: String, p: Unpickler[T]): Unit = ()
    override def registerPicklerUnpickler[T](key: String, p: Pickler[T] with Unpickler[T]): Unit = ()
  }
  override val refRegistry: RefRegistry = new DefaultRefRegistry()
  override val GRL: ReentrantLock = new ReentrantLock()
  override def makeFastTag[T](tagKey: String): FastTypeTag[T] = FastTypeTag.apply(currentMirror, tagKey).asInstanceOf[FastTypeTag[T]]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy