ReceiveCommand.filter: Accept Iterable PreReceiveHook is given a Collection<ReceiveCommand> and it can be very useful here to call ReceiveCommand.filter(cmds, NOT_ATTEMPTED). Overload filter to accept both Iterable and List. Keep backwards binary compatibility for List by upcasting to Iterable. Change-Id: Ib1341876c703670945ef209edc8259715ee86c26
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java index 7c44dba..0cc7e5c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceiveCommand.java
@@ -46,6 +46,7 @@ import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.eclipse.jgit.internal.JGitText; @@ -127,6 +128,31 @@ public static enum Result { } /** + * Filter a collection of commands according to result. + * + * @param in + * commands to filter. + * @param want + * desired status to filter by. + * @return a copy of the command list containing only those commands with + * the desired status. + * @since 4.3 + */ + public static List<ReceiveCommand> filter(Iterable<ReceiveCommand> in, + Result want) { + List<ReceiveCommand> r; + if (in instanceof Collection) + r = new ArrayList<>(((Collection<?>) in).size()); + else + r = new ArrayList<>(); + for (ReceiveCommand cmd : in) { + if (cmd.getResult() == want) + r.add(cmd); + } + return r; + } + + /** * Filter a list of commands according to result. * * @param commands @@ -138,13 +164,8 @@ public static enum Result { * @since 2.0 */ public static List<ReceiveCommand> filter(List<ReceiveCommand> commands, - final Result want) { - List<ReceiveCommand> r = new ArrayList<ReceiveCommand>(commands.size()); - for (final ReceiveCommand cmd : commands) { - if (cmd.getResult() == want) - r.add(cmd); - } - return r; + Result want) { + return filter((Iterable<ReceiveCommand>) commands, want); } private final ObjectId oldId;