org.apache.subversion.javahl
Interface ISVNEditor

All Known Implementing Classes:
CommitEditor

public interface ISVNEditor

Commit/update/status editor interface.

This interface is EXPERIMENTAL. It may change or be removed in a future version of JavaHL

Since:
1.9
See Also:
svn_editor.h for all restrictions on driving an editor.

Nested Class Summary
static interface ISVNEditor.GetNodeKindCallback
          Callback interface for providing the kind of the node that was the source of a copy.
static interface ISVNEditor.ProvideBaseCallback
          Callback interface for providing the base contents of a file that is being modified.
static interface ISVNEditor.ProvidePropsCallback
          Callback interface for providing the base properties of a file or directory that is being modified.
 
Method Summary
 void abort()
          Signal that the edit transmission was not successful.
 void addAbsent(String relativePath, NodeKind kind, long replacesRevision)
          Create an "absent" node of kind kind at relativePath.
 void addDirectory(String relativePath, Iterable<String> children, Map<String,byte[]> properties, long replacesRevision)
          Create a new directory at relativePath.
 void addFile(String relativePath, Checksum checksum, InputStream contents, Map<String,byte[]> properties, long replacesRevision)
          Create a new file at relativePath.
 void addSymlink(String relativePath, String target, Map<String,byte[]> properties, long replacesRevision)
          Create a new symbolic link at relativePath, with a link target of target.
 void alterDirectory(String relativePath, long revision, Iterable<String> children, Map<String,byte[]> properties)
          Alter the properties of the directory at relativePath.
 void alterFile(String relativePath, long revision, Checksum checksum, InputStream contents, Map<String,byte[]> properties)
          Alter the contents and/or the properties of the file at relativePath with revision as its expected revision.
 void alterSymlink(String relativePath, long revision, String target, Map<String,byte[]> properties)
          Alter the target and/or the properties of the symlink at relativePath with revision as its expected revision.
 void complete()
          Signal that the edit has been completed successfully.
 void copy(String sourceRelativePath, long sourceRevision, String destinationRelativePath, long replacesRevision)
          Move the node at sourceRelativePath to destinationRelativePath.
 void delete(String relativePath, long revision)
          Delete the existing node at relativePath, expected to be identical to revision revision of that path.
 void dispose()
          Release the native peer (should not depend on finalize), and abort the edit if it has not been completed yet.
 void move(String sourceRelativePath, long sourceRevision, String destinationRelativePath, long replacesRevision)
          Move the node at sourceRelativePath to destinationRelativePath.
 

Method Detail

dispose

void dispose()
Release the native peer (should not depend on finalize), and abort the edit if it has not been completed yet.


addDirectory

void addDirectory(String relativePath,
                  Iterable<String> children,
                  Map<String,byte[]> properties,
                  long replacesRevision)
                  throws ClientException
Create a new directory at relativePath. The immediate parent of relativePath is expected to exist.

For descriptions of properties and replacesRevision, see #addFile().

A complete listing of the immediate children of relativePath that will be added subsequently is given in children. children is a collection of const strings, each giving the basename of an immediate child. It is an error to pass null for children; use an empty collection to indicate that the new directory will have no children.

Throws:
ClientException

addFile

void addFile(String relativePath,
             Checksum checksum,
             InputStream contents,
             Map<String,byte[]> properties,
             long replacesRevision)
             throws ClientException
Create a new file at relativePath. The immediate parent of relativePath is expected to exist.

The file's contents are specified in contents which has a checksum matching checksum. Both values must be non-null.

Set the properties of the new file to properties. If no properties are being set on the new file, properties must be empty. It is an error to pass null for properties.

If this add is expected to replace a previously existing file, symlink or directory at relativePath, the revision number of the node to be replaced must be given in replacesRevision. Otherwise, replacesRevision must be Revision.SVN_INVALID_REVNUM.

Note: It is not allowed to call a "delete" followed by an "add" on the same path. Instead, an "add" with replacesRevision set accordingly must be used.

Note: The contents stream's lifetime must not extend beyond the scope of this function. An implementation must close the stream after consuming its contents.

Throws:
ClientException

addSymlink

void addSymlink(String relativePath,
                String target,
                Map<String,byte[]> properties,
                long replacesRevision)
                throws ClientException
Create a new symbolic link at relativePath, with a link target of target. The immediate parent of relativePath is expected to exist. For descriptions of properties and replacesRevision, see #addFile().

Throws:
ClientException

addAbsent

void addAbsent(String relativePath,
               NodeKind kind,
               long replacesRevision)
               throws ClientException
Create an "absent" node of kind kind at relativePath. The immediate parent of relativePath is expected to exist. For a description of replacesRevision, see #addFile().

Throws:
ClientException

alterDirectory

void alterDirectory(String relativePath,
                    long revision,
                    Iterable<String> children,
                    Map<String,byte[]> properties)
                    throws ClientException
Alter the properties of the directory at relativePath.

revision specifies the revision at which the receiver should expect to find this node. That is, relativePath at the start of the whole edit and relativePath at revision must lie within the same node-rev (aka location history segment). This information may be used to catch an attempt to alter and out-of-date directory. If the directory does not have a corresponding revision in the repository (e.g. it has not yet been committed), then revision should be Revision.SVN_INVALID_REVNUM.

If any changes to the set of children will be made in the future of the edit drive, then children must specify the resulting set of children. See #addDirectory() for the format of children. If not changes will be made, then NULL may be specified.

For a description of properties, see #addFile(). If no changes to the properties will be made (ie. only future changes to the set of children), then properties may be null.

Throws:
ClientException

alterFile

void alterFile(String relativePath,
               long revision,
               Checksum checksum,
               InputStream contents,
               Map<String,byte[]> properties)
               throws ClientException
Alter the contents and/or the properties of the file at relativePath with revision as its expected revision. See #alterDirectory() for more information about revision.

If contents is non-null, then the stream will be copied to the file, and its checksum must match checksum (which must also be non-null). If contents is null, then checksum must also be null, and no change will be applied to the file's contents.

If properties is non-null, then the properties will be applied.

For a description of checksum and contents, see #addFile().

This function allows properties to be null, but the parameter is otherwise described by #addFile().

Note: The contents stream's lifetime must not extend beyond the scope of this function. An implementation must close the stream after consuming its contents.

Throws:
ClientException

alterSymlink

void alterSymlink(String relativePath,
                  long revision,
                  String target,
                  Map<String,byte[]> properties)
                  throws ClientException
Alter the target and/or the properties of the symlink at relativePath with revision as its expected revision. See #alterDirectory() for more information about revision.

If target is non-null, then the symlink's target will be updated.

If properties is non-null, then the properties will be applied.

The target and/or the properties must be changed. It is an error to pass null for both target and properties.

This function allows properties to be null, but the parameter is otherwise described by #addFile().

Throws:
ClientException

delete

void delete(String relativePath,
            long revision)
            throws ClientException
Delete the existing node at relativePath, expected to be identical to revision revision of that path.

Throws:
ClientException

copy

void copy(String sourceRelativePath,
          long sourceRevision,
          String destinationRelativePath,
          long replacesRevision)
          throws ClientException
Move the node at sourceRelativePath to destinationRelativePath.

For a description of replacesRevision, see #addFile().

Note: See the general instructions on paths for this API. Sice the sourceRelativePath argument must generally be able to reference any node in the repository, the implication is that the editor's root must be the repository root.

Throws:
ClientException

move

void move(String sourceRelativePath,
          long sourceRevision,
          String destinationRelativePath,
          long replacesRevision)
          throws ClientException
Move the node at sourceRelativePath to destinationRelativePath.

sourceRevision specifies the revision at which the receiver should expect to find this node. That is, sourceRelativePath at the start of the whole edit andsourceRelativePath at sourceRevision must lie within the same node-rev (aka history-segment). This is just like the #delete().

For a description of replacesRevision, see #addFile().

Throws:
ClientException

complete

void complete()
              throws ClientException
Signal that the edit has been completed successfully. After this method is called, the editor is considered closed.

Throws:
ClientException

abort

void abort()
           throws ClientException
Signal that the edit transmission was not successful. After this method is called, the editor is considered closed.

Throws:
ClientException