/*
 * Copyright (c) 2012 Eike Stepper (Berlin, Germany) and others. All rights reserved. This program and the accompanying
 * materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: Eike Stepper - initial API and
 * implementation
 */

/**
 * Service provider concepts for dealing with transfers of {@link org.eclipse.emf.cdo.eresource.CDOResourceLeaf resources}
 * between {@link org.eclipse.emf.cdo.transfer.CDOTransferSystem systems}.
 */
package org.eclipse.emf.cdo.spi.transfer;
