def this()

in chill-scala/src/main/scala/com/twitter/chill/KryoBase.scala [41:96]


  def this() =
    this(new DefaultClassResolver, new MapReferenceResolver)

  lazy val objSer = new ObjectSerializer[AnyRef]

  protected var strategy: Option[InstantiatorStrategy] = None

  val functions: Iterable[Class[_]] = List(
    classOf[Function0[_]],
    classOf[Function1[_, _]],
    classOf[Function2[_, _, _]],
    classOf[Function3[_, _, _, _]],
    classOf[Function4[_, _, _, _, _]],
    classOf[Function5[_, _, _, _, _, _]],
    classOf[Function6[_, _, _, _, _, _, _]],
    classOf[Function7[_, _, _, _, _, _, _, _]],
    classOf[Function8[_, _, _, _, _, _, _, _, _]],
    classOf[Function9[_, _, _, _, _, _, _, _, _, _]],
    classOf[Function10[_, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function11[_, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function12[_, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function13[_, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function14[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function15[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function16[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function17[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function18[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function19[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function20[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function21[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]],
    classOf[Function22[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]]
  )

  def isFn(klass: Class[_]): Boolean =
    functions.find(_.isAssignableFrom(klass)).isDefined

  override def newDefaultSerializer(klass: Class[_]): KSerializer[_] =
    if (isSingleton(klass)) {
      objSer
    } else {
      super.newDefaultSerializer(klass) match {
        case fs: FieldSerializer[_] =>
          // Scala has a lot of synthetic fields that must be serialized:
          // We also enable it by default in java since not wanting these fields
          // serialized looks like the exception rather than the rule.
          fs.setIgnoreSyntheticFields(false)

          /**
           * This breaks scalding, but something like this should be used when working with the repl.
           *
           * if(isFn(klass)) new CleaningSerializer(fs.asInstanceOf[FieldSerializer[AnyRef]]) else
           */
          fs
        case x: KSerializer[_] => x
      }
    }