diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java deleted file mode 100644 index 9aa9ae766e..0000000000 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (C) 2012 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.server.project; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Strings; -import com.google.gerrit.extensions.api.projects.DashboardInfo; -import com.google.gerrit.extensions.common.SetDashboardInput; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.IdString; -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.reviewdb.client.Project; -import com.google.gerrit.server.git.MetaDataUpdate; -import com.google.gerrit.server.git.ProjectConfig; -import com.google.gerrit.server.permissions.PermissionBackendException; -import com.google.inject.Inject; -import com.google.inject.Provider; -import java.io.IOException; -import org.eclipse.jgit.errors.ConfigInvalidException; -import org.eclipse.jgit.errors.RepositoryNotFoundException; -import org.kohsuke.args4j.Option; - -class SetDefaultDashboard implements RestModifyView<DashboardResource, SetDashboardInput> { - private final ProjectCache cache; - private final MetaDataUpdate.Server updateFactory; - private final DashboardsCollection dashboards; - private final Provider<GetDashboard> get; - - @Option(name = "--inherited", usage = "set dashboard inherited by children") - private boolean inherited; - - @Inject - SetDefaultDashboard( - ProjectCache cache, - MetaDataUpdate.Server updateFactory, - DashboardsCollection dashboards, - Provider<GetDashboard> get) { - this.cache = cache; - this.updateFactory = updateFactory; - this.dashboards = dashboards; - this.get = get; - } - - @Override - public Response<DashboardInfo> apply(DashboardResource resource, SetDashboardInput input) - throws RestApiException, IOException, PermissionBackendException { - if (input == null) { - input = new SetDashboardInput(); // Delete would set input to null. - } - input.id = Strings.emptyToNull(input.id); - - ProjectControl ctl = resource.getControl(); - if (!ctl.isOwner()) { - throw new AuthException("not project owner"); - } - - DashboardResource target = null; - if (input.id != null) { - try { - target = dashboards.parse(new ProjectResource(ctl), IdString.fromUrl(input.id)); - } catch (ResourceNotFoundException e) { - throw new BadRequestException("dashboard " + input.id + " not found"); - } catch (ConfigInvalidException e) { - throw new ResourceConflictException(e.getMessage()); - } - } - - try (MetaDataUpdate md = updateFactory.create(ctl.getProject().getNameKey())) { - ProjectConfig config = ProjectConfig.read(md); - Project project = config.getProject(); - if (inherited) { - project.setDefaultDashboard(input.id); - } else { - project.setLocalDefaultDashboard(input.id); - } - - String msg = - MoreObjects.firstNonNull( - Strings.emptyToNull(input.commitMessage), - input.id == null - ? "Removed default dashboard.\n" - : String.format("Changed default dashboard to %s.\n", input.id)); - if (!msg.endsWith("\n")) { - msg += "\n"; - } - md.setAuthor(ctl.getUser().asIdentifiedUser()); - md.setMessage(msg); - config.commit(md); - cache.evict(ctl.getProject()); - - if (target != null) { - DashboardInfo info = get.get().apply(target); - info.isDefault = true; - return Response.ok(info); - } - return Response.none(); - } catch (RepositoryNotFoundException notFound) { - throw new ResourceNotFoundException(ctl.getProject().getName()); - } catch (ConfigInvalidException e) { - throw new ResourceConflictException( - String.format("invalid project.config: %s", e.getMessage())); - } - } - - static class CreateDefault implements RestModifyView<ProjectResource, SetDashboardInput> { - private final Provider<SetDefaultDashboard> setDefault; - - @Option(name = "--inherited", usage = "set dashboard inherited by children") - private boolean inherited; - - @Inject - CreateDefault(Provider<SetDefaultDashboard> setDefault) { - this.setDefault = setDefault; - } - - @Override - public Response<DashboardInfo> apply(ProjectResource resource, SetDashboardInput input) - throws RestApiException, IOException, PermissionBackendException { - SetDefaultDashboard set = setDefault.get(); - set.inherited = inherited; - return set.apply(DashboardResource.projectDefault(resource.getControl()), input); - } - } -} |