Add extension point to register JGit PreUploadHooks

Very similar to the PostReceiveHook change that Saša made in
I0212eab6e4867819ebe7ecc7fc5532c26bb82282, it is conceivable that
a plugin may want to attach a PreUploadHook, such as for displaying
messages to a user.

Change-Id: If8e8f4e0b3774e4360048b7d3719d10f66719c78
This commit is contained in:
Doug Kelly
2014-05-08 17:35:07 -05:00
committed by Doug Kelly
parent 624f7f0b19
commit 283f38a2c3
3 changed files with 19 additions and 1 deletions

View File

@@ -51,6 +51,8 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.PostReceiveHook;
import org.eclipse.jgit.transport.PostReceiveHookChain;
import org.eclipse.jgit.transport.PreUploadHook;
import org.eclipse.jgit.transport.PreUploadHookChain;
import org.eclipse.jgit.transport.ReceivePack;
import org.eclipse.jgit.transport.UploadPack;
import org.eclipse.jgit.transport.resolver.ReceivePackFactory;
@@ -188,15 +190,20 @@ public class GitOverHttpServlet extends GitServlet {
static class UploadFactory implements UploadPackFactory<HttpServletRequest> {
private final TransferConfig config;
private DynamicSet<PreUploadHook> preUploadHooks;
@Inject
UploadFactory(TransferConfig tc) {
UploadFactory(TransferConfig tc,
DynamicSet<PreUploadHook> preUploadHooks) {
this.config = tc;
this.preUploadHooks = preUploadHooks;
}
@Override
public UploadPack create(HttpServletRequest req, Repository repo) {
UploadPack up = new UploadPack(repo);
up.setPreUploadHook(PreUploadHookChain.newChain(
Lists.newArrayList(preUploadHooks)));
up.setPackConfig(config.getPackConfig());
up.setTimeout(config.getTimeout());
return up;