blob: 206e7b00a46b3b3915dda3295dc9570097554221 [file] [log] [blame]
// Copyright (C) 2019 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.plugins.checks.api;
import static com.google.gerrit.server.api.ApiUtil.asRestApiException;
import com.google.common.collect.ImmutableList;
import com.google.gerrit.extensions.restapi.IdString;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.plugins.checks.CheckerUuid;
import com.google.gerrit.plugins.checks.ListChecksOption;
import com.google.gerrit.server.change.RevisionResource;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import java.util.Arrays;
class ChecksImpl implements com.google.gerrit.plugins.checks.api.Checks {
interface Factory {
ChecksImpl create(RevisionResource revisionResource);
}
private final CheckApiImpl.Factory checkApiImplFactory;
private final ChecksCollection checksCollection;
private final ListChecks listChecks;
private final PostCheck postCheck;
private final RevisionResource revisionResource;
@Inject
ChecksImpl(
CheckApiImpl.Factory checkApiImplFactory,
ChecksCollection checksCollection,
ListChecks listChecks,
PostCheck postCheck,
@Assisted RevisionResource revisionResource) {
this.checkApiImplFactory = checkApiImplFactory;
this.checksCollection = checksCollection;
this.listChecks = listChecks;
this.postCheck = postCheck;
this.revisionResource = revisionResource;
}
@Override
public CheckApi id(CheckerUuid checkerUuid) throws RestApiException {
try {
return checkApiImplFactory.create(
checksCollection.parse(revisionResource, IdString.fromDecoded(checkerUuid.get())));
} catch (Exception e) {
throw asRestApiException("Cannot parse check", e);
}
}
@Override
public CheckApi create(CheckInput input) throws RestApiException {
try {
CheckInfo checkInfo = postCheck.apply(revisionResource, input);
return id(CheckerUuid.parse(checkInfo.checkerUuid));
} catch (Exception e) {
throw asRestApiException("Cannot create check", e);
}
}
@Override
public ImmutableList<CheckInfo> list(ListChecksOption... options) throws RestApiException {
try {
Arrays.stream(options).forEach(listChecks::addOption);
return listChecks.apply(revisionResource);
} catch (Exception e) {
throw asRestApiException("Cannot list checks", e);
}
}
}