package be.selckin.swu.model; import com.google.common.base.Preconditions; import org.apache.wicket.model.IModel; public class DiscardingModel<T> implements IModel<T> { private transient T obj; public DiscardingModel(T obj) { Preconditions.checkNotNull(obj); this.obj = obj; } @Override public T getObject() { Preconditions.checkNotNull(obj, "Attempting to use a detached discarding model"); return obj; } @Override public void setObject(T object) { this.obj = object; } @Override public void detach() { obj = null; } public static <T> DiscardingModel<T> of(T t) { return new DiscardingModel<T>(t); } }