package edu.ualberta.med.biobank.i18n; import java.io.IOException; import java.io.ObjectInputStream; public abstract class AbstractLazyL10nedMessage implements L10nedMessage { private static final long serialVersionUID = 1L; private transient String message; public AbstractLazyL10nedMessage() { } @Override public String getMessage() { if (message == null) message = loadMessage(); return message; } private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { s.defaultReadObject(); } /** * Called whenever the underlying {@link #message} should be lazily loaded, * i.e. when {@link #getMessage()} is called and the message does not exist: * after creation and deserialisation. * * @return a message appropriate for {@link L10nedMessage#getMessage()}. */ protected abstract String loadMessage(); @Override public String toString() { return getMessage(); } }