Class RefMap
- java.lang.Object
-
- java.util.AbstractMap<java.lang.String,Ref>
-
- org.eclipse.jgit.util.RefMap
-
- All Implemented Interfaces:
java.util.Map<java.lang.String,Ref>
public class RefMap extends java.util.AbstractMap<java.lang.String,Ref>
Specialized Map to present aRefDatabasenamespace.Although not declared as a
SortedMap, iterators from this map's projections always return references inRefComparatorordering. The map's internal representation is a sorted array ofRefobjects, which means lookup and replacement is O(log N), while insertion and removal can be as expensive as O(N + log N) while the list expands or contracts. Since this is not a general map implementation, all entries must be keyed by the reference name.This class is really intended as a helper for
RefDatabase, which needs to perform a merge-join of three sortedRefLists in order to present the unified namespace of the packed-refs file, the loose refs/ directory tree, and the resolved form of any symbolic references.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classRefMap.Entprivate classRefMap.SetIterator
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<java.util.Map.Entry<java.lang.String,Ref>>entrySet(package private) RefList<Ref>looseImmutable collection of the loose references at construction time.(package private) RefList<Ref>packedImmutable collection of the packed references at construction time.(package private) java.lang.StringprefixPrefix denoting the reference subspace this map contains.(package private) RefList<Ref>resolvedImmutable collection of resolved symbolic references.(package private) intsize(package private) booleansizeIsValid
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancontainsKey(java.lang.Object name)java.util.Set<java.util.Map.Entry<java.lang.String,Ref>>entrySet()Refget(java.lang.Object key)booleanisEmpty()Refput(java.lang.String keyName, Ref value)Refremove(java.lang.Object key)(package private) java.lang.StringtoMapKey(Ref ref)static java.util.stream.Collector<Ref,?,RefMap>toRefMap(java.util.function.BinaryOperator<Ref> mergeFunction)Create aCollectorforRef.private java.lang.StringtoRefName(java.lang.String name)java.lang.StringtoString()-
Methods inherited from class java.util.AbstractMap
clear, clone, containsValue, equals, hashCode, keySet, putAll, size, values
-
-
-
-
Field Detail
-
prefix
final java.lang.String prefix
Prefix denoting the reference subspace this map contains.All reference names in this map must start with this prefix. If the prefix is not the empty string, it must end with a '/'.
-
loose
RefList<Ref> loose
Immutable collection of the loose references at construction time.If an entry appears here and in
packed, this entry must take precedence, as its more current. Symbolic references in this collection are typically unresolved, so they only tell us who their target is, but not the current value of the target.
-
resolved
RefList<Ref> resolved
Immutable collection of resolved symbolic references.This collection contains only the symbolic references we were able to resolve at map construction time. Other loose references must be read from
loose. Every entry in this list must be matched by an entry inloose, otherwise it might be omitted by the map.
-
size
int size
-
sizeIsValid
boolean sizeIsValid
-
entrySet
private java.util.Set<java.util.Map.Entry<java.lang.String,Ref>> entrySet
-
-
Constructor Detail
-
RefMap
public RefMap()
Construct an empty map with a small initial capacity.
-
RefMap
public RefMap(java.lang.String prefix, RefList<? extends Ref> packed, RefList<? extends Ref> loose, RefList<? extends Ref> resolved)Construct a map to merge 3 collections together.- Parameters:
prefix- prefix used to slice the lists down. Only references whose names start with this prefix will appear to reside in the map. Must not be null, use""(the empty string) to select all list items.packed- items from the packed reference list, this is the last list searched.loose- items from the loose reference list, this list overridespackedif a name appears in both.resolved- resolved symbolic references. This list overrides the prior listloose, if an item appears in both. Items in this list must also appear inloose.
-
-
Method Detail
-
containsKey
public boolean containsKey(java.lang.Object name)
-
get
public Ref get(java.lang.Object key)
-
remove
public Ref remove(java.lang.Object key)
-
isEmpty
public boolean isEmpty()
-
entrySet
public java.util.Set<java.util.Map.Entry<java.lang.String,Ref>> entrySet()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.util.AbstractMap<java.lang.String,Ref>
-
toRefMap
public static java.util.stream.Collector<Ref,?,RefMap> toRefMap(java.util.function.BinaryOperator<Ref> mergeFunction)
Create aCollectorforRef.- Parameters:
mergeFunction-- Returns:
CollectorforRef- Since:
- 5.4
-
toRefName
private java.lang.String toRefName(java.lang.String name)
-
toMapKey
java.lang.String toMapKey(Ref ref)
-
-