/*
 * Copyright (c) 2011, 2012, 2014, 2015 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
 */

/**
 * Client concepts for dealing with sessions to CDO repositories.
 *
 * @apiviz.exclude .*\.CDOCommonRepository
 * @apiviz.exclude .*\.CDOListResolver
 * @apiviz.exclude .*\.CDOTransactionContainer
 * @apiviz.exclude .*\.CDOCommitInfo
 * @apiviz.exclude .*\.CDOLockChangeInfo
 * @apiviz.exclude .*\.CDOUpdatable
 * @apiviz.exclude .*\.INotifier
 * @apiviz.exclude .*Event
 */
package org.eclipse.emf.cdo.session;
