package org.eclipse.jgit.revplot;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import org.eclipse.jgit.JGitText;
+import org.eclipse.jgit.errors.IncorrectObjectTypeException;
+import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Ref;
@Override
protected RevCommit createCommit(final AnyObjectId id) {
- return new PlotCommit(id, getTags(id));
+ return new PlotCommit(id);
}
- /**
- * @param commitId
- * @return return the list of knows tags referring to this commit
- */
- protected Ref[] getTags(final AnyObjectId commitId) {
+ @Override
+ public RevCommit next() throws MissingObjectException,
+ IncorrectObjectTypeException, IOException {
+ PlotCommit<?> pc = (PlotCommit) super.next();
+ if (pc != null)
+ pc.refs = getTags(pc);
+ return pc;
+ }
+
+ private Ref[] getTags(final AnyObjectId commitId) {
Collection<Ref> list = reverseRefMap.get(commitId);
Ref[] tags;
if (list == null)
tags = null;
else {
tags = list.toArray(new Ref[list.size()]);
- // TODO hotfix, this results in a loop and consequently stack overflow
- // when opening the history view in EGit
- // Arrays.sort(tags, new PlotRefComparator());
+ Arrays.sort(tags, new PlotRefComparator());
}
return tags;
}