diff --git a/src/main/java/com/redhat/pctsec/model/api/service/PncService.java b/src/main/java/com/redhat/pctsec/model/api/service/PncService.java deleted file mode 100644 index 026d95d..0000000 --- a/src/main/java/com/redhat/pctsec/model/api/service/PncService.java +++ /dev/null @@ -1,195 +0,0 @@ -/** - * Stolen from - * https://github.com/project-ncl/sbomer/blob/3b2ef857e8c0cefe9324ea401fa3fbe53499c615/cli/src/main/java/org/jboss/sbomer/cli/feature/sbom/service/PncService.java - */ -package com.redhat.pctsec.model.api.service; - -//import jakarta.annotation.PostConstruct; -//import jakarta.annotation.PreDestroy; -import jakarta.enterprise.context.ApplicationScoped; -import jakarta.ws.rs.WebApplicationException; -import org.eclipse.microprofile.config.inject.ConfigProperty; -import org.jboss.logging.Logger; -import org.jboss.pnc.client.*; -import org.jboss.pnc.dto.Artifact; -import org.jboss.pnc.dto.Build; -import org.jboss.pnc.dto.BuildConfiguration; -import org.jboss.pnc.dto.ProductVersionRef; - -import java.util.Optional; - -/** - * A service to interact with the PNC build system. - */ - -//@ApplicationScoped -public class PncService { - - private static final Logger log = Logger.getLogger(PncService.class); - - public PncService() { - artifactClient = new ArtifactClient(getConfiguration()); - buildClient = new BuildClient(getConfiguration()); - buildConfigurationClient = new BuildConfigurationClient(getConfiguration()); - } - - public String getApiUrl() { - return apiUrl; - } - - @ConfigProperty(name = "pnc.api-url") - String apiUrl; - - ArtifactClient artifactClient; - - BuildClient buildClient; - - BuildConfigurationClient buildConfigurationClient; - - /* - @PostConstruct - void init() { - artifactClient = new ArtifactClient(getConfiguration()); - buildClient = new BuildClient(getConfiguration()); - buildConfigurationClient = new BuildConfigurationClient(getConfiguration()); - } - - @PreDestroy - void cleanup() { - artifactClient.close(); - buildClient.close(); - buildConfigurationClient.close(); - } - */ - - /** - * Setup basic configuration to be able to talk to PNC. - * - * - * @return - */ - public Configuration getConfiguration() { - return Configuration.builder().host(apiUrl).protocol("http").build(); - } - - /** - *

- * Fetch information about the PNC {@link Build} identified by the particular {@code buildId}. - *

- * - *

- * In case the {@link Build} with provided identifier cannot be found {@code null} is returned. - *

- * - * @param buildId Tbe {@link Build} identifier in PNC - * @return The {@link Build} object or {@code null} in case the {@link Build} could not be found. - */ - public Build getBuild(String buildId) { - log.debugv("Fetching Build from PNC with id '{}'", buildId); - try { - return buildClient.getSpecific(buildId); - } catch (RemoteResourceNotFoundException ex) { - log.warnv("Build with id '{}' was not found in PNC", buildId); - return null; - } catch (RemoteResourceException ex) { - throw new WebApplicationException("Build could not be retrieved because PNC responded with an error", ex); - } - } - - /** - *

- * Fetch information about the PNC {@link BuildConfiguration} identified by the particular {@code buildConfigId}. - *

- * - *

- * In case the {@link BuildConfiguration} with provided identifier cannot be found {@code null} is returned. - *

- * - * @param buildId Tbe {@link BuildConfiguration} identifier in PNC - * @return The {@link BuildConfiguration} object or {@code null} in case the {@link BuildConfiguration} could not be - * found. - */ - public BuildConfiguration getBuildConfig(String buildConfigId) { - log.debugv("Fetching BuildConfig from PNC with id '{}'", buildConfigId); - try { - return buildConfigurationClient.getSpecific(buildConfigId); - } catch (RemoteResourceNotFoundException ex) { - log.warnv("BuildConfig with id '{}' was not found in PNC", buildConfigId); - return null; - } catch (RemoteResourceException ex) { - throw new WebApplicationException( - "BuildConfig could not be retrieved because PNC responded with an error", - ex); - } - } - - /** - *

- * Obtains the {@link ProductVersionRef} for a given PNC {@link Build} identifier. - *

- * - * @param buildId The {@link Build} identifier to get the Product Version for. - * @return The {@link ProductVersionRef} object for the related or {@code null} in case it is not possible to obtain - * it. - */ - public ProductVersionRef getProductVersion(String buildId) { - log.debugv("Fetching Product Version information from PNC for build '{}'", buildId); - - if (buildId == null) { - return null; - } - Build build = getBuild(buildId); - - if (build == null) { - log.warn("Build related to the SBOM could not be found in PNC, interrupting processing"); - return null; - } - - BuildConfiguration buildConfig = getBuildConfig(build.getBuildConfigRevision().getId()); - - if (buildConfig == null) { - log.warn("BuildConfig related to the SBOM could not be found in PNC, interrupting processing"); - return null; - } - - ProductVersionRef productVersion = buildConfig.getProductVersion(); - - if (productVersion == null) { - log.warn( - "BuildConfig related to the SBOM does not provide product version information, interrupting processing"); - return null; - } - - return productVersion; - } - - /** - * Fetch information about the PNC {@link Artifact} identified by the particular purl. - * - * @param purl - * @return The {@link Artifact} object or {@code null} if it cannot be found. - */ - public Artifact getArtifact(String purl) { - log.debugv("Fetching artifact from PNC for purl '{}'", purl); - - try { - String artifactQuery = "purl==\"" + purl + "\""; - RemoteCollection artifacts = artifactClient - .getAll(null, null, null, Optional.empty(), Optional.of(artifactQuery)); - if (artifacts.size() == 0) { - log.debugv("Artifact with purl '{}' was not found in PNC", purl); - return null; - } else if (artifacts.size() > 1) { - throw new IllegalStateException("There should exist only one artifact with purl " + purl); - } - return artifacts.iterator().next(); - } catch (RemoteResourceNotFoundException ex) { - throw new WebApplicationException("Artifact with purl" + purl + "was not found in PNC", ex); - } catch (RemoteResourceException ex) { - throw new WebApplicationException( - "Artifact with purl" + purl + "could not be retrieved because PNC responded with an error", - ex); - } - } - -}