Class EmptyTreeIterator
- java.lang.Object
-
- org.eclipse.jgit.treewalk.AbstractTreeIterator
-
- org.eclipse.jgit.treewalk.EmptyTreeIterator
-
public class EmptyTreeIterator extends AbstractTreeIterator
Iterator over an empty tree (a directory with no files).
-
-
Field Summary
-
Fields inherited from class org.eclipse.jgit.treewalk.AbstractTreeIterator
attributesNode, DEFAULT_PATH_SIZE, mode, parent, path, pathLen, pathOffset, zeroid
-
-
Constructor Summary
Constructors Constructor Description EmptyTreeIterator()
Create a new iterator with no parent.EmptyTreeIterator(AbstractTreeIterator p, byte[] childPath, int childPathOffset)
Create an iterator for a subtree of an existing iterator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
back(int delta)
Move to prior entry, populating this iterator with the entry data.AbstractTreeIterator
createSubtreeIterator(ObjectReader reader)
Create a new iterator for the current entry's subtree.boolean
eof()
Is this tree iterator at its EOF point (no more entries)?boolean
first()
Is this tree iterator positioned on its first entry?ObjectId
getEntryObjectId()
Get the object id of the current entry.boolean
hasId()
Whether the entry has a valid ObjectId.byte[]
idBuffer()
Get the byte array buffer object IDs must be copied out of.int
idOffset()
Get the position withinAbstractTreeIterator.idBuffer()
of this entry's ObjectId.protected boolean
needsStopWalk()
Whether the iterator implementsAbstractTreeIterator.stopWalk()
.void
next(int delta)
Move to next entry, populating this iterator with the entry data.void
reset()
Position this iterator on the first entry.void
stopWalk()
Indicates to the iterator that no more entries will be read.-
Methods inherited from class org.eclipse.jgit.treewalk.AbstractTreeIterator
createEmptyTreeIterator, createSubtreeIterator, ensurePathCapacity, findFile, findFile, getEntryFileMode, getEntryObjectId, getEntryPathBuffer, getEntryPathHashCode, getEntryPathLength, getEntryPathString, getEntryRawMode, getName, getNameLength, getNameOffset, growPath, idEqual, isWorkTree, pathCompare, pathCompare, skip, toString
-
-
-
-
Constructor Detail
-
EmptyTreeIterator
public EmptyTreeIterator()
Create a new iterator with no parent.
-
EmptyTreeIterator
public EmptyTreeIterator(AbstractTreeIterator p, byte[] childPath, int childPathOffset)
Create an iterator for a subtree of an existing iterator.The caller is responsible for setting up the path of the child iterator.
- Parameters:
p
- parent tree iterator.childPath
- path array to be used by the child iterator. This path must contain the path from the top of the walk to the first child and must end with a '/'.childPathOffset
- position withinchildPath
where the child can insert its data. The value atchildPath[childPathOffset-1]
must be '/'.
-
-
Method Detail
-
createSubtreeIterator
public AbstractTreeIterator createSubtreeIterator(ObjectReader reader) throws IncorrectObjectTypeException, IOException
Create a new iterator for the current entry's subtree.The parent reference of the iterator must be
this
, otherwise the caller would not be able to exit out of the subtree iterator correctly and return to continue walkingthis
.- Specified by:
createSubtreeIterator
in classAbstractTreeIterator
- Parameters:
reader
- reader to load the tree data from.- Returns:
- a new parser that walks over the current subtree.
- Throws:
IncorrectObjectTypeException
- the current entry is not actually a tree and cannot be parsed as though it were a tree.IOException
- a loose object or pack file could not be read.
-
hasId
public boolean hasId()
Whether the entry has a valid ObjectId.- Specified by:
hasId
in classAbstractTreeIterator
- Returns:
true
if the entry has a valid ObjectId.
-
getEntryObjectId
public ObjectId getEntryObjectId()
Get the object id of the current entry.- Overrides:
getEntryObjectId
in classAbstractTreeIterator
- Returns:
- an object id for the current entry.
-
idBuffer
public byte[] idBuffer()
Get the byte array buffer object IDs must be copied out of.The id buffer contains the bytes necessary to construct an ObjectId for the current entry of this iterator. The buffer can be the same buffer for all entries, or it can be a unique buffer per-entry. Implementations are encouraged to expose their private buffer whenever possible to reduce garbage generation and copying costs.
- Specified by:
idBuffer
in classAbstractTreeIterator
- Returns:
- byte array the implementation stores object IDs within.
- See Also:
AbstractTreeIterator.getEntryObjectId()
-
idOffset
public int idOffset()
Get the position withinAbstractTreeIterator.idBuffer()
of this entry's ObjectId.- Specified by:
idOffset
in classAbstractTreeIterator
- Returns:
- offset into the array returned by
AbstractTreeIterator.idBuffer()
where the ObjectId must be copied out of.
-
reset
public void reset()
Position this iterator on the first entry. The default implementation of this method usesback(1)
untilfirst()
is true. This is most likely not the most efficient method of repositioning the iterator to its first entry, so subclasses are strongly encouraged to override the method.- Overrides:
reset
in classAbstractTreeIterator
-
first
public boolean first()
Is this tree iterator positioned on its first entry?An iterator is positioned on the first entry if
back(1)
would be an invalid request as there is no entry before the current one.An empty iterator (one with no entries) will be
first() && eof()
.- Specified by:
first
in classAbstractTreeIterator
- Returns:
- true if the iterator is positioned on the first entry.
-
eof
public boolean eof()
Is this tree iterator at its EOF point (no more entries)?An iterator is at EOF if there is no current entry.
- Specified by:
eof
in classAbstractTreeIterator
- Returns:
- true if we have walked all entries and have none left.
-
next
public void next(int delta) throws CorruptObjectException
Move to next entry, populating this iterator with the entry data.The delta indicates how many moves forward should occur. The most common delta is 1 to move to the next entry.
Implementations must populate the following members:
AbstractTreeIterator.mode
AbstractTreeIterator.path
(fromAbstractTreeIterator.pathOffset
toAbstractTreeIterator.pathLen
)AbstractTreeIterator.pathLen
AbstractTreeIterator.idBuffer()
andAbstractTreeIterator.idOffset()
when demanded.- Specified by:
next
in classAbstractTreeIterator
- Parameters:
delta
- number of entries to move the iterator by. Must be a positive, non-zero integer.- Throws:
CorruptObjectException
- the tree is invalid.
-
back
public void back(int delta) throws CorruptObjectException
Move to prior entry, populating this iterator with the entry data.The delta indicates how many moves backward should occur.The most common delta is 1 to move to the prior entry.
Implementations must populate the following members:
AbstractTreeIterator.mode
AbstractTreeIterator.path
(fromAbstractTreeIterator.pathOffset
toAbstractTreeIterator.pathLen
)AbstractTreeIterator.pathLen
AbstractTreeIterator.idBuffer()
andAbstractTreeIterator.idOffset()
when demanded.- Specified by:
back
in classAbstractTreeIterator
- Parameters:
delta
- number of entries to move the iterator by. Must be a positive, non-zero integer.- Throws:
CorruptObjectException
- the tree is invalid.
-
stopWalk
public void stopWalk()
Indicates to the iterator that no more entries will be read.This is only invoked by TreeWalk when the iteration is aborted early due to a
StopWalkException
being thrown from within a TreeFilter.- Overrides:
stopWalk
in classAbstractTreeIterator
-
needsStopWalk
protected boolean needsStopWalk()
Whether the iterator implementsAbstractTreeIterator.stopWalk()
.- Overrides:
needsStopWalk
in classAbstractTreeIterator
- Returns:
true
if the iterator implementsAbstractTreeIterator.stopWalk()
.
-
-