PushCertificateChecker: Convert to a builder pattern

Change-Id: Ic32ad26ea89b5cbe9c0c4bfa33ace23d09a35750
This commit is contained in:
Dave Borowitz
2015-10-20 13:20:23 -04:00
parent 2737821ae3
commit 674844faf6
5 changed files with 20 additions and 13 deletions

View File

@@ -26,8 +26,7 @@ import java.io.IOException;
public class GerritPushCertificateChecker extends PushCertificateChecker {
public interface Factory {
GerritPushCertificateChecker create(IdentifiedUser expectedUser,
boolean checkNonce);
GerritPushCertificateChecker create(IdentifiedUser expectedUser);
}
private final GitRepositoryManager repoManager;
@@ -38,9 +37,8 @@ public class GerritPushCertificateChecker extends PushCertificateChecker {
GerritPublicKeyChecker.Factory keyCheckerFactory,
GitRepositoryManager repoManager,
AllUsersName allUsers,
@Assisted IdentifiedUser expectedUser,
@Assisted boolean checkNonce) {
super(keyCheckerFactory.create().setExpectedUser(expectedUser), checkNonce);
@Assisted IdentifiedUser expectedUser) {
super(keyCheckerFactory.create().setExpectedUser(expectedUser));
this.repoManager = repoManager;
this.allUsers = allUsers;
}

View File

@@ -67,12 +67,18 @@ public abstract class PushCertificateChecker {
}
private final PublicKeyChecker publicKeyChecker;
private final boolean checkNonce;
protected PushCertificateChecker(PublicKeyChecker publicKeyChecker,
boolean checkNonce) {
private boolean checkNonce;
protected PushCertificateChecker(PublicKeyChecker publicKeyChecker) {
this.publicKeyChecker = publicKeyChecker;
checkNonce = true;
}
/** Set whether to check the status of the nonce; defaults to true. */
public PushCertificateChecker setCheckNonce(boolean checkNonce) {
this.checkNonce = checkNonce;
return this;
}
/**

View File

@@ -54,7 +54,8 @@ public class SignedPushPreReceiveHook implements PreReceiveHook {
if (cert == null) {
return;
}
CheckResult result = checkerFactory.create(user.get(), true)
CheckResult result = checkerFactory.create(user.get())
.setCheckNonce(true)
.check(cert)
.getCheckResult();
if (!isAllowed(result, commands)) {

View File

@@ -95,8 +95,10 @@ public class GpgApiAdapterImpl implements GpgApiAdapter {
IdentifiedUser expectedUser) throws GpgException {
try {
PushCertificate cert = PushCertificateParser.fromString(certStr);
PushCertificateChecker.Result result =
pushCertCheckerFactory.create(expectedUser, false).check(cert);
PushCertificateChecker.Result result = pushCertCheckerFactory
.create(expectedUser)
.setCheckNonce(false)
.check(cert);
PushCertificateInfo info = new PushCertificateInfo();
info.certificate = certStr;
info.key = GpgKeys.toJson(result.getPublicKey(), result.getCheckResult());

View File

@@ -72,7 +72,7 @@ public class PushCertificateCheckerTest {
}
private PushCertificateChecker newChecker(boolean checkNonce) {
return new PushCertificateChecker(new PublicKeyChecker(), checkNonce) {
return new PushCertificateChecker(new PublicKeyChecker()) {
@Override
protected Repository getRepository() {
return tr.getRepository();
@@ -82,7 +82,7 @@ public class PushCertificateCheckerTest {
protected boolean shouldClose(Repository repo) {
return false;
}
};
}.setCheckNonce(checkNonce);
}
@Test