Add extension point to register JGit PreUploadHooks

Plugins may want to get notified before an upload pack is sent.
For example, a plugin may want to monitor repository usage.

Change-Id: Ie1e82da47dc3906ef3da87dfbd0b583ebeecbef1
This commit is contained in:
Hugo Arès
2014-06-17 14:22:03 -04:00
parent 64031c0d84
commit 572d542b3d
4 changed files with 26 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,10 +190,12 @@ public class GitOverHttpServlet extends GitServlet {
static class UploadFactory implements UploadPackFactory<HttpServletRequest> {
private final TransferConfig config;
private final DynamicSet<PreUploadHook> preUploadHooks;
@Inject
UploadFactory(TransferConfig tc) {
UploadFactory(TransferConfig tc, DynamicSet<PreUploadHook> preUploadHooks) {
this.config = tc;
this.preUploadHooks = preUploadHooks;
}
@Override
@@ -199,6 +203,8 @@ public class GitOverHttpServlet extends GitServlet {
UploadPack up = new UploadPack(repo);
up.setPackConfig(config.getPackConfig());
up.setTimeout(config.getTimeout());
up.setPreUploadHook(PreUploadHookChain.newChain(
Lists.newArrayList(preUploadHooks)));
return up;
}
}