Factor API parts of GpgModule into a GpgApiModule
This separates the logic for extracting the enableSignedPush bit from the host config from the actual API bindings, allowing alternative implementations of that bit to come from elsewhere. Change-Id: I878842eabaa6e03d8f73bef993905495e7c2f0b3
This commit is contained in:
		| @@ -14,34 +14,15 @@ | ||||
|  | ||||
| package com.google.gerrit.gpg; | ||||
|  | ||||
| import static com.google.gerrit.gpg.server.GpgKey.GPG_KEY_KIND; | ||||
| import static com.google.gerrit.server.account.AccountResource.ACCOUNT_KIND; | ||||
|  | ||||
| import com.google.gerrit.extensions.api.accounts.GpgKeyApi; | ||||
| import com.google.gerrit.extensions.common.GpgKeyInfo; | ||||
| import com.google.gerrit.extensions.common.PushCertificateInfo; | ||||
| import com.google.gerrit.extensions.registration.DynamicMap; | ||||
| import com.google.gerrit.extensions.restapi.IdString; | ||||
| import com.google.gerrit.extensions.restapi.NotImplementedException; | ||||
| import com.google.gerrit.extensions.restapi.RestApiModule; | ||||
| import com.google.gerrit.gpg.api.GpgApiAdapterImpl; | ||||
| import com.google.gerrit.gpg.api.GpgKeyApiImpl; | ||||
| import com.google.gerrit.gpg.server.DeleteGpgKey; | ||||
| import com.google.gerrit.gpg.server.GpgKeys; | ||||
| import com.google.gerrit.gpg.server.PostGpgKeys; | ||||
| import com.google.gerrit.extensions.config.FactoryModule; | ||||
| import com.google.gerrit.gpg.api.GpgApiModule; | ||||
| import com.google.gerrit.server.EnableSignedPush; | ||||
| import com.google.gerrit.server.IdentifiedUser; | ||||
| import com.google.gerrit.server.account.AccountResource; | ||||
| import com.google.gerrit.server.api.accounts.GpgApiAdapter; | ||||
|  | ||||
| import org.eclipse.jgit.lib.Config; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| public class GpgModule extends RestApiModule { | ||||
| public class GpgModule extends FactoryModule { | ||||
|   private static final Logger log = LoggerFactory.getLogger(GpgModule.class); | ||||
|  | ||||
|   private final Config cfg; | ||||
| @@ -62,47 +43,10 @@ public class GpgModule extends RestApiModule { | ||||
|       log.info("Bouncy Castle PGP not installed; signed push verification is" | ||||
|           + " disabled"); | ||||
|     } | ||||
|     if (!enableSignedPush) { | ||||
|       bind(GpgApiAdapter.class).to(NoGpgApi.class); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     install(new SignedPushModule()); | ||||
|     bind(GpgApiAdapter.class).to(GpgApiAdapterImpl.class); | ||||
|     factory(GerritPushCertificateChecker.Factory.class); | ||||
|     factory(GpgKeyApiImpl.Factory.class); | ||||
|  | ||||
|     DynamicMap.mapOf(binder(), GPG_KEY_KIND); | ||||
|  | ||||
|     child(ACCOUNT_KIND, "gpgkeys").to(GpgKeys.class); | ||||
|     post(ACCOUNT_KIND, "gpgkeys").to(PostGpgKeys.class); | ||||
|     get(GPG_KEY_KIND).to(GpgKeys.Get.class); | ||||
|     delete(GPG_KEY_KIND).to(DeleteGpgKey.class); | ||||
|   } | ||||
|  | ||||
|   private static class NoGpgApi implements GpgApiAdapter { | ||||
|     private static final String MSG = "GPG key APIs disabled"; | ||||
|  | ||||
|     @Override | ||||
|     public Map<String, GpgKeyInfo> listGpgKeys(AccountResource account) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Map<String, GpgKeyInfo> putGpgKeys(AccountResource account, | ||||
|         List<String> add, List<String> delete) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public GpgKeyApi gpgKey(AccountResource account, IdString idStr) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PushCertificateInfo checkPushCertificate(String certStr, | ||||
|         IdentifiedUser expectedUser) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     if (enableSignedPush) { | ||||
|       install(new SignedPushModule()); | ||||
|       factory(GerritPushCertificateChecker.Factory.class); | ||||
|     } | ||||
|     install(new GpgApiModule(enableSignedPush)); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,86 @@ | ||||
| // Copyright (C) 2015 The Android Open Source Project | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| // http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package com.google.gerrit.gpg.api; | ||||
|  | ||||
| import static com.google.gerrit.gpg.server.GpgKey.GPG_KEY_KIND; | ||||
| import static com.google.gerrit.server.account.AccountResource.ACCOUNT_KIND; | ||||
|  | ||||
| import com.google.gerrit.extensions.api.accounts.GpgKeyApi; | ||||
| import com.google.gerrit.extensions.common.GpgKeyInfo; | ||||
| import com.google.gerrit.extensions.common.PushCertificateInfo; | ||||
| import com.google.gerrit.extensions.registration.DynamicMap; | ||||
| import com.google.gerrit.extensions.restapi.IdString; | ||||
| import com.google.gerrit.extensions.restapi.NotImplementedException; | ||||
| import com.google.gerrit.extensions.restapi.RestApiModule; | ||||
| import com.google.gerrit.gpg.server.DeleteGpgKey; | ||||
| import com.google.gerrit.gpg.server.GpgKeys; | ||||
| import com.google.gerrit.gpg.server.PostGpgKeys; | ||||
| import com.google.gerrit.server.IdentifiedUser; | ||||
| import com.google.gerrit.server.account.AccountResource; | ||||
| import com.google.gerrit.server.api.accounts.GpgApiAdapter; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| public class GpgApiModule extends RestApiModule { | ||||
|   private final boolean enabled; | ||||
|  | ||||
|   public GpgApiModule(boolean enabled) { | ||||
|     this.enabled = enabled; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected void configure() { | ||||
|     if (!enabled) { | ||||
|       bind(GpgApiAdapter.class).to(NoGpgApi.class); | ||||
|       return; | ||||
|     } | ||||
|     bind(GpgApiAdapter.class).to(GpgApiAdapterImpl.class); | ||||
|     factory(GpgKeyApiImpl.Factory.class); | ||||
|  | ||||
|     DynamicMap.mapOf(binder(), GPG_KEY_KIND); | ||||
|  | ||||
|     child(ACCOUNT_KIND, "gpgkeys").to(GpgKeys.class); | ||||
|     post(ACCOUNT_KIND, "gpgkeys").to(PostGpgKeys.class); | ||||
|     get(GPG_KEY_KIND).to(GpgKeys.Get.class); | ||||
|     delete(GPG_KEY_KIND).to(DeleteGpgKey.class); | ||||
|   } | ||||
|  | ||||
|   private static class NoGpgApi implements GpgApiAdapter { | ||||
|     private static final String MSG = "GPG key APIs disabled"; | ||||
|  | ||||
|     @Override | ||||
|     public Map<String, GpgKeyInfo> listGpgKeys(AccountResource account) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Map<String, GpgKeyInfo> putGpgKeys(AccountResource account, | ||||
|         List<String> add, List<String> delete) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public GpgKeyApi gpgKey(AccountResource account, IdString idStr) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PushCertificateInfo checkPushCertificate(String certStr, | ||||
|         IdentifiedUser expectedUser) { | ||||
|       throw new NotImplementedException(MSG); | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Dave Borowitz
					Dave Borowitz