Mercurial > jhg
comparison src/org/tmatesoft/hg/core/HgChangesetTreeHandler.java @ 403:2747b0723867
FIXMEs: work on exceptions and javadoc
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 05 Mar 2012 14:50:51 +0100 |
parents | 994b5813a925 |
children | 9c9c442b5f2e |
comparison
equal
deleted
inserted
replaced
402:1fcc7f7b6d65 | 403:2747b0723867 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2011 TMate Software Ltd | 2 * Copyright (c) 2011-2012 TMate Software Ltd |
3 * | 3 * |
4 * This program is free software; you can redistribute it and/or modify | 4 * This program is free software; you can redistribute it and/or modify |
5 * it under the terms of the GNU General Public License as published by | 5 * it under the terms of the GNU General Public License as published by |
6 * the Free Software Foundation; version 2 of the License. | 6 * the Free Software Foundation; version 2 of the License. |
7 * | 7 * |
20 | 20 |
21 import org.tmatesoft.hg.util.CancelledException; | 21 import org.tmatesoft.hg.util.CancelledException; |
22 import org.tmatesoft.hg.util.Pair; | 22 import org.tmatesoft.hg.util.Pair; |
23 | 23 |
24 /** | 24 /** |
25 * | 25 * Handler to iterate file history (generally, any revlog) with access to parent-child relations between changesets. |
26 * | |
27 * @see HgLogCommand#execute(HgChangesetTreeHandler) | |
28 * | |
26 * @author Artem Tikhomirov | 29 * @author Artem Tikhomirov |
27 * @author TMate Software Ltd. | 30 * @author TMate Software Ltd. |
28 */ | 31 */ |
29 public interface HgChangesetTreeHandler { | 32 public interface HgChangesetTreeHandler { |
30 /** | 33 /** |
31 * @param entry access to various pieces of information about current tree node. Instances might be | 34 * @param entry access to various pieces of information about current tree node. Instances might be |
32 * reused across calls and shall not be kept by client's code | 35 * reused across calls and shall not be kept by client's code |
36 * @throws HgException allows implementers propagate errors from {@link TreeElement} or other parts of the library. | |
33 * @throws HgCallbackTargetException.Wrap wrapper object for any exception user code may produce. Wrapped exception would get re-thrown with {@link HgCallbackTargetException} | 37 * @throws HgCallbackTargetException.Wrap wrapper object for any exception user code may produce. Wrapped exception would get re-thrown with {@link HgCallbackTargetException} |
34 * @throws CancelledException if execution of the operation was cancelled | 38 * @throws CancelledException if execution of the operation was cancelled |
35 */ | 39 */ |
36 public void next(HgChangesetTreeHandler.TreeElement entry) throws HgCallbackTargetException.Wrap, CancelledException; | 40 public void next(HgChangesetTreeHandler.TreeElement entry) throws HgException, HgCallbackTargetException.Wrap, CancelledException; |
37 | 41 |
38 interface TreeElement { | 42 interface TreeElement { |
39 /** | 43 /** |
40 * Revision of the revlog being iterated. For example, when walking file history, return value represents file revisions. | 44 * Revision of the revlog being iterated. For example, when walking file history, return value represents file revisions. |
41 * | 45 * |
42 * @return revision of the revlog being iterated. | 46 * @return revision of the revlog being iterated. |
47 * @throws HgException to indicate failure dealing with Mercurial data | |
43 */ | 48 */ |
44 public Nodeid fileRevision(); | 49 public Nodeid fileRevision() throws HgException; |
45 | 50 |
46 /** | 51 /** |
47 * @return changeset associated with the current revision | 52 * @return changeset associated with the current revision |
48 * @throws HgException indicates failure dealing with Mercurial data | 53 * @throws HgException to indicate failure dealing with Mercurial data |
49 */ | 54 */ |
50 public HgChangeset changeset() throws HgException; | 55 public HgChangeset changeset() throws HgException; |
51 | 56 |
52 /** | 57 /** |
53 * Lightweight alternative to {@link #changeset()}, identifies changeset in which current file node has been modified | 58 * Lightweight alternative to {@link #changeset()}, identifies changeset in which current file node has been modified |
54 * @return changeset {@link Nodeid} | 59 * @return changeset {@link Nodeid revision} |
60 * @throws HgException to indicate failure dealing with Mercurial data | |
55 */ | 61 */ |
56 public Nodeid changesetRevision(); | 62 public Nodeid changesetRevision() throws HgException; |
57 | 63 |
58 /** | 64 /** |
59 * Node, these are not necessarily in direct relation to parents of changeset from {@link #changeset()} | 65 * Node, these are not necessarily in direct relation to parents of changeset from {@link #changeset()} |
60 * @return changesets that correspond to parents of the current file node, either pair element may be <code>null</code>. | 66 * @return changesets that correspond to parents of the current file node, either pair element may be <code>null</code>. |
61 * @throws HgException indicates failure dealing with Mercurial data | 67 * @throws HgException to indicate failure dealing with Mercurial data |
62 */ | 68 */ |
63 public Pair<HgChangeset, HgChangeset> parents() throws HgException; | 69 public Pair<HgChangeset, HgChangeset> parents() throws HgException; |
64 | 70 |
65 /** | 71 /** |
66 * Lightweight alternative to {@link #parents()}, give {@link Nodeid nodeids} only | 72 * Lightweight alternative to {@link #parents()}, give {@link Nodeid nodeids} only |
67 * @return two values, neither is <code>null</code>, use {@link Nodeid#isNull()} to identify parent not set | 73 * @return two values, neither is <code>null</code>, use {@link Nodeid#isNull()} to identify parent not set |
74 * @throws HgException to indicate failure dealing with Mercurial data | |
68 */ | 75 */ |
69 public Pair<Nodeid, Nodeid> parentRevisions(); | 76 public Pair<Nodeid, Nodeid> parentRevisions() throws HgException; |
70 | 77 |
71 /** | 78 /** |
72 * Changes that originate from the given change and bear it as their parent. | 79 * Changes that originate from the given change and bear it as their parent. |
73 * @return collection (possibly empty) of immediate children of the change | 80 * @return collection (possibly empty) of immediate children of the change |
74 * @throws HgException indicates failure dealing with Mercurial data | 81 * @throws HgException to indicate failure dealing with Mercurial data |
75 */ | 82 */ |
76 public Collection<HgChangeset> children() throws HgException; | 83 public Collection<HgChangeset> children() throws HgException; |
77 | 84 |
78 /** | 85 /** |
79 * Lightweight alternative to {@link #children()}. | 86 * Lightweight alternative to {@link #children()}. |
80 * @return never <code>null</code> | 87 * @return never <code>null</code> |
88 * @throws HgException to indicate failure dealing with Mercurial data | |
81 */ | 89 */ |
82 public Collection<Nodeid> childRevisions(); | 90 public Collection<Nodeid> childRevisions() throws HgException; |
83 } | 91 } |
84 } | 92 } |