/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */
package org.purl.sword.base;

import nu.xom.Element;

/**
 * Common methods that should be supported by all classes that
 * represent data in the SWORD api.
 *
 * @author Neil Taylor
 */
public interface SwordElementInterface {
    /**
     * Marshall the data in the object to the XOM Element.
     *
     * @return The Element.
     */
    public Element marshall();

    /**
     * Unmarshall the data in the specified element and store it
     * in the object.
     *
     * @param element The data to unmarshall.
     * @throws UnmarshallException If the element is not of the
     *                             correct type, or if there is an error unmarshalling the data.
     */
    public void unmarshall(Element element)
        throws UnmarshallException;
}
