Merge branch 'stable-3.0' into stable-3.1 * stable-3.0: Upgrade bazlets to latest stable-2.16 to build with 2.16.17 API Upgrade bazlets to latest stable-3.0 to build with 3.0.8 API Upgrade bazlets to latest stable-3.0 Upgrade bazlets to latest stable-2.16 Change-Id: I9b4a860f5199569791de33c9c4caaff1ad9bc10d
diff --git a/WORKSPACE b/WORKSPACE index 1e57d3f..5d46553 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -3,7 +3,7 @@ load("//:bazlets.bzl", "load_bazlets") load_bazlets( - commit = "97eef86854b0fb68b9287831f3075b6f6218ff41", + commit = "65536a2b01b0097ee3237bb48a805ed97ca51467", #local_path = "/home/<user>/projects/bazlets", )
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java index 80ddf1b..50fc6a0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
@@ -14,9 +14,13 @@ package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; + import com.google.common.base.Function; import com.google.common.base.Strings; import com.google.common.collect.Lists; +import com.google.gerrit.entities.Account; +import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.api.accounts.AccountInput; @@ -28,8 +32,6 @@ import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestCollectionCreateView; -import com.google.gerrit.reviewdb.client.Account; -import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.IdentifiedUser; @@ -151,7 +153,12 @@ input.email = Strings.emptyToNull(input.email); if (input.email != null) { - Boolean emailAllowed = getConfig.get().apply(new ConfigResource()).allowEmail; + Boolean emailAllowed; + try { + emailAllowed = getConfig.get().apply(new ConfigResource()).value().allowEmail; + } catch (Exception e) { + throw asRestApiException("Cannot get configuration", e); + } if (emailAllowed == null || !emailAllowed) { throw new ResourceConflictException("email not allowed"); } @@ -159,7 +166,13 @@ AccountInput in = new ServiceUserInput(username, input.email, input.sshKey); in.groups = Arrays.asList(cfg.getStringList("group")); - Response<AccountInfo> response = createAccount.apply(IdString.fromDecoded(username), in); + + AccountInfo response; + try { + response = createAccount.apply(IdString.fromDecoded(username), in).value(); + } catch (Exception e) { + throw asRestApiException("Cannot create account", e); + } String creator = user.getUserName().get(); Account.Id creatorId = ((IdentifiedUser) user).getAccountId(); @@ -175,8 +188,7 @@ MetaDataUpdate md = metaDataUpdateFactory.create(allProjects); md.setMessage("Create service user '" + username + "'\n"); storage.commit(md); - - ServiceUserInfo info = new ServiceUserInfo(response.value()); + ServiceUserInfo info = new ServiceUserInfo(response); AccountLoader al = accountLoader.create(true); info.createdBy = al.get(creatorId); al.fill();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserNotes.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserNotes.java index 63cb875..93fc84c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserNotes.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserNotes.java
@@ -19,19 +19,16 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT; +import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.common.AccountInfo; -import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.config.AnonymousCowardName; import com.google.gerrit.server.git.NotesBranchUtil; -import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import com.googlesource.gerrit.plugins.serviceuser.GetServiceUser.ServiceUserInfo; import java.io.IOException; -import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectInserter; @@ -82,7 +79,7 @@ } void createNotes(String branch, ObjectId oldObjectId, ObjectId newObjectId) - throws IOException, ConfigInvalidException, PermissionBackendException, RestApiException { + throws IOException, RestApiException { if (ObjectId.zeroId().equals(newObjectId)) { return; } @@ -154,13 +151,13 @@ } private ObjectId createNoteContent(String branch, ServiceUserInfo serviceUser) - throws IOException, MethodNotAllowedException, PermissionBackendException { + throws IOException, RestApiException, RuntimeException { return getInserter() .insert(Constants.OBJ_BLOB, createServiceUserNote(branch, serviceUser).getBytes(UTF_8)); } private String createServiceUserNote(String branch, ServiceUserInfo serviceUser) - throws MethodNotAllowedException, PermissionBackendException { + throws RestApiException, RuntimeException { HeaderFormatter fmt = new HeaderFormatter(gerritServerIdent.getTimeZone(), anonymousCowardName); fmt.appendDate(); fmt.append("Project", project.get());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java index 3939119..b6284b0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.serviceuser; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.inject.Inject; import com.google.inject.Provider; @@ -29,7 +30,7 @@ } @Override - public Object apply(ServiceUserResource rsrc) { - return getActive.get().apply(rsrc); + public Response<Object> apply(ServiceUserResource rsrc) { + return Response.ok(getActive.get().apply(rsrc)); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java index 85da7b0..f89f047 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
@@ -15,10 +15,11 @@ package com.googlesource.gerrit.plugins.serviceuser; import com.google.common.base.Strings; +import com.google.gerrit.entities.AccountGroup; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.common.GroupInfo; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; -import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.account.GroupCache; import com.google.gerrit.server.config.ConfigResource; import com.google.gerrit.server.config.PluginConfig; @@ -59,7 +60,7 @@ } @Override - public ConfigInfo apply(ConfigResource rsrc) throws PermissionBackendException { + public Response<ConfigInfo> apply(ConfigResource rsrc) throws PermissionBackendException { PluginConfig cfg = cfgFactory.getFromGerritConfig(pluginName); ConfigInfo info = new ConfigInfo(); info.info = Strings.emptyToNull(cfg.getString("infoMessage")); @@ -77,7 +78,7 @@ String[] groups = cfg.getStringList("group"); info.groups = new TreeMap<>(); for (String g : groups) { - Optional<InternalGroup> group = groupCache.get(new AccountGroup.NameKey(g)); + Optional<InternalGroup> group = groupCache.get(AccountGroup.nameKey(g)); if (group.isPresent()) { GroupInfo groupInfo = groupJson.format(new InternalGroupDescription(group.get())); groupInfo.name = null; @@ -87,7 +88,7 @@ } } - return info; + return Response.ok(info); } private static Boolean toBoolean(boolean v) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java index 0fd97da..440bcfa 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.serviceuser; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.inject.Singleton; @@ -21,7 +22,7 @@ class GetEmail implements RestReadView<ServiceUserResource> { @Override - public String apply(ServiceUserResource rsrc) { - return rsrc.getUser().getAccount().getPreferredEmail(); + public Response<String> apply(ServiceUserResource rsrc) { + return Response.ok(rsrc.getUser().getAccount().preferredEmail()); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java index 6ed1af6..7294911 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.serviceuser; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.inject.Inject; import com.google.inject.Provider; @@ -29,7 +30,7 @@ } @Override - public String apply(ServiceUserResource rsrc) { + public Response<String> apply(ServiceUserResource rsrc) { return getName.get().apply(rsrc); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java index 3a2460f..c700da8 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
@@ -14,11 +14,13 @@ package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.KEY_CREATED_AT; import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.KEY_CREATOR_ID; import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.USER; import static javax.servlet.http.HttpServletResponse.SC_OK; +import com.google.gerrit.entities.Account; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.common.AccountInfo; import com.google.gerrit.extensions.common.GroupInfo; @@ -26,7 +28,6 @@ import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestReadView; -import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.server.account.AccountLoader; import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.server.project.ProjectCache; @@ -60,7 +61,7 @@ } @Override - public ServiceUserInfo apply(ServiceUserResource rsrc) + public Response<ServiceUserInfo> apply(ServiceUserResource rsrc) throws RestApiException, PermissionBackendException { ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); String username = rsrc.getUser().getUserName().get(); @@ -69,25 +70,35 @@ throw new ResourceNotFoundException(username); } - ServiceUserInfo info = new ServiceUserInfo(getAccount.get().apply(rsrc)); + ServiceUserInfo info; + try { + info = new ServiceUserInfo(getAccount.get().apply(rsrc).value()); + } catch (Exception e) { + throw asRestApiException("Cannot get service user", e); + } + AccountLoader al = accountLoader.create(true); - info.createdBy = al.get(new Account.Id(db.getInt(USER, username, KEY_CREATOR_ID, -1))); + info.createdBy = al.get(Account.id(db.getInt(USER, username, KEY_CREATOR_ID, -1))); al.fill(); info.createdAt = db.getString(USER, username, KEY_CREATED_AT); info.inactive = !rsrc.getUser().getAccount().isActive() ? true : null; Response<GroupInfo> response = getOwner.apply(rsrc); + if (response.statusCode() == SC_OK) { - info.owner = response.value(); + try { + info.owner = response.value(); + } catch (Exception e) { + throw asRestApiException("Cannot get owner", e); + } } - return info; + return Response.ok(info); } public static class ServiceUserInfo extends AccountInfo { public AccountInfo createdBy; public String createdAt; - public Boolean inactive; public GroupInfo owner; public ServiceUserInfo(AccountInfo info) { @@ -97,6 +108,7 @@ email = info.email; username = info.username; avatars = info.avatars; + inactive = info.inactive; } } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java index 00a0968..6c8a008 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java
@@ -15,6 +15,7 @@ package com.googlesource.gerrit.plugins.serviceuser; import com.google.gerrit.extensions.common.SshKeyInfo; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.account.AccountResource; import com.google.inject.Inject; @@ -31,7 +32,7 @@ } @Override - public SshKeyInfo apply(ServiceUserResource.SshKey rsrc) { + public Response<SshKeyInfo> apply(ServiceUserResource.SshKey rsrc) { return getSshKey.get().apply(new AccountResource.SshKey(rsrc.getUser(), rsrc.getSshKey())); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java index 60dfc15..747190c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java
@@ -16,6 +16,7 @@ import com.google.gerrit.extensions.common.SshKeyInfo; import com.google.gerrit.extensions.restapi.AuthException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.inject.Inject; import com.google.inject.Provider; @@ -35,8 +36,8 @@ } @Override - public List<SshKeyInfo> apply(ServiceUserResource rsrc) + public Response<List<SshKeyInfo>> apply(ServiceUserResource rsrc) throws AuthException, RepositoryNotFoundException, IOException, ConfigInvalidException { - return getSshKeys.get().apply(rsrc.getUser()); + return Response.ok(getSshKeys.get().apply(rsrc.getUser())); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java index 0b93721..5e77ce2 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.USER; import com.google.common.collect.Maps; @@ -21,6 +22,7 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.IdString; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.CurrentUser; @@ -66,7 +68,7 @@ } @Override - public Map<String, ServiceUserInfo> apply(ConfigResource rscr) + public Response<Map<String, ServiceUserInfo>> apply(ConfigResource rscr) throws IOException, RestApiException, PermissionBackendException, ConfigInvalidException { ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); CurrentUser user = userProvider.get(); @@ -86,16 +88,17 @@ .get() .parse( new ConfigResource(), - IdString.fromDecoded( - String.valueOf(account.get().getAccount().getId().get()))); - info = getServiceUser.get().apply(serviceUserResource); + IdString.fromDecoded(String.valueOf(account.get().account().id().get()))); + info = getServiceUser.get().apply(serviceUserResource).value(); info.username = null; accounts.put(username, info); } catch (ResourceNotFoundException e) { // this service user is not visible to the caller -> ignore it + } catch (Exception e) { + throw asRestApiException("Cannot list service users", e); } } } - return accounts; + return Response.ok(accounts); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java index 09a559e..af5343d 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
@@ -16,12 +16,12 @@ import com.google.common.base.Strings; import com.google.gerrit.common.data.GlobalCapability; +import com.google.gerrit.entities.AccountGroup; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; -import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.account.GroupCache; import com.google.gerrit.server.config.ConfigResource; import com.google.gerrit.server.config.PluginConfigFactory; @@ -99,7 +99,7 @@ } if (input.groups != null) { for (String g : input.groups) { - if (groupCache.get(new AccountGroup.NameKey(g)) == null) { + if (groupCache.get(AccountGroup.nameKey(g)) == null) { throw new UnprocessableEntityException(String.format("Group %s does not exist.", g)); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java index 986b2bb..0fb9269 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; import static com.google.gerrit.server.permissions.GlobalPermission.ADMINISTRATE_SERVER; import com.google.common.base.Strings; @@ -74,12 +75,23 @@ public Response<?> apply(ServiceUserResource rsrc, Input input) throws ConfigInvalidException, EmailException, IOException, PermissionBackendException, RestApiException { - Boolean emailAllowed = getConfig.get().apply(new ConfigResource()).allowEmail; + Boolean emailAllowed; + try { + emailAllowed = getConfig.get().apply(new ConfigResource()).value().allowEmail; + } catch (Exception e) { + throw asRestApiException("Cannot get configuration", e); + } if ((emailAllowed == null || !emailAllowed)) { permissionBackend.user(self.get()).check(ADMINISTRATE_SERVER); } - String email = getEmail.get().apply(rsrc); + String email; + try { + email = getEmail.get().apply(rsrc).value(); + } catch (Exception e) { + throw asRestApiException("Cannot get email", e); + } + if (Strings.emptyToNull(input.email) == null) { if (Strings.emptyToNull(email) == null) { return Response.none();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutHttpPassword.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutHttpPassword.java index 8d0110a..4ff0525 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutHttpPassword.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutHttpPassword.java
@@ -13,14 +13,13 @@ // limitations under the License. package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; import static com.google.gerrit.server.permissions.GlobalPermission.ADMINISTRATE_SERVER; import static com.google.gerrit.server.restapi.account.PutHttpPassword.generate; import com.google.common.base.Strings; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; -import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.Response; +import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.config.ConfigResource; @@ -59,14 +58,20 @@ @Override public Response<String> apply(ServiceUserResource rsrc, Input input) - throws AuthException, ResourceConflictException, ConfigInvalidException, - ResourceNotFoundException, IOException, PermissionBackendException { + throws ConfigInvalidException, IOException, PermissionBackendException, RestApiException, + RuntimeException { if (input == null) { input = new Input(); } input.httpPassword = Strings.emptyToNull(input.httpPassword); - Boolean httpPasswordAllowed = getConfig.get().apply(new ConfigResource()).allowHttpPassword; + Boolean httpPasswordAllowed; + try { + httpPasswordAllowed = getConfig.get().apply(new ConfigResource()).value().allowHttpPassword; + } catch (Exception e) { + throw asRestApiException("Cannot get configuration", e); + } + if (input.generate || input.httpPassword == null) { if ((httpPasswordAllowed == null || !httpPasswordAllowed)) { permissionBackend.user(self.get()).check(ADMINISTRATE_SERVER);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java index f444380..78bc448 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
@@ -14,12 +14,15 @@ package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; import static com.google.gerrit.server.permissions.GlobalPermission.ADMINISTRATE_SERVER; import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.KEY_OWNER; import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.USER; import com.google.common.base.Strings; import com.google.gerrit.common.data.GroupDescription; +import com.google.gerrit.entities.AccountGroup; +import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.common.GroupInfo; import com.google.gerrit.extensions.restapi.DefaultInput; @@ -29,8 +32,6 @@ import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.TopLevelResource; -import com.google.gerrit.reviewdb.client.AccountGroup; -import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.config.ConfigResource; import com.google.gerrit.server.git.meta.MetaDataUpdate; @@ -88,7 +89,12 @@ public Response<GroupInfo> apply(ServiceUserResource rsrc, Input input) throws RestApiException, IOException, PermissionBackendException { ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db"); - Boolean ownerAllowed = getConfig.get().apply(new ConfigResource()).allowOwner; + Boolean ownerAllowed; + try { + ownerAllowed = getConfig.get().apply(new ConfigResource()).value().allowOwner; + } catch (Exception e) { + throw asRestApiException("Cannot get configuration", e); + } if ((ownerAllowed == null || !ownerAllowed)) { permissionBackend.user(self.get()).check(ADMINISTRATE_SERVER); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java index c4090ac..31d1a56 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
@@ -14,20 +14,18 @@ package com.googlesource.gerrit.plugins.serviceuser; +import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.events.GitReferenceUpdatedListener; import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.PluginConfigFactory; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.ProjectRunnable; import com.google.gerrit.server.git.WorkQueue; -import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.inject.Inject; import com.google.inject.Singleton; import java.io.IOException; -import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Repository; import org.slf4j.Logger; @@ -73,7 +71,7 @@ @Override public Project.NameKey getProjectNameKey() { - return new Project.NameKey(event.getProjectName()); + return Project.nameKey(event.getProjectName()); } @Override @@ -99,7 +97,7 @@ } private void createServiceUserNotes(Event e) { - Project.NameKey projectName = new Project.NameKey(e.getProjectName()); + Project.NameKey projectName = Project.nameKey(e.getProjectName()); try (Repository git = repoManager.openRepository(projectName)) { CreateServiceUserNotes crn = serviceUserNotesFactory.create(projectName, git); crn.createNotes( @@ -107,10 +105,7 @@ ObjectId.fromString(e.getOldObjectId()), ObjectId.fromString(e.getNewObjectId())); crn.commitNotes(); - } catch (IOException - | ConfigInvalidException - | PermissionBackendException - | RestApiException x) { + } catch (IOException | RestApiException x) { log.error(x.getMessage(), x); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java index 066898f..bce9e37 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
@@ -20,6 +20,7 @@ import static com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.USER; import com.google.gerrit.common.data.GroupDescription; +import com.google.gerrit.entities.Account; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.registration.DynamicMap; import com.google.gerrit.extensions.restapi.AuthException; @@ -28,7 +29,6 @@ import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestView; import com.google.gerrit.extensions.restapi.TopLevelResource; -import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.ConfigResource; @@ -101,7 +101,7 @@ } } else if (!((IdentifiedUser) user) .getAccountId() - .equals(new Account.Id(storage.get().getInt(USER, username, KEY_CREATOR_ID, -1)))) { + .equals(Account.id(storage.get().getInt(USER, username, KEY_CREATOR_ID, -1)))) { throw new ResourceNotFoundException(id); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java index e2f16a6..65ac232 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java
@@ -14,13 +14,14 @@ package com.googlesource.gerrit.plugins.serviceuser; +import static com.google.gerrit.server.api.ApiUtil.asRestApiException; + import com.google.gerrit.common.data.GroupDescription; +import com.google.gerrit.entities.Account; +import com.google.gerrit.entities.AccountGroup; import com.google.gerrit.extensions.common.AccountInfo; -import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.reviewdb.client.Account; -import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountCache; @@ -31,7 +32,6 @@ import com.google.gerrit.server.account.GroupMembership; import com.google.gerrit.server.group.GroupResolver; import com.google.gerrit.server.group.GroupResource; -import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.server.restapi.group.ListMembers; import com.google.gerrit.server.util.RequestContext; import com.google.gerrit.server.util.ThreadLocalRequestContext; @@ -39,13 +39,11 @@ import com.google.inject.Provider; import com.google.inject.Singleton; import com.googlesource.gerrit.plugins.serviceuser.GetServiceUser.ServiceUserInfo; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Set; -import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.lib.PersonIdent; @Singleton @@ -79,8 +77,7 @@ this.groupResolver = groupResolver; } - ServiceUserInfo getAsServiceUser(PersonIdent committerIdent) - throws ConfigInvalidException, IOException, PermissionBackendException, RestApiException { + ServiceUserInfo getAsServiceUser(PersonIdent committerIdent) throws RestApiException { StringBuilder committer = new StringBuilder(); committer.append(committerIdent.getName()); committer.append(" <"); @@ -88,17 +85,20 @@ committer.append("> "); try { - Account account = resolver.resolve(committer.toString()).asUnique().getAccount(); + Account account = resolver.resolve(committer.toString()).asUnique().account(); return getServiceUser .get() - .apply(new ServiceUserResource(genericUserFactory.create(account.getId()))); + .apply(new ServiceUserResource(genericUserFactory.create(account.id()))) + .value(); } catch (ResourceNotFoundException | UnresolvableAccountException e) { return null; + } catch (Exception e) { + throw asRestApiException("Cannot get service user", e); } } List<AccountInfo> listOwners(ServiceUserInfo serviceUser) - throws MethodNotAllowedException, PermissionBackendException { + throws RestApiException, RuntimeException { if (serviceUser.owner == null) { return Collections.emptyList(); } @@ -149,8 +149,12 @@ GroupResource rsrc = new GroupResource(ctl); lm.setRecursive(true); List<AccountInfo> owners = new ArrayList<>(); - for (AccountInfo a : lm.apply(rsrc)) { - owners.add(a); + try { + for (AccountInfo a : lm.apply(rsrc).value()) { + owners.add(a); + } + } catch (Exception e) { + throw asRestApiException("Cannot list group members", e); } return owners; } finally { @@ -159,11 +163,11 @@ } List<AccountInfo> listActiveOwners(ServiceUserInfo serviceUser) - throws MethodNotAllowedException, PermissionBackendException { + throws RestApiException, RuntimeException { List<AccountInfo> activeOwners = new ArrayList<>(); for (AccountInfo owner : listOwners(serviceUser)) { - Optional<AccountState> accountState = accountCache.get(new Account.Id(owner._accountId)); - if (accountState.isPresent() && accountState.get().getAccount().isActive()) { + Optional<AccountState> accountState = accountCache.get(Account.id(owner._accountId)); + if (accountState.isPresent() && accountState.get().account().isActive()) { activeOwners.add(owner); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java index d8c2176..b576b1c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java +++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java
@@ -14,23 +14,20 @@ package com.googlesource.gerrit.plugins.serviceuser; +import com.google.gerrit.entities.Account; import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountState; import com.google.gerrit.server.events.CommitReceivedEvent; import com.google.gerrit.server.git.validators.CommitValidationException; import com.google.gerrit.server.git.validators.CommitValidationListener; import com.google.gerrit.server.git.validators.CommitValidationMessage; -import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.inject.Inject; import com.google.inject.Singleton; import com.googlesource.gerrit.plugins.serviceuser.GetServiceUser.ServiceUserInfo; -import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.Optional; -import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.lib.PersonIdent; @Singleton @@ -62,8 +59,8 @@ committer.getEmailAddress())); } Optional<AccountState> creator = - accountCache.get(new Account.Id(serviceUser.createdBy._accountId)); - if (!creator.isPresent() || !creator.get().getAccount().isActive()) { + accountCache.get(Account.id(serviceUser.createdBy._accountId)); + if (!creator.isPresent() || !creator.get().account().isActive()) { throw new CommitValidationException( String.format( "Commit %s of service user %s (%s) is rejected because " @@ -73,10 +70,7 @@ committer.getEmailAddress())); } } - } catch (IOException - | ConfigInvalidException - | PermissionBackendException - | RestApiException e) { + } catch (RestApiException e) { throw new CommitValidationException( "Internal error while checking for service user commits.", e); }
diff --git a/src/main/resources/static/gr-serviceuser-create.html b/src/main/resources/static/gr-serviceuser-create.html index 763c47d..2e70471 100644 --- a/src/main/resources/static/gr-serviceuser-create.html +++ b/src/main/resources/static/gr-serviceuser-create.html
@@ -37,21 +37,23 @@ <section> <span class="title">Username</span> <span class="value"> - <input id="serviceUserNameInput" - bind-value="{{_newUsername}}" - is="iron-input" - type="text" - on-keyup="_validateData"> + <iron-input bind-value="{{_newUsername}}"> + <input id="serviceUserNameInput" + value="{{_newUsername::input}}" + type="text" + on-keyup="_validateData"> + </iron-input> </span> </section> <section hidden$="[[!_emailEnabled]]"> <span class="title">Email</span> <span class="value"> - <input id="serviceUserEmailInput" - bind-value="{{_newEmail}}" - is="iron-input" - type="text" - on-keyup="_validateData"> + <iron-input bind-value="{{_newEmail}}"> + <input id="serviceUserEmailInput" + value="{{_newEmail::input}}" + type="text" + on-keyup="_validateData"> + </iron-input> </span> </section> </fieldset>
diff --git a/src/main/resources/static/gr-serviceuser-detail.html b/src/main/resources/static/gr-serviceuser-detail.html index 28d1d93..41e4e8d 100644 --- a/src/main/resources/static/gr-serviceuser-detail.html +++ b/src/main/resources/static/gr-serviceuser-detail.html
@@ -93,18 +93,24 @@ </section> <section> <span class="title">Full Name</span> - <span class="value"> - <input id="serviceUserFullNameInput" class="wide" bind-value="{{_newFullName}}" - is="iron-input" type="text" disabled="[[_changingPrefs]]" - placeholder$="[[_serviceUser.name]]" on-keyup="_computePrefsChanged"> + <span class="value" hidden$="[[!_allowFullName]]"> + <iron-input bind-value="{{_newFullName}}"> + <input id="serviceUserFullNameInput" class="wide" value="{{_newFullName::input}}" + type="text" disabled$="[[_changingPrefs]]" + placeholder$="[[_serviceUser.name]]" + on-keyup="_computePrefsChanged"> + </iron-input> </span> </section> <section> <span class="title">Email Address</span> <span class="value" hidden$="[[!_allowEmail]]"> - <input id="serviceUserEmailInput" class="wide" bind-value="{{_newEmail}}" - is="iron-input" type="text" disabled="[[_changingPrefs]]" - placeholder="[[_serviceUser.email]]" on-keyup="_computePrefsChanged"> + <iron-input bind-value="{{_newEmail}}"> + <input id="serviceUserEmailInput" class="wide" value="{{_newEmail::input}}" + type="text" disabled$="[[_changingPrefs]]" + placeholder="[[_serviceUser.email]]" on-keyup="_computePrefsChanged" + hidden$="[[!_allowEmail]]"> + </iron-input> </span> <span class="value" hidden$="[[_allowEmail]]">[[_serviceUser.email]]</span> </section>