SVNKit Home

org.tmatesoft.svn.core.replicator
Class SVNReplicationEditor

java.lang.Object
  extended byorg.tmatesoft.svn.core.replicator.SVNReplicationEditor
All 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.

Since:
1.1.0
Version:
1.1.1
Author:
TMate Software Ltd.
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).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

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 Detail

targetRevision

public void targetRevision(long revision)
                    throws SVNException
Description copied from interface: ISVNEditor
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

openRoot

public void openRoot(long revision)
              throws SVNException
Description copied from interface: ISVNEditor
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

deleteEntry

public void deleteEntry(String path,
                        long revision)
                 throws SVNException
Description copied from interface: ISVNEditor
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

absentDir

public void absentDir(String path)
               throws SVNException
Description copied from interface: ISVNEditor
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
Description copied from interface: ISVNEditor
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
Description copied from interface: ISVNEditor
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

openDir

public void openDir(String path,
                    long revision)
             throws SVNException
Description copied from interface: ISVNEditor
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

changeDirProperty

public void changeDirProperty(String name,
                              String value)
                       throws SVNException
Description copied from interface: ISVNEditor
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
See Also:
ISVNEditor.openDir(String, long)

closeDir

public void closeDir()
              throws SVNException
Description copied from interface: ISVNEditor
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

addFile

public void addFile(String path,
                    String copyFromPath,
                    long copyFromRevision)
             throws SVNException
Description copied from interface: ISVNEditor
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

openFile

public void openFile(String path,
                     long revision)
              throws SVNException
Description copied from interface: ISVNEditor
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

applyTextDelta

public void applyTextDelta(String path,
                           String baseChecksum)
                    throws SVNException
Description copied from interface: ISVNDeltaConsumer
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

textDeltaChunk

public OutputStream textDeltaChunk(String path,
                                   SVNDiffWindow diffWindow)
                            throws SVNException
Description copied from interface: ISVNDeltaConsumer
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
Description copied from interface: ISVNDeltaConsumer
Finalizes collecting text delta(s).

Specified by:
textDeltaEnd in interface ISVNDeltaConsumer
Parameters:
path - a file path relative to the edit root directory
Throws:
SVNException

changeFileProperty

public void changeFileProperty(String path,
                               String name,
                               String value)
                        throws SVNException
Description copied from interface: ISVNEditor
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

closeFile

public void closeFile(String path,
                      String textChecksum)
               throws SVNException
Description copied from interface: ISVNEditor
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

closeEdit

public SVNCommitInfo closeEdit()
                        throws SVNException
Description copied from interface: ISVNEditor
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

abortEdit

public void abortEdit()
               throws SVNException
Description copied from interface: ISVNEditor
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

getCommitInfo

public SVNCommitInfo getCommitInfo()
Returns commit information on the revision committed to the replication destination repository.

Returns:
commit info (revision, author, date)

SVNKit Home

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