com.synopsys.integration.blackduck.service.dataservice.CodeLocationService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of blackduck-common Show documentation
Show all versions of blackduck-common Show documentation
A library for using various capabilities of Black Duck, notably the REST API and signature scanning.
/**
* blackduck-common
*
* Copyright (c) 2021 Synopsys, Inc.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.synopsys.integration.blackduck.service.dataservice;
import java.util.List;
import java.util.Optional;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.NullNode;
import com.synopsys.integration.blackduck.api.core.BlackDuckPath;
import com.synopsys.integration.blackduck.api.core.ResourceMetadata;
import com.synopsys.integration.blackduck.api.core.response.BlackDuckPathSingleResponse;
import com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery;
import com.synopsys.integration.blackduck.api.generated.view.CodeLocationView;
import com.synopsys.integration.blackduck.api.generated.view.ProjectVersionView;
import com.synopsys.integration.blackduck.api.manual.view.ScanSummaryView;
import com.synopsys.integration.blackduck.http.BlackDuckQuery;
import com.synopsys.integration.blackduck.http.BlackDuckRequestBuilder;
import com.synopsys.integration.blackduck.http.BlackDuckRequestFactory;
import com.synopsys.integration.blackduck.service.BlackDuckApiClient;
import com.synopsys.integration.blackduck.service.DataService;
import com.synopsys.integration.exception.IntegrationException;
import com.synopsys.integration.log.IntLogger;
import com.synopsys.integration.rest.HttpUrl;
public class CodeLocationService extends DataService {
// as of at least 2019.6.0, code location names in Black Duck are case-insensitive
public static final BiPredicate NAME_MATCHER = (codeLocationName, codeLocationView) -> codeLocationName.equalsIgnoreCase(codeLocationView.getName());
public CodeLocationService(BlackDuckApiClient blackDuckApiClient, BlackDuckRequestFactory blackDuckRequestFactory, IntLogger logger) {
super(blackDuckApiClient, blackDuckRequestFactory, logger);
}
public List getAllCodeLocations() throws IntegrationException {
return blackDuckApiClient.getAllResponses(ApiDiscovery.CODELOCATIONS_LINK_RESPONSE);
}
public void unmapCodeLocations(List codeLocationViews) throws IntegrationException {
for (CodeLocationView codeLocationView : codeLocationViews) {
unmapCodeLocation(codeLocationView);
}
}
public void unmapCodeLocation(HttpUrl codeLocationUrl) throws IntegrationException {
CodeLocationView codeLocationView = createFakeCodeLocationView(codeLocationUrl);
mapCodeLocation(codeLocationView, (HttpUrl) null);
}
public void unmapCodeLocation(CodeLocationView codeLocationView) throws IntegrationException {
mapCodeLocation(codeLocationView, (HttpUrl) null);
}
public void mapCodeLocation(HttpUrl codeLocationUrl, ProjectVersionView projectVersionView) throws IntegrationException {
CodeLocationView codeLocationView = createFakeCodeLocationView(codeLocationUrl);
mapCodeLocation(codeLocationView, projectVersionView);
}
public void mapCodeLocation(CodeLocationView codeLocationView, ProjectVersionView version) throws IntegrationException {
mapCodeLocation(codeLocationView, version.getHref());
}
public void mapCodeLocation(CodeLocationView codeLocationView, HttpUrl versionUrl) throws IntegrationException {
codeLocationView.setMappedProjectVersion(null == versionUrl ? "" : versionUrl.string());
blackDuckApiClient.put(codeLocationView);
}
public Optional getCodeLocationByName(String codeLocationName) throws IntegrationException {
Optional blackDuckQuery = BlackDuckQuery.createQuery("name", codeLocationName);
BlackDuckRequestBuilder requestBuilder = blackDuckRequestFactory.createCommonGetRequestBuilder(blackDuckQuery);
Predicate predicate = codeLocationView -> NAME_MATCHER.test(codeLocationName, codeLocationView);
return blackDuckApiClient.getSomeMatchingResponses(ApiDiscovery.CODELOCATIONS_LINK_RESPONSE, requestBuilder, predicate, 1)
.stream()
.findFirst();
}
public CodeLocationView getCodeLocationById(String codeLocationId) throws IntegrationException {
BlackDuckPath blackDuckPath = new BlackDuckPath(ApiDiscovery.CODELOCATIONS_LINK.getPath() + "/" + codeLocationId);
BlackDuckPathSingleResponse codeLocationResponse = new BlackDuckPathSingleResponse<>(blackDuckPath, CodeLocationView.class);
return blackDuckApiClient.getResponse(codeLocationResponse);
}
public ScanSummaryView getScanSummaryViewById(String scanSummaryId) throws IntegrationException {
String uri = BlackDuckApiClient.SCANSUMMARIES_PATH.getPath() + "/" + scanSummaryId;
HttpUrl url = new HttpUrl(uri);
return blackDuckApiClient.getResponse(url, ScanSummaryView.class);
}
private CodeLocationView createFakeCodeLocationView(final HttpUrl codeLocationUrl) {
ResourceMetadata resourceMetadata = new ResourceMetadata();
resourceMetadata.setHref(codeLocationUrl);
CodeLocationView codeLocationView = new CodeLocationView();
codeLocationView.setMeta(resourceMetadata);
NullNode pathJsonNode = new JsonNodeFactory(false).nullNode();
codeLocationView.setPatch(pathJsonNode);
return codeLocationView;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy