Extract base class for ReceivePackFactory implementations

This commit is contained in:
René Pfeuffer
2019-03-05 13:29:57 +01:00
parent 08c35fa0ce
commit 0c46d639da
4 changed files with 57 additions and 50 deletions

View File

@@ -43,6 +43,7 @@ import org.eclipse.jgit.transport.ReceivePack;
import org.eclipse.jgit.transport.resolver.ReceivePackFactory;
import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
import sonia.scm.protocolcommand.git.BaseReceivePackFactory;
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.spi.HookEventFacade;
@@ -56,38 +57,21 @@ import javax.servlet.http.HttpServletRequest;
*
* @author Sebastian Sdorra
*/
public class GitReceivePackFactory implements ReceivePackFactory<HttpServletRequest>
public class GitReceivePackFactory extends BaseReceivePackFactory<HttpServletRequest>
{
private final GitRepositoryHandler handler;
private ReceivePackFactory wrapped;
private final GitReceiveHook hook;
private ReceivePackFactory<HttpServletRequest> wrapped;
@Inject
public GitReceivePackFactory(GitRepositoryHandler handler, HookEventFacade hookEventFacade) {
this.handler = handler;
this.hook = new GitReceiveHook(hookEventFacade, handler);
this.wrapped = new DefaultReceivePackFactory();
super(handler, hookEventFacade);
this.wrapped = new DefaultReceivePackFactory();
}
@Override
public ReceivePack create(HttpServletRequest request, Repository repository)
protected ReceivePack createBasicReceivePack(HttpServletRequest request, Repository repository)
throws ServiceNotEnabledException, ServiceNotAuthorizedException {
ReceivePack receivePack = wrapped.create(request, repository);
receivePack.setAllowNonFastForwards(isNonFastForwardAllowed());
receivePack.setPreReceiveHook(hook);
receivePack.setPostReceiveHook(hook);
// apply collecting listener, to be able to check which commits are new
CollectingPackParserListener.set(receivePack);
return receivePack;
}
private boolean isNonFastForwardAllowed() {
return ! handler.getConfig().isNonFastForwardDisallowed();
return wrapped.create(request, repository);
}
@VisibleForTesting