Robin Rosenberg [off-list ref] wrote:
quoted hunk ↗ jump to hunk
@@ -952,6 +955,37 @@ public Ref peel(final Ref ref) {
}
/**
+ * @return a map with all objects referenced by a peeled ref.
+ */
+ public Map<AnyObjectId, Set<Ref>> getAllRefsByPeeledObjectId() {
+ Map<String, Ref> allRefs = getAllRefs();
+ Map<AnyObjectId, Set<Ref>> ret = new HashMap<AnyObjectId, Set<Ref>>(allRefs.size());
+ for (Ref ref : allRefs.values()) {
+ if (ref == null)
+ continue;
How did we get a null Ref inside the allRefs collection?
+ if (!ref.isPeeled()) {
+ ref = peel(ref);
+ allRefs.put(ref.getOrigName(), ref);
Hmm. Mutating a HashMap while you are traversing it with an Iterator
is *not* a good idea. Its a ConcurrentModificationException waiting
to happen.
--
Shawn.