| /* |
| * Copyright (c) 2009-2014 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 |
| * Simon McDuff - maintenance |
| */ |
| package org.eclipse.emf.cdo.spi.common.revision; |
| |
| import org.eclipse.emf.cdo.common.branch.CDOBranch; |
| import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; |
| import org.eclipse.emf.cdo.common.id.CDOID; |
| import org.eclipse.emf.cdo.common.id.CDOIDProvider; |
| import org.eclipse.emf.cdo.common.protocol.CDODataInput; |
| import org.eclipse.emf.cdo.common.protocol.CDODataOutput; |
| import org.eclipse.emf.cdo.common.revision.CDOList; |
| import org.eclipse.emf.cdo.common.revision.CDORevision; |
| import org.eclipse.emf.cdo.common.revision.CDORevisionData; |
| import org.eclipse.emf.cdo.common.security.CDOPermission; |
| import org.eclipse.emf.cdo.spi.common.branch.CDOBranchAdjustable; |
| import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch; |
| import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo; |
| |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| |
| import java.io.IOException; |
| import java.util.List; |
| |
| /** |
| * If the meaning of this type isn't clear, there really should be more of a description here... |
| * |
| * @author Eike Stepper |
| * @since 2.0 |
| * @noextend This interface is not intended to be extended by clients. |
| * @noimplement This interface is not intended to be implemented by clients. |
| */ |
| public interface InternalCDORevision extends CDORevision, CDORevisionData, CDOReferenceAdjustable, CDOBranchAdjustable |
| { |
| /** |
| * @since 4.2 |
| */ |
| public InternalCDOClassInfo getClassInfo(); |
| |
| /** |
| * @since 4.2 |
| */ |
| public InternalCDOBranch getBranch(); |
| |
| /** |
| * @since 4.2 |
| */ |
| public InternalCDORevision getRevisionForID(CDOID id); |
| |
| /** |
| * @since 4.2 |
| */ |
| public InternalCDORevision getProperRevision(); |
| |
| public void setID(CDOID id); |
| |
| public void setVersion(int version); |
| |
| /** |
| * @since 3.0 |
| */ |
| public void setBranchPoint(CDOBranchPoint branchPoint); |
| |
| public void setRevised(long revised); |
| |
| public void setResourceID(CDOID resourceID); |
| |
| public void setContainerID(Object containerID); |
| |
| public void setContainingFeatureID(int containingFeatureID); |
| |
| /** |
| * @since 3.0 |
| */ |
| public void adjustForCommit(CDOBranch branch, long timeStamp); |
| |
| public void add(EStructuralFeature feature, int index, Object value); |
| |
| public void clear(EStructuralFeature feature); |
| |
| public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex); |
| |
| public Object remove(EStructuralFeature feature, int index); |
| |
| public Object set(EStructuralFeature feature, int index, Object value); |
| |
| public void unset(EStructuralFeature feature); |
| |
| /** |
| * Should never return {@link InternalCDORevision#NIL} |
| */ |
| public Object getValue(EStructuralFeature feature); |
| |
| public Object setValue(EStructuralFeature feature, Object value); |
| |
| public void setList(EStructuralFeature feature, InternalCDOList list); |
| |
| public CDOList getList(EStructuralFeature feature); |
| |
| /** |
| * @param initialCapacity |
| * the initialCapacity of a new list to be created if this revision has no list so far (its size will always |
| * be 0), or -1 to skip list creation and return <code>null</code> in this case. |
| */ |
| public CDOList getList(EStructuralFeature feature, int initialCapacity); |
| |
| /** |
| * @since 3.0 |
| */ |
| public void read(CDODataInput in) throws IOException; |
| |
| /** |
| * @since 4.3 |
| */ |
| public boolean readValues(CDODataInput in) throws IOException; |
| |
| /** |
| * @since 3.0 |
| */ |
| public void write(CDODataOutput out, int referenceChunk) throws IOException; |
| |
| /** |
| * @since 4.1 |
| */ |
| public void write(CDODataOutput out, int referenceChunk, CDOBranchPoint securityContext) throws IOException; |
| |
| /** |
| * @since 4.3 |
| */ |
| public void writeValues(CDODataOutput out, int referenceChunk) throws IOException; |
| |
| /** |
| * @since 3.0 |
| */ |
| public void convertEObjects(CDOIDProvider oidProvider); |
| |
| /** |
| * @since 3.0 |
| */ |
| public InternalCDORevisionDelta compare(CDORevision origin); |
| |
| /** |
| * @since 3.0 |
| */ |
| public InternalCDORevision copy(); |
| |
| /** |
| * @since 4.2 |
| */ |
| public EStructuralFeature[] clearValues(); |
| |
| /** |
| * @since 4.3 |
| */ |
| public String getResourceNodeName(); |
| |
| /** |
| * @since 4.1 |
| */ |
| public void setPermission(CDOPermission permission); |
| |
| /** |
| * Enables or disables permission checking for this revision. |
| * <p> |
| * This method is used on the client side if the framework changes the revision on another |
| * user's behalf, e.g., during invalidation or general revision copying. It's safe to offer this method |
| * on the client side because the server is always the permission checking authority (during load or commit). |
| * |
| * @since 4.3 |
| */ |
| public boolean bypassPermissionChecks(boolean on); |
| |
| /** |
| * @since 4.3 |
| */ |
| public boolean isListPreserving(); |
| |
| /** |
| * The default behavior of a revision for calls to the {@link #clear(EStructuralFeature)} and |
| * {@link #unset(EStructuralFeature)} methods is to set the feature's value to null (discarding the |
| * value itself, a List). By calling this {@link #setListPreserving()} method the default behavior |
| * is changed; instead of setting the feature's value to null, the {@link List#clear()} method is |
| * called on the feature's list instance. |
| * |
| * @since 4.3 |
| */ |
| public void setListPreserving(); |
| |
| /** |
| * @since 4.0 |
| */ |
| public void freeze(); |
| |
| /** |
| * @since 4.2 |
| */ |
| public boolean isFrozen(); |
| |
| /** |
| * @since 4.1 |
| */ |
| public boolean isUnchunked(); |
| |
| /** |
| * @since 4.1 |
| */ |
| public void setUnchunked(); |
| } |