summaryrefslogtreecommitdiff
path: root/platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java')
-rw-r--r--platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java17
1 files changed, 11 insertions, 6 deletions
diff --git a/platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java b/platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java
index 4532146f9b4a..33053ffe4ecf 100644
--- a/platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java
+++ b/platform/dvcs-api/src/com/intellij/dvcs/push/OutgoingCommitsProvider.java
@@ -21,15 +21,20 @@ import org.jetbrains.annotations.NotNull;
/**
* Provider for outgoing commits
*/
-public abstract class OutgoingCommitsProvider {
+public abstract class OutgoingCommitsProvider<Repo extends Repository, Source extends PushSource, Target extends PushTarget> {
/**
- * Collect outgoing commits or errors for selected repo for specified {@link PushSpec} and store to {@link OutgoingResult}
+ * Collect either outgoing commits or errors for the given repository and {@link PushSpec}.
*
- * @param initial true for first commits loading, which identify that all inside actions should be silent
- * and do not ask user about smth, a.e authorization request
+ * @param initial true for the first attempt to load commits, which happens when the push dialog just appears on the screen.
+ * If later the user modifies the push target, commits are reloaded, and {@code initial} is false.
+ * <br/>
+ * Implementations should make sure that if {@code initial} is true, no user interaction is allowed
+ * (to avoid suddenly throwing dialogs into user's face).
+ * E.g. if authentication is needed to collect outgoing changes, then the method should silently show the corresponding
+ * request in the error field of the OutgoingResult.
*/
@NotNull
- public abstract OutgoingResult getOutgoingCommits(@NotNull Repository repository,
- @NotNull PushSpec pushSpec, boolean initial);
+ public abstract OutgoingResult getOutgoingCommits(@NotNull Repo repository, @NotNull PushSpec<Source, Target> pushSpec, boolean initial);
+
}