package org.onlab.onos.net;

import static com.google.common.base.Preconditions.checkArgument;

/**
 * Base implementation of an annotated model description.
 */
public abstract class AbstractDescription implements Annotated {

    private static final SparseAnnotations EMPTY = DefaultAnnotations.builder().build();

    private final SparseAnnotations annotations;

    // For serialization
    protected AbstractDescription() {
        this.annotations = null;
    }

    /**
     * Creates a new entity, annotated with the specified annotations.
     *
     * @param annotations optional key/value annotations map
     */
    protected AbstractDescription(SparseAnnotations... annotations) {
        checkArgument(annotations.length <= 1, "Only one set of annotations is expected");
        this.annotations = annotations.length == 1 ? annotations[0] : EMPTY;
    }

    @Override
    public SparseAnnotations annotations() {
        return annotations;
    }

}
