org.tmatesoft.svn.core.replicator

Class SVNReplicationEditor

Implemented Interfaces:
ISVNDeltaConsumer, ISVNEditor

public class SVNReplicationEditor
extends Object
implements ISVNEditor

The SVNReplicationEditor is an editor implementation used by a repository replicator as a bridge between an update editor for the source repository and a commit editor of the target one. This editor is provided to an update method of a source SVNRepository driver to properly translate the calls of that driver to calls to a commit editor of the destination SVNRepository driver.
Version:
1.1.1
Author:
TMate Software Ltd.
Since:
1.1.0
See Also:
SVNRepository

Constructor Summary

SVNReplicationEditor(SVNRepository repository, ISVNEditor commitEditor, SVNLogEntry revision)
Creates a new replication editor.

Method Summary

void
abortEdit()
Aborts the current running editor due to errors occured.
void
absentDir(String path)
Indicates that a path is present as a subdirectory in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).
void
absentFile(String path)
Indicates that a path is present as a file in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).
void
addDir(String path, String copyFromPath, long copyFromRevision)
Adds a directory.
void
addFile(String path, String copyFromPath, long copyFromRevision)
Adds a file.
void
applyTextDelta(String path, String baseChecksum)
Starts applying text delta(s) to an opened file.
void
changeDirProperty(String name, String value)
Changes the value of a property of the currently "opened"/"added" directory.
void
changeFileProperty(String path, String name, String value)
Changes the value of a property of an opened file.
void
closeDir()
Closes the currently opened directory fixing all changes of its properties and/or entries.
SVNCommitInfo
closeEdit()
Closes this editor finalizing the whole operation the editor was used for.
void
closeFile(String path, String textChecksum)
Closes the opened file fixing all properties and/or contents changes.
void
deleteEntry(String path, long revision)
Deletes an entry.
SVNCommitInfo
getCommitInfo()
Returns commit information on the revision committed to the replication destination repository.
void
openDir(String path, long revision)
Opens a directory.
void
openFile(String path, long revision)
Opens a file.
void
openRoot(long revision)
Opens the root directory on which the operation was invoked.
void
targetRevision(long revision)
Sets the target revision the operation is running for.
OutputStream
textDeltaChunk(String path, SVNDiffWindow diffWindow)
Collects a next delta chunk.
void
textDeltaEnd(String path)
Finalizes collecting text delta(s).

Constructor Details

SVNReplicationEditor

public SVNReplicationEditor(SVNRepository repository,
                            ISVNEditor commitEditor,
                            SVNLogEntry revision)
Creates a new replication editor.

repository must be created for the root location of the source repository which is to be replicated.

Parameters:
repository - a source repository
commitEditor - a commit editor received from the destination repository driver (which also must be point to the root location of the destination repository)
revision - log information of the revision to be copied

Method Details

abortEdit

public void abortEdit()
            throws SVNException
Aborts the current running editor due to errors occured.

If an exception is thrown from an editor's method, call this method to abort the editor.

Specified by:
abortEdit in interface ISVNEditor
Throws:
SVNException -

absentDir

public void absentDir(String path)
            throws SVNException
Indicates that a path is present as a subdirectory in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).
Specified by:
absentDir in interface ISVNEditor
Parameters:
path - a dir path relative to the root directory opened by openRoot()
Throws:
SVNException -

absentFile

public void absentFile(String path)
            throws SVNException
Indicates that a path is present as a file in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).
Specified by:
absentFile in interface ISVNEditor
Parameters:
path - a file path relative to the root directory opened by openRoot()
Throws:
SVNException -

addDir

public void addDir(String path,
                   String copyFromPath,
                   long copyFromRevision)
            throws SVNException
Adds a directory.

In a commit - adds a new directory to a repository. In an update - locally adds a directory that was added in the repository. In a status - informs about a new directory scheduled for addition.

If copyFromPath is not null then it says that path is copied from copyFromPath located in copyFromRevision.

Specified by:
addDir in interface ISVNEditor
Parameters:
path - a directory path relative to the root directory opened by openRoot()
copyFromPath - an ancestor of the added directory
copyFromRevision - the revision of the ancestor
Throws:
SVNException -

addFile

public void addFile(String path,
                    String copyFromPath,
                    long copyFromRevision)
            throws SVNException
Adds a file.

In a commit - adds a new file to a repository. In an update - locally adds a file that was added in the repository. In a status - informs about a new file scheduled for addition.

If copyFromPath is not null then it says that path is copied from copyFromPath located in copyFromRevision.

Specified by:
addFile in interface ISVNEditor
Parameters:
path - a file path relative to the root directory opened by openRoot()
copyFromPath - an ancestor of the added file
copyFromRevision - the revision of the ancestor
Throws:
SVNException -

applyTextDelta

public void applyTextDelta(String path,
                           String baseChecksum)
            throws SVNException
Starts applying text delta(s) to an opened file.
Specified by:
applyTextDelta in interface ISVNDeltaConsumer
Parameters:
path - a file path relative to the edit root directory
baseChecksum - an MD5 checksum for the base file contents (before the file is changed)
Throws:
SVNException - if the calculated base file checksum didn't match the expected baseChecksum

changeDirProperty

public void changeDirProperty(String name,
                              String value)
            throws SVNException
Changes the value of a property of the currently "opened"/"added" directory.
Specified by:
changeDirProperty in interface ISVNEditor
Parameters:
name - the name of a property to be changed
value - new property value
Throws:
SVNException -

changeFileProperty

public void changeFileProperty(String path,
                               String name,
                               String value)
            throws SVNException
Changes the value of a property of an opened file.
Specified by:
changeFileProperty in interface ISVNEditor
Parameters:
path - a file path relative to the root directory opened by openRoot()
name - a file property name
value - a new value for the property
Throws:
SVNException -

closeDir

public void closeDir()
            throws SVNException
Closes the currently opened directory fixing all changes of its properties and/or entries. Closing a directory picks up an editor to a parent directory.
Specified by:
closeDir in interface ISVNEditor
Throws:
SVNException -

closeEdit

public SVNCommitInfo closeEdit()
            throws SVNException
Closes this editor finalizing the whole operation the editor was used for. In a commit - sends collected data to commit a transaction.
Specified by:
closeEdit in interface ISVNEditor
Returns:
a committed revision information
Throws:
SVNException -

closeFile

public void closeFile(String path,
                      String textChecksum)
            throws SVNException
Closes the opened file fixing all properties and/or contents changes.
Specified by:
closeFile in interface ISVNEditor
Parameters:
path - a file path relative to the root directory opened by openRoot()
textChecksum - an MD5 checksum for the modified file
Throws:
SVNException - if the calculated upon the actual changed contents checksum does not match the expected textChecksum

deleteEntry

public void deleteEntry(String path,
                        long revision)
            throws SVNException
Deletes an entry.

In a commit - deletes an entry from a repository. In an update - deletes an entry locally (since it has been deleted in the repository). In a status - informs that an entry has been deleted.

Specified by:
deleteEntry in interface ISVNEditor
Parameters:
path - an entry path relative to the root directory opened by openRoot()
revision - the revision number of path
Throws:
SVNException -

getCommitInfo

public SVNCommitInfo getCommitInfo()
Returns commit information on the revision committed to the replication destination repository.
Returns:
commit info (revision, author, date)

openDir

public void openDir(String path,
                    long revision)
            throws SVNException
Opens a directory. All property changes as well as entries adding/deletion can be applied to this directory.
Specified by:
openDir in interface ISVNEditor
Parameters:
path - a directory path relative to the root directory opened by openRoot()
revision - the revision of the directory
Throws:
SVNException -

openFile

public void openFile(String path,
                     long revision)
            throws SVNException
Opens a file. After it's opened, apply delta to its contents or change the file properties.
Specified by:
openFile in interface ISVNEditor
Parameters:
path - a file path relative to the root directory opened by openRoot()
revision - the revision of the file
Throws:
SVNException -

openRoot

public void openRoot(long revision)
            throws SVNException
Opens the root directory on which the operation was invoked. All property changes as well as entries adding/deletion will be applied to this root directory. When coming back up to this root (after traversing the entire tree) you should close the root by calling ISVNEditor.closeDir().
Specified by:
openRoot in interface ISVNEditor
Parameters:
revision - the revision number of the root directory
Throws:
SVNException -

targetRevision

public void targetRevision(long revision)
            throws SVNException
Sets the target revision the operation is running for. For example, the target revision to which an update is running.
Specified by:
targetRevision in interface ISVNEditor
Parameters:
revision - a revision number
Throws:
SVNException -

textDeltaChunk

public OutputStream textDeltaChunk(String path,
                                   SVNDiffWindow diffWindow)
            throws SVNException
Collects a next delta chunk. The return type is nomore relevant and is left only for backward compatibility. So, the return value may be just null. Otherwise if it's not null, the stream will be immediately closed.

If there are more than one windows for the file, this method is called several times.

Specified by:
textDeltaChunk in interface ISVNDeltaConsumer
Parameters:
path - a file path relative to the edit root directory
diffWindow - a next diff window
Returns:
an output stream
Throws:
SVNException -

textDeltaEnd

public void textDeltaEnd(String path)
            throws SVNException
Finalizes collecting text delta(s).
Specified by:
textDeltaEnd in interface ISVNDeltaConsumer
Parameters:
path - a file path relative to the edit root directory
Throws:
SVNException -

Copyright © 2004-2006 TMate Software Ltd. All Rights Reserved.