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

    Nested Classes 
    Modifier and Type Interface Description
    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

    Modifier and Type Method Description
    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 Details

    • 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