/* sbt -- Simple Build Tool
 * Copyright 2010 Mark Harrah
 */
package xsbt.api

	import xsbti.api._
	import java.io.{ByteArrayInputStream, ByteArrayOutputStream, InputStream, ObjectInputStream, ObjectOutputStream, OutputStream}

object APIFormat
{
	def write(api: Source): Array[Byte] =
	{
		val baos = new ByteArrayOutputStream
		write(api, baos)
		baos.toByteArray
	}
	def write(api: Source, out: OutputStream)
	{
		val objOut = new ObjectOutputStream(out)
		try { objOut.writeObject(api) }
		finally { objOut.close() }
	}
	def read(bytes: Array[Byte]): Source = read(new ByteArrayInputStream(bytes))
	def read(in: InputStream): Source =
	{
		try
		{
			val objIn = new ObjectInputStream(in)
			try { objIn.readObject().asInstanceOf[Source] }
			finally { objIn.close() }
		}
		catch { case e: java.io.EOFException => new xsbti.api.Source(Array(), Array())}
	}
}
/* sbt -- Simple Build Tool
 * Copyright 2010 Mark Harrah
 */
package xsbt.api

	import xsbti.api._
	import java.io.{ByteArrayInputStream, ByteArrayOutputStream, InputStream, ObjectInputStream, ObjectOutputStream, OutputStream}

object APIFormat
{
	def write(api: Source): Array[Byte] =
	{
		val baos = new ByteArrayOutputStream
		write(api, baos)
		baos.toByteArray
	}
	def write(api: Source, out: OutputStream)
	{
		val objOut = new ObjectOutputStream(out)
		try { objOut.writeObject(api) }
		finally { objOut.close() }
	}
	def read(bytes: Array[Byte]): Source = read(new ByteArrayInputStream(bytes))
	def read(in: InputStream): Source =
	{
		try
		{
			val objIn = new ObjectInputStream(in)
			try { objIn.readObject().asInstanceOf[Source] }
			finally { objIn.close() }
		}
		catch { case _: java.io.EOFException | _: java.io.InvalidClassException => new xsbti.api.Source(Array(), Array())}
	}
}
Handle changes to Source serialization format by returning empty Source
Handle changes to Source serialization format by returning empty Source
