001/**
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 *
006 */
007package org.fcrepo.migration;
008
009/**
010 * An interface for a class that processes Fedora 3 objects
011 * as an iteration of versions.  The single method
012 * {@link #processObjectVersions} would be invoked once for
013 * an object providing the entire version history (ie. times
014 * with identifiable changes) in the Fedora 3 object
015 * starting from the creation and proceeding chronologically
016 * @author mdurbin
017 */
018public interface FedoraObjectVersionHandler {
019
020    /**
021     * Invoked to process a version of a Fedora 3 object.  All the metadata
022     * and content that changed from the previous version to the one
023     * represented by the current call is conventiently made available.
024     * @param versions an iterable of Objects each encapsulating everything
025     *               about a single version of a Fedora 3 object.
026     * @param objectInfo information about the Fedora 3 object being processed
027     */
028    public void processObjectVersions(Iterable<ObjectVersionReference> versions, final ObjectInfo objectInfo);
029}