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

ammonite.spark.util.Serialize.scala Maven / Gradle / Ivy

There is a newer version: 0.4.0
Show newest version
package ammonite.spark.util

import java.io._

object Serialize {
  def to(m: AnyRef): Array[Byte] = {
    val baos = new ByteArrayOutputStream()
    val oos = new ObjectOutputStream(baos)
    try {
      oos.writeObject(m)
      baos.toByteArray
    }
    finally oos.close()
  }

  def from(b: Array[Byte], loader: ClassLoader): AnyRef = {
    val bais = new ByteArrayInputStream(b)
    val ois = new ClassLoaderObjectInputStream(loader, bais)
    try ois.readObject()
    finally ois.close()
  }
}


// from akka.util

/**
 * ClassLoaderObjectInputStream tries to utilize the provided ClassLoader to load Classes and falls
 * back to ObjectInputStreams resolver.
 *
 * @param classLoader - the ClassLoader which is to be used primarily
 * @param is - the InputStream that is wrapped
 */
class ClassLoaderObjectInputStream(classLoader: ClassLoader, is: InputStream) extends ObjectInputStream(is) {
  override protected def resolveClass(objectStreamClass: ObjectStreamClass): Class[_] =
    try Class.forName(objectStreamClass.getName, false, classLoader) catch {
      case cnfe: ClassNotFoundException ⇒ super.resolveClass(objectStreamClass)
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy