001/*- 002 ******************************************************************************* 003 * Copyright (c) 2011, 2016 Diamond Light Source Ltd. 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Peter Chang - initial API and implementation and/or initial documentation 011 *******************************************************************************/ 012 013package org.eclipse.january.metadata; 014 015import java.io.Serializable; 016 017import org.eclipse.january.dataset.IMetadataProvider; 018 019/** 020 * This is a marker interface for all metadata items which can be associated 021 * with a dataset. 022 * <p> 023 * All sub-interfaces must have an initialize method and all implementations 024 * must have a null constructor. 025 * <p> 026 * Extending sub-interfaces of MetadataType is strongly discouraged. That is, 027 * metadata interfaces (sub-interfaces of MetadataType) should be considered 028 * to be "final". This simplifies the implementation of {@link IMetadataProvider#getMetadata(Class)}, etc. 029 */ 030public interface MetadataType extends Serializable, Cloneable { 031 032 /** 033 * Make a deep copy of metadata 034 * @return clone 035 */ 036 public MetadataType clone(); 037}