Class SVNUpdateEditor17
- java.lang.Object
-
- org.tmatesoft.svn.core.internal.wc17.SVNUpdateEditor17
-
- All Implemented Interfaces:
ISVNUpdateEditor,ISVNDeltaConsumer,ISVNEditor
public class SVNUpdateEditor17 extends java.lang.Object implements ISVNUpdateEditor
- Version:
- 1.3
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSVNUpdateEditor17.AccumulatedChangeInfoprivate static classSVNUpdateEditor17.AlreadyInTreeConflictInfoprivate static classSVNUpdateEditor17.BumpDirectoryInfoprivate classSVNUpdateEditor17.DirectoryBatonprivate classSVNUpdateEditor17.FileBatonprivate static classSVNUpdateEditor17.MergeFileInfoprivate static classSVNUpdateEditor17.NodeAlreadyConflictedInfo
-
Field Summary
Fields Modifier and Type Field Description private booleanmyAddsAsModificationprivate java.io.FilemyAnchorAbspathprivate ISVNConflictHandlermyConflictHandlerprivate SVNUpdateEditor17.DirectoryBatonmyCurrentDirectoryprivate SVNUpdateEditor17.FileBatonmyCurrentFileprivate SVNDeltaProcessormyDeltaProcessorprivate java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNDirEntry>>myDirEntriesprivate java.lang.String[]myExtensionPatternsprivate SVNExternalsStoremyExternalsStoreprivate java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>>myInheritablePropertiesprivate booleanmyIsCleanCheckoutprivate booleanmyIsDepthStickyprivate booleanmyIsTargetDeletedprivate booleanmyIsUnversionedObstructionsAllowedprivate booleanmyIsUseCommitTimesprivate SVNURLmyReposRootURLprivate java.lang.StringmyReposUuidprivate SVNDepthmyRequestedDepthprivate java.util.Set<java.io.File>mySkippedTreesprivate java.io.FilemySwitchRelpathprivate java.io.FilemyTargetAbspathprivate java.lang.StringmyTargetBasenameprivate longmyTargetRevisionprivate SVNWCContextmyWCContextprivate java.io.FilemyWCRootAbsPathprivate booleanrootOpened
-
Constructor Summary
Constructors Modifier Constructor Description privateSVNUpdateEditor17()SVNUpdateEditor17(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String targetBasename, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRootUrl, java.lang.String reposUuid, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidabortEdit()Aborts the current running editor due to errors occured.voidabsentDir(java.lang.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).private voidabsentEntry(java.lang.String path, SVNNodeKind nodeKind)voidabsentFile(java.lang.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).static SVNUpdateEditor17.AccumulatedChangeInfoaccumulateLastChange(java.io.File localAbspath, SVNProperties entryProps)voidaddDir(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision)Adds a directory.voidaddFile(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision)Adds a file.private SVNUpdateEditor17.AlreadyInTreeConflictInfoalreadyInATreeConflict(java.io.File localAbspath)voidapplyTextDelta(java.lang.String path, java.lang.String expectedChecksum)Starts applying text delta(s) to an opened file.voidchangeDirProperty(java.lang.String name, SVNPropertyValue value)Changes the value of a property of the currently opened/added directory.voidchangeFileProperty(java.lang.String path, java.lang.String propertyName, SVNPropertyValue propertyValue)Changes the value of a property of the currently opened/added file.private SVNSkelcheckTreeConflict(java.io.File localAbspath, ISVNWCDb.SVNWCDbStatus workingStatus, boolean existsInRepos, SVNNodeKind expectedKind, SVNConflictAction action)voidcloseDir()Closes the currently opened directory fixing all changes of its properties and/or entries.SVNCommitInfocloseEdit()Closes this editor finalizing the whole operation the editor was used for.voidcloseFile(java.lang.String path, java.lang.String expectedMd5Digest)Closes the opened file fixing all properties and/or contents changes.voidcompleteConflict(SVNSkel conflict, java.io.File localAbsPath, java.io.File oldReposRelPath, long oldRevision, java.io.File newReposRelPath, SVNNodeKind localKind, SVNNodeKind targetKind)private SVNTreeConflictDescriptioncreateTreeConflict(java.io.File localAbspath, SVNConflictReason reason, SVNConflictAction action, SVNNodeKind theirNodeKind, java.io.File theirRelpath)static ISVNUpdateEditorcreateUpdateEditor(SVNWCContext context, long targetRevision, java.io.File anchorAbspath, java.lang.String targetName, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, boolean useCommitTimes, SVNURL switchURL, SVNDepth depth, boolean depthIsSticky, boolean allowUnversionedObstructions, boolean addsAsModifications, boolean serverPerformsFiltering, boolean cleanCheckout, ISVNDirFetcher dirFetcher, SVNExternalsStore externalsStore, java.lang.String[] preservedExtensions, ISVNConflictHandler conflictHandler)static ISVNUpdateEditorcreateUpdateEditor(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String target, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRoot, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher)voiddeleteEntry(java.lang.String path, long revision)Deletes an entry.private voiddoNotification(java.io.File localAbspath, SVNNodeKind kind, SVNEventAction action, SVNURL url, SVNURL previousURL)longgetTargetRevision()private java.io.FilegetWCRootAbsPath()private voidinitExcludedDirectoryEntries(ISVNDirFetcher dirFetcher)private SVNUpdateEditor17.NodeAlreadyConflictedInfoisNodeAlreadyConflicted(java.io.File localAbspath)private static booleanisNodePresent(ISVNWCDb.SVNWCDbStatus status)private SVNUpdateEditor17.DirectoryBatonmakeDirectoryBaton(java.lang.String path, SVNUpdateEditor17.DirectoryBaton parent, boolean adding)private SVNUpdateEditor17.FileBatonmakeFileBaton(SVNUpdateEditor17.DirectoryBaton parent, java.lang.String path, boolean adding)private voidmaybeBumpDirInfo(SVNUpdateEditor17.BumpDirectoryInfo bdi)private SVNUpdateEditor17.MergeFileInfomergeFile(SVNUpdateEditor17.FileBaton fb, SVNUpdateEditor17.MergeFileInfo mergeFileInfo, SVNProperties actualProps, SVNDate lastChangedDate)voidopenDir(java.lang.String path, long revision)Opens a directory.voidopenFile(java.lang.String path, long revision)Opens a file.voidopenRoot(long revision)Opens the root directory on which the operation was invoked.static SVNWCContext.MergeInfoperformFileMerge(SVNWCContext.MergeInfo mergeInfo, SVNWCContext context, java.io.File localAbsPath, java.io.File wriAbsPath, SvnChecksum newChecksum, SvnChecksum originalChecksum, SVNProperties actualProperties, java.lang.String[] extPatterns, long oldRevision, long targetRevision, SVNProperties propChanges)private voidrememberSkippedTree(java.io.File localAbspath)voidtargetRevision(long revision)Sets the target revision the operation is running for.java.io.OutputStreamtextDeltaChunk(java.lang.String path, SVNDiffWindow diffWindow)Collects a next delta chunk.voidtextDeltaEnd(java.lang.String path)Finalizes collecting text delta(s).
-
-
-
Field Detail
-
myWCContext
private SVNWCContext myWCContext
-
myTargetBasename
private java.lang.String myTargetBasename
-
myAnchorAbspath
private java.io.File myAnchorAbspath
-
myTargetAbspath
private java.io.File myTargetAbspath
-
myExtensionPatterns
private java.lang.String[] myExtensionPatterns
-
myTargetRevision
private long myTargetRevision
-
myRequestedDepth
private SVNDepth myRequestedDepth
-
myIsDepthSticky
private boolean myIsDepthSticky
-
myIsUseCommitTimes
private boolean myIsUseCommitTimes
-
rootOpened
private boolean rootOpened
-
myIsTargetDeleted
private boolean myIsTargetDeleted
-
myIsUnversionedObstructionsAllowed
private boolean myIsUnversionedObstructionsAllowed
-
mySwitchRelpath
private java.io.File mySwitchRelpath
-
myReposRootURL
private SVNURL myReposRootURL
-
myReposUuid
private java.lang.String myReposUuid
-
mySkippedTrees
private java.util.Set<java.io.File> mySkippedTrees
-
myDeltaProcessor
private SVNDeltaProcessor myDeltaProcessor
-
myExternalsStore
private SVNExternalsStore myExternalsStore
-
myCurrentDirectory
private SVNUpdateEditor17.DirectoryBaton myCurrentDirectory
-
myCurrentFile
private SVNUpdateEditor17.FileBaton myCurrentFile
-
myAddsAsModification
private boolean myAddsAsModification
-
myDirEntries
private java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNDirEntry>> myDirEntries
-
myIsCleanCheckout
private boolean myIsCleanCheckout
-
myWCRootAbsPath
private java.io.File myWCRootAbsPath
-
myInheritableProperties
private java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> myInheritableProperties
-
myConflictHandler
private ISVNConflictHandler myConflictHandler
-
-
Constructor Detail
-
SVNUpdateEditor17
private SVNUpdateEditor17()
-
SVNUpdateEditor17
public SVNUpdateEditor17(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String targetBasename, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRootUrl, java.lang.String reposUuid, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher) throws SVNException
- Throws:
SVNException
-
-
Method Detail
-
createUpdateEditor
public static ISVNUpdateEditor createUpdateEditor(SVNWCContext context, long targetRevision, java.io.File anchorAbspath, java.lang.String targetName, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, boolean useCommitTimes, SVNURL switchURL, SVNDepth depth, boolean depthIsSticky, boolean allowUnversionedObstructions, boolean addsAsModifications, boolean serverPerformsFiltering, boolean cleanCheckout, ISVNDirFetcher dirFetcher, SVNExternalsStore externalsStore, java.lang.String[] preservedExtensions, ISVNConflictHandler conflictHandler) throws SVNException
- Throws:
SVNException
-
createUpdateEditor
public static ISVNUpdateEditor createUpdateEditor(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String target, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRoot, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher) throws SVNException
- Throws:
SVNException
-
initExcludedDirectoryEntries
private void initExcludedDirectoryEntries(ISVNDirFetcher dirFetcher) throws SVNException
- Throws:
SVNException
-
targetRevision
public void targetRevision(long revision) throws SVNExceptionDescription copied from interface:ISVNEditorSets the target revision the operation is running for. For example, the target revision to which an update is running.- Specified by:
targetRevisionin interfaceISVNEditor- Parameters:
revision- a revision number- Throws:
SVNException
-
getTargetRevision
public long getTargetRevision()
- Specified by:
getTargetRevisionin interfaceISVNUpdateEditor
-
rememberSkippedTree
private void rememberSkippedTree(java.io.File localAbspath) throws SVNException- Throws:
SVNException
-
getWCRootAbsPath
private java.io.File getWCRootAbsPath() throws SVNException- Throws:
SVNException
-
openRoot
public void openRoot(long revision) throws SVNExceptionDescription copied from interface:ISVNEditorOpens 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 callingISVNEditor.closeDir().- Specified by:
openRootin interfaceISVNEditor- Parameters:
revision- the revision number of the root directory- Throws:
SVNException
-
doNotification
private void doNotification(java.io.File localAbspath, SVNNodeKind kind, SVNEventAction action, SVNURL url, SVNURL previousURL) throws SVNException- Throws:
SVNException
-
alreadyInATreeConflict
private SVNUpdateEditor17.AlreadyInTreeConflictInfo alreadyInATreeConflict(java.io.File localAbspath) throws SVNException
- Throws:
SVNException
-
deleteEntry
public void deleteEntry(java.lang.String path, long revision) throws SVNExceptionDescription copied from interface:ISVNEditorDeletes 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:
deleteEntryin interfaceISVNEditor- Parameters:
path- an entry path relative to the root directory opened byopenRoot()revision- the revision number ofpath- Throws:
SVNException
-
isNodeAlreadyConflicted
private SVNUpdateEditor17.NodeAlreadyConflictedInfo isNodeAlreadyConflicted(java.io.File localAbspath) throws SVNException
- Throws:
SVNException
-
checkTreeConflict
private SVNSkel checkTreeConflict(java.io.File localAbspath, ISVNWCDb.SVNWCDbStatus workingStatus, boolean existsInRepos, SVNNodeKind expectedKind, SVNConflictAction action) throws SVNException
- Throws:
SVNException
-
absentDir
public void absentDir(java.lang.String path) throws SVNExceptionDescription copied from interface:ISVNEditorIndicates 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:
absentDirin interfaceISVNEditor- Parameters:
path- a dir path relative to the root directory opened byopenRoot()- Throws:
SVNException
-
absentFile
public void absentFile(java.lang.String path) throws SVNExceptionDescription copied from interface:ISVNEditorIndicates 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:
absentFilein interfaceISVNEditor- Parameters:
path- a file path relative to the root directory opened byopenRoot()- Throws:
SVNException
-
absentEntry
private void absentEntry(java.lang.String path, SVNNodeKind nodeKind) throws SVNException- Throws:
SVNException
-
addDir
public void addDir(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision) throws SVNExceptionDescription copied from interface:ISVNEditorAdds 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
copyFromPathis not null then it says thatpathis copied fromcopyFromPathlocated incopyFromRevision.- Specified by:
addDirin interfaceISVNEditor- Parameters:
path- a directory path relative to the root directory opened byopenRoot()copyFromPath- an ancestor of the added directorycopyFromRevision- the revision of the ancestor- Throws:
SVNException
-
openDir
public void openDir(java.lang.String path, long revision) throws SVNExceptionDescription copied from interface:ISVNEditorOpens a directory. All property changes as well as entries adding/deletion can be applied to this directory.- Specified by:
openDirin interfaceISVNEditor- Parameters:
path- a directory path relative to the root directory opened byopenRoot()revision- the revision of the directory- Throws:
SVNException
-
changeDirProperty
public void changeDirProperty(java.lang.String name, SVNPropertyValue value) throws SVNExceptionDescription copied from interface:ISVNEditorChanges the value of a property of the currently opened/added directory.- Specified by:
changeDirPropertyin interfaceISVNEditor- Parameters:
name- the name of a property to be changedvalue- new property value- Throws:
SVNException- See Also:
ISVNEditor.openDir(String, long)
-
closeDir
public void closeDir() throws SVNExceptionDescription copied from interface:ISVNEditorCloses 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:
closeDirin interfaceISVNEditor- Throws:
SVNException
-
addFile
public void addFile(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision) throws SVNExceptionDescription copied from interface:ISVNEditorAdds 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
copyFromPathis not null then it says thatpathis copied fromcopyFromPathlocated incopyFromRevision.- Specified by:
addFilein interfaceISVNEditor- Parameters:
path- a file path relative to the root directory opened byopenRoot()copyFromPath- an ancestor of the added filecopyFromRevision- the revision of the ancestor- Throws:
SVNException
-
openFile
public void openFile(java.lang.String path, long revision) throws SVNExceptionDescription copied from interface:ISVNEditorOpens a file. After it's opened, apply delta to its contents or change the file properties.- Specified by:
openFilein interfaceISVNEditor- Parameters:
path- a file path relative to the root directory opened byopenRoot()revision- the revision of the file- Throws:
SVNException
-
changeFileProperty
public void changeFileProperty(java.lang.String path, java.lang.String propertyName, SVNPropertyValue propertyValue) throws SVNExceptionDescription copied from interface:ISVNEditorChanges the value of a property of the currently opened/added file.- Specified by:
changeFilePropertyin interfaceISVNEditor- Parameters:
path- file path relative to the root of this editorpropertyName- property namepropertyValue- property value- Throws:
SVNException
-
closeFile
public void closeFile(java.lang.String path, java.lang.String expectedMd5Digest) throws SVNExceptionDescription copied from interface:ISVNEditorCloses the opened file fixing all properties and/or contents changes.- Specified by:
closeFilein interfaceISVNEditor- Parameters:
path- a file path relative to the root directory opened byopenRoot()expectedMd5Digest- an MD5 checksum for the modified file- Throws:
SVNException- if the calculated upon the actual changed contents checksum does not match the expectedtextChecksum
-
closeEdit
public SVNCommitInfo closeEdit() throws SVNException
Description copied from interface:ISVNEditorCloses this editor finalizing the whole operation the editor was used for. In a commit - sends collected data to commit a transaction.- Specified by:
closeEditin interfaceISVNEditor- Returns:
- a committed revision information
- Throws:
SVNException
-
abortEdit
public void abortEdit() throws SVNExceptionDescription copied from interface:ISVNEditorAborts 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:
abortEditin interfaceISVNEditor- Throws:
SVNException
-
applyTextDelta
public void applyTextDelta(java.lang.String path, java.lang.String expectedChecksum) throws SVNExceptionDescription copied from interface:ISVNDeltaConsumerStarts applying text delta(s) to an opened file.- Specified by:
applyTextDeltain interfaceISVNDeltaConsumer- Parameters:
path- a file path relative to the edit root directoryexpectedChecksum- 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 expectedbaseChecksum
-
textDeltaChunk
public java.io.OutputStream textDeltaChunk(java.lang.String path, SVNDiffWindow diffWindow) throws SVNExceptionDescription copied from interface:ISVNDeltaConsumerCollects 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:
textDeltaChunkin interfaceISVNDeltaConsumer- Parameters:
path- a file path relative to the edit root directorydiffWindow- a next diff window- Returns:
- an output stream
- Throws:
SVNException
-
textDeltaEnd
public void textDeltaEnd(java.lang.String path) throws SVNExceptionDescription copied from interface:ISVNDeltaConsumerFinalizes collecting text delta(s).- Specified by:
textDeltaEndin interfaceISVNDeltaConsumer- Parameters:
path- a file path relative to the edit root directory- Throws:
SVNException
-
makeDirectoryBaton
private SVNUpdateEditor17.DirectoryBaton makeDirectoryBaton(java.lang.String path, SVNUpdateEditor17.DirectoryBaton parent, boolean adding) throws SVNException
- Throws:
SVNException
-
makeFileBaton
private SVNUpdateEditor17.FileBaton makeFileBaton(SVNUpdateEditor17.DirectoryBaton parent, java.lang.String path, boolean adding) throws SVNException
- Throws:
SVNException
-
isNodePresent
private static boolean isNodePresent(ISVNWCDb.SVNWCDbStatus status)
-
createTreeConflict
private SVNTreeConflictDescription createTreeConflict(java.io.File localAbspath, SVNConflictReason reason, SVNConflictAction action, SVNNodeKind theirNodeKind, java.io.File theirRelpath) throws SVNException
- Throws:
SVNException
-
maybeBumpDirInfo
private void maybeBumpDirInfo(SVNUpdateEditor17.BumpDirectoryInfo bdi) throws SVNException
- Throws:
SVNException
-
accumulateLastChange
public static SVNUpdateEditor17.AccumulatedChangeInfo accumulateLastChange(java.io.File localAbspath, SVNProperties entryProps) throws SVNException
- Throws:
SVNException
-
performFileMerge
public static SVNWCContext.MergeInfo performFileMerge(SVNWCContext.MergeInfo mergeInfo, SVNWCContext context, java.io.File localAbsPath, java.io.File wriAbsPath, SvnChecksum newChecksum, SvnChecksum originalChecksum, SVNProperties actualProperties, java.lang.String[] extPatterns, long oldRevision, long targetRevision, SVNProperties propChanges) throws SVNException
- Throws:
SVNException
-
mergeFile
private SVNUpdateEditor17.MergeFileInfo mergeFile(SVNUpdateEditor17.FileBaton fb, SVNUpdateEditor17.MergeFileInfo mergeFileInfo, SVNProperties actualProps, SVNDate lastChangedDate) throws SVNException
- Throws:
SVNException
-
completeConflict
public void completeConflict(SVNSkel conflict, java.io.File localAbsPath, java.io.File oldReposRelPath, long oldRevision, java.io.File newReposRelPath, SVNNodeKind localKind, SVNNodeKind targetKind) throws SVNException
- Throws:
SVNException
-
-