*/
package org.opendaylight.controller.cluster.datastore.persisted;
-import com.google.common.base.Verify;
+import static com.google.common.base.Verify.verifyNotNull;
+
import java.io.Externalizable;
import java.io.Serializable;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
/**
* Base class for various bits of metadata attached to a {@link MetadataShardDataTreeSnapshot}. This class is not
* an interface because we want to make sure all subclasses implement the externalizable proxy pattern, for which
- * we need to force {@link #readResolve()} to be abstract.
- * <p/>
+ * we need to force {@link #writeReplace()} to be abstract. We do that by making it final and exposing a protected
+ * {@link #externalizableProxy()} method.
+ *
+ * <p>
* All concrete subclasses of this class should be final so as to form a distinct set of possible metadata. Since
* metadata is serialized along with {@link MetadataShardDataTreeSnapshot}, this set is part of the serialization format
* guarded by {@link PayloadVersion}.
- * <p/>
+ *
+ * <p>
* If a new metadata type is introduced or a type is removed, {@link PayloadVersion} needs to be bumped to ensure
* compatibility.
*
}
final Object writeReplace() {
- return Verify.verifyNotNull(externalizableProxy(), "Null externalizable proxy from %s", getClass());
+ return verifyNotNull(externalizableProxy(), "Null externalizable proxy from %s", getClass());
}
/**
*
* @return Externalizable proxy, may not be null
*/
- protected abstract @Nonnull Externalizable externalizableProxy();
+ protected abstract @NonNull Externalizable externalizableProxy();
public abstract Class<T> getType();
}