From 730b613007620b69bb4e918b82bbb8f97a756f0f Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 30 Oct 2010 11:55:47 -0400 Subject: [PATCH] make serializable abstract Lazy template --- compile/api/SafeLazy.scala | 2 +- .../src/main/java/xsbti/api/AbstractLazy.java | 26 +++++++++++++++++++ interface/src/main/java/xsbti/api/Lazy.java | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 interface/src/main/java/xsbti/api/AbstractLazy.java diff --git a/compile/api/SafeLazy.scala b/compile/api/SafeLazy.scala index 99630629f..7ccda7e0e 100644 --- a/compile/api/SafeLazy.scala +++ b/compile/api/SafeLazy.scala @@ -13,7 +13,7 @@ object SafeLazy def strict[T <: AnyRef](value: T): xsbti.api.Lazy[T] = apply(value) - private[this] final class Impl[T <: AnyRef](private[this] var eval: () => T) extends xsbti.api.Lazy[T] + private[this] final class Impl[T <: AnyRef](private[this] var eval: () => T) extends xsbti.api.AbstractLazy[T] { private[this] lazy val _t = { diff --git a/interface/src/main/java/xsbti/api/AbstractLazy.java b/interface/src/main/java/xsbti/api/AbstractLazy.java new file mode 100644 index 000000000..bd21f166f --- /dev/null +++ b/interface/src/main/java/xsbti/api/AbstractLazy.java @@ -0,0 +1,26 @@ +/* sbt -- Simple Build Tool + * Copyright 2010 Mark Harrah + */ +package xsbti.api; + + import java.io.ObjectStreamException; + +public abstract class AbstractLazy implements Lazy, java.io.Serializable +{ + private Object writeReplace() throws ObjectStreamException + { + return new StrictLazy(get()); + } + private static final class StrictLazy implements Lazy, java.io.Serializable + { + private final T value; + StrictLazy(T t) + { + value = t; + } + public T get() + { + return value; + } + } +} \ No newline at end of file diff --git a/interface/src/main/java/xsbti/api/Lazy.java b/interface/src/main/java/xsbti/api/Lazy.java index 4a5642a01..1ee29b013 100644 --- a/interface/src/main/java/xsbti/api/Lazy.java +++ b/interface/src/main/java/xsbti/api/Lazy.java @@ -1,5 +1,5 @@ /* sbt -- Simple Build Tool - * Copyright 2008, 2009 Mark Harrah + * Copyright 2010 Mark Harrah */ package xsbti.api;