/*
 * Copyright (c) 2004 - 2011 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
 */

/**
 * Server concepts for dealing with repositories and stores.
 * 
 * @apiviz.exclude .*\.CDOServerBrowser.*
 * @apiviz.exclude .*\.CommitInfoLoader
 * @apiviz.exclude .*\.BranchLoader
 * @apiviz.exclude .*\.IContainer
 * @apiviz.exclude .*\.INotifier
 * @apiviz.exclude .*Exception
 */
package org.eclipse.emf.cdo.server;

