diff options
Diffstat (limited to 'org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java')
-rw-r--r-- | org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java b/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java new file mode 100644 index 0000000000..a9d8de729f --- /dev/null +++ b/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java @@ -0,0 +1,264 @@ +/** + * 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 + */ +package org.eclipse.emf.cdo.server; + +import org.eclipse.emf.cdo.common.CDOCommonRepository; +import org.eclipse.emf.cdo.common.branch.CDOBranchManager; +import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler; +import org.eclipse.emf.cdo.common.lock.IDurableLockingManager; +import org.eclipse.emf.cdo.common.model.CDOPackageRegistry; +import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.common.revision.CDORevisionManager; + +import org.eclipse.net4j.util.container.IContainer; +import org.eclipse.net4j.util.om.monitor.OMMonitor; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EPackage.Registry; + +import java.util.List; +import java.util.Map; + +/** + * @author Eike Stepper + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + * @apiviz.landmark + * @apiviz.has {@link IStore} + * @apiviz.has {@link java.util.Map} oneway - - properties + * @apiviz.has {@link org.eclipse.emf.cdo.common.model.CDOPackageRegistry} + * @apiviz.has {@link org.eclipse.emf.cdo.common.branch.CDOBranchManager} + * @apiviz.has {@link org.eclipse.emf.cdo.common.revision.CDORevisionManager} + * @apiviz.has {@link org.eclipse.emf.cdo.common.lock.IDurableLockingManager} + * @apiviz.has {@link ISessionManager} + * @apiviz.has {@link IQueryHandlerProvider} + * @apiviz.composedOf {@link org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler} + * @apiviz.composedOf {@link IRepository.Handler} - - accessHandlers + */ +public interface IRepository extends CDOCommonRepository, IQueryHandlerProvider, IContainer<Object> +{ + /** + * @since 3.0 + */ + public static final String SYSTEM_USER_ID = "CDO_SYSTEM"; //$NON-NLS-1$ + + public IStore getStore(); + + public Map<String, String> getProperties(); + + /** + * Returns the EMF {@link Registry package registry} that is used by this repository. + * + * @since 2.0 + */ + public CDOPackageRegistry getPackageRegistry(); + + /** + * @since 3.0 + */ + public CDOBranchManager getBranchManager(); + + /** + * @since 3.0 + */ + public CDORevisionManager getRevisionManager(); + + public ISessionManager getSessionManager(); + + /** + * @since 4.0 + */ + public IDurableLockingManager getLockManager(); + + /** + * @since 2.0 + */ + public IQueryHandlerProvider getQueryHandlerProvider(); + + /** + * Returns the time stamp of the last commit operation. + * + * @since 3.0 + */ + public long getLastCommitTimeStamp(); + + /** + * Blocks the calling thread until the next commit operation has succeeded and returns the last (highest) commit time + * stamp. + * + * @since 3.0 + */ + public long waitForCommit(long timeout); + + /** + * Validates the given timeStamp against the repository time. + * + * @throws IllegalArgumentException + * if the given timeStamp is less than the repository creation time or greater than the current repository + * time. + * @since 2.0 + */ + public void validateTimeStamp(long timeStamp) throws IllegalArgumentException; + + /** + * @since 4.0 + */ + public void addCommitInfoHandler(CDOCommitInfoHandler handler); + + /** + * @since 4.0 + */ + public void removeCommitInfoHandler(CDOCommitInfoHandler handler); + + /** + * @since 2.0 + */ + public void addHandler(Handler handler); + + /** + * @since 2.0 + */ + public void removeHandler(Handler handler); + + /** + * @since 4.0 + */ + public void setInitialPackages(EPackage... initialPackages); + + /** + * A marker interface to indicate valid arguments to {@link IRepository#addHandler(Handler)} and + * {@link IRepository#removeHandler(Handler)}. + * + * @see ReadAccessHandler + * @see WriteAccessHandler + * @author Eike Stepper + * @since 2.0 + */ + public interface Handler + { + } + + /** + * Provides a way to handle revisions that are to be sent to the client. + * + * @author Eike Stepper + * @since 2.0 + */ + public interface ReadAccessHandler extends Handler + { + /** + * Provides a way to handle revisions that are to be sent to the client. + * + * @param session + * The session that is going to send the revisions. + * @param revisions + * The revisions that are requested by the client. If the client must not see any of these revisions an + * unchecked exception must be thrown. + * @param additionalRevisions + * The additional revisions that are to be sent to the client because internal optimizers believe that they + * will be needed soon. If the client must not see any of these revisions they should be removed from the + * list. + * @throws RuntimeException + * to indicate that none of the revisions must be sent to the client. This exception will be visible at + * the client side! + */ + public void handleRevisionsBeforeSending(ISession session, CDORevision[] revisions, + List<CDORevision> additionalRevisions) throws RuntimeException; + } + + /** + * @author Eike Stepper + * @since 2.0 + */ + public interface WriteAccessHandler extends Handler + { + /** + * Provides a way to handle transactions that are to be committed to the backend store. + * + * @param transaction + * The transaction that is going to be committed. + * @param commitContext + * The context of the commit operation that is to be executed against the backend store. The context can be + * used to introspect all aspects of the current commit operation. <b>Note that you must not alter the + * internal state of the commit context in any way!</b> + * @param monitor + * A monitor that should be used by the implementor to avoid timeouts. + * @throws RuntimeException + * to indicate that the commit operation must not be executed against the backend store. This exception + * will be visible at the client side! + */ + public void handleTransactionBeforeCommitting(ITransaction transaction, IStoreAccessor.CommitContext commitContext, + OMMonitor monitor) throws RuntimeException; + + /** + * Provides a way to handle transactions after they have been committed to the backend store. + * + * @param transaction + * The transaction that has been committed. + * @param commitContext + * The context of the commit operation that was executed against the backend store. The context can be used + * to introspect all aspects of the current commit operation. <b>Note that you must not alter the internal + * state of the commit context in any way!</b> + * @param monitor + * A monitor that should be used by the implementor to avoid timeouts. + * @since 3.0 + */ + public void handleTransactionAfterCommitted(ITransaction transaction, IStoreAccessor.CommitContext commitContext, + OMMonitor monitor); + } + + /** + * @author Eike Stepper + * @noimplement This interface is not intended to be implemented by clients. + * @noextend This interface is not intended to be extended by clients. + * @apiviz.exclude + */ + public interface Props + { + /** + * Used to override the automatic UUID generation during first startup of a repository. Passing the empty string + * causes the UUID of the repository to be set to its {@link IRepository#getName() name}. + * + * @since 2.0 + */ + public static final String OVERRIDE_UUID = "overrideUUID"; //$NON-NLS-1$ + + /** + * @since 2.0 + */ + public static final String SUPPORTING_AUDITS = "supportingAudits"; //$NON-NLS-1$ + + /** + * @since 3.0 + */ + public static final String SUPPORTING_BRANCHES = "supportingBranches"; //$NON-NLS-1$ + + /** + * @since 4.0 + */ + public static final String SUPPORTING_ECORE = "supportingEcore"; //$NON-NLS-1$ + + /** + * @since 3.0 + */ + public static final String ENSURE_REFERENTIAL_INTEGRITY = "ensureReferentialIntegrity"; //$NON-NLS-1$ + + /** + * @since 4.0 + */ + public static final String ALLOW_INTERRUPT_RUNNING_QUERIES = "allowInterruptRunningQueries"; //$NON-NLS-1$ + + /** + * @since 4.1 + */ + public static final String ID_GENERATION_LOCATION = "idGenerationLocation"; //$NON-NLS-1$ + } +} |