001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.io.session;
003
004import java.io.IOException;
005
006import org.openstreetmap.josm.gui.layer.Layer;
007import org.openstreetmap.josm.gui.progress.ProgressMonitor;
008import org.openstreetmap.josm.io.IllegalDataException;
009import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
010import org.w3c.dom.Element;
011
012/**
013 * Session layer importer.
014 * @since 4668
015 * @since 10600 (functional interface)
016 */
017@FunctionalInterface
018public interface SessionLayerImporter {
019
020    /**
021     * Load the layer from xml meta-data.
022     * @param elem XML element
023     * @param support support class providing import utilities
024     * @param progressMonitor progress monitor
025     * @return the resulting layer
026     * @throws IOException if any I/O error occurs
027     * @throws IllegalDataException if invalid data is read
028     */
029    Layer load(Element elem, ImportSupport support, ProgressMonitor progressMonitor) throws IOException, IllegalDataException;
030}
031