Class ArtifactoryService

java.lang.Object
com.konfigyr.gradle.ArtifactoryService
All Implemented Interfaces:
org.gradle.api.services.BuildService<@NonNull com.konfigyr.gradle.ArtifactoryService.Parameters>

public abstract class ArtifactoryService extends Object implements org.gradle.api.services.BuildService<@NonNull com.konfigyr.gradle.ArtifactoryService.Parameters>
Gradle BuildService for interacting with the Konfigyr Artifactory REST API.
Since:
1.0.0
See Also:
  • ArtifactoryClient
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new ArtifactoryService instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    @NonNull com.konfigyr.artifactory.ServiceRelease
    complete(@NonNull String namespace, @NonNull String service, @NonNull com.konfigyr.artifactory.ServiceRelease release)
    Completes the given ServiceRelease, promoting it to the service's current Manifest.
    com.konfigyr.artifactory.ArtifactMetadata
    createArtifactMetadata(com.konfigyr.artifactory.Artifact artifact, File metadata)
    Creates an ArtifactMetadata instances for the given Artifact by loading the serialized configuration metadata from the given File.
    List<com.konfigyr.artifactory.PropertyDescriptor>
    parsePropertyDescriptors(Iterable<? extends com.konfigyr.ArtifactMetadataResource> metadata, Iterable<? extends File> classpath)
    Attempts to parse the given collection of ArtifactMetadataResources into a list of PropertyDescriptors.
    void
    publish(@NonNull com.konfigyr.artifactory.ArtifactMetadata metadata, @NonNull Duration timeout, @NonNull Duration interval)
    Starts the publication process for the given ArtifactMetadata.
    com.konfigyr.artifactory.ArtifactMetadata
    Reads a single ArtifactMetadata previously written by writeServiceArtifactMetadata(ArtifactMetadata, File).
    List<com.konfigyr.artifactory.ArtifactMetadata>
    readArtifactMetadata(File manifest, File directory)
    Reads ArtifactMetadata from the given directory that are present in the artifact manifest list.
    com.konfigyr.artifactory.ServiceRelease
    release(@NonNull String namespace, @NonNull String service, @NonNull Collection<? extends com.konfigyr.artifactory.ServiceReleaseCandidate> candidates)
    Attempts to publish a new ServiceRelease for the given namespace and service.
    void
    upload(@NonNull String namespace, @NonNull String service, @NonNull com.konfigyr.artifactory.ServiceRelease release, @NonNull com.konfigyr.artifactory.ArtifactMetadata metadata)
    Uploads the given ArtifactMetadata for the given ServiceRelease.
    writeArtifactMetadata(com.konfigyr.artifactory.ArtifactMetadata metadata, File targetDirectory)
    Writes the given ArtifactMetadata to the given directory.
    void
    writePropertyDescriptorMetadata(Iterable<? extends com.konfigyr.ArtifactMetadataResource> metadata, Iterable<? extends File> classpath, File target)
    Generates and writes PropertyDescriptor metadata extracted from the given collection of ArtifactMetadataResources to the given target File.
    void
    writeServiceArtifactMetadata(com.konfigyr.artifactory.ArtifactMetadata metadata, File target)
    Writes the given ArtifactMetadata to the exact given target file, unlike writeArtifactMetadata(ArtifactMetadata, File) which derives a filename from the artifact's coordinates inside a target directory.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.gradle.api.services.BuildService

    getParameters
  • Constructor Details

    • ArtifactoryService

      public ArtifactoryService()
      Creates a new ArtifactoryService instance.
  • Method Details

    • parsePropertyDescriptors

      public List<com.konfigyr.artifactory.PropertyDescriptor> parsePropertyDescriptors(Iterable<? extends com.konfigyr.ArtifactMetadataResource> metadata, Iterable<? extends File> classpath)
      Attempts to parse the given collection of ArtifactMetadataResources into a list of PropertyDescriptors.

      This method would create a ClassLoader that can resolve the Java types to construct the JsonSchema for each property using the specified collection of classpath files, usually jars.

      Parameters:
      metadata - the collection of Spring Boot configuration metadata resources, cannot be null.
      classpath - the collection of files used to create a ClassLoader, cannot be null.
      Returns:
      list of parsed PropertyDescriptor, never null.
    • writePropertyDescriptorMetadata

      public void writePropertyDescriptorMetadata(Iterable<? extends com.konfigyr.ArtifactMetadataResource> metadata, Iterable<? extends File> classpath, File target)
      Generates and writes PropertyDescriptor metadata extracted from the given collection of ArtifactMetadataResources to the given target File.

      This method would create a ClassLoader that can resolve the Java types to construct the JsonSchema for each property using the specified collection of classpath files, usually jars.

      Parameters:
      metadata - the collection of Spring Boot configuration metadata resources, cannot be null.
      classpath - the collection of files used to create a ClassLoader, cannot be null.
      target - the target file where the metadata should be written, cannot be null.
    • createArtifactMetadata

      public com.konfigyr.artifactory.ArtifactMetadata createArtifactMetadata(com.konfigyr.artifactory.Artifact artifact, File metadata)
      Creates an ArtifactMetadata instances for the given Artifact by loading the serialized configuration metadata from the given File.
      Parameters:
      artifact - the artifact for which the metadata is created, cannot be null.
      metadata - the file containing the serialized configuration metadata, cannot be null.
      Returns:
      the artifact metadata that should be published, never null.
    • writeArtifactMetadata

      public String writeArtifactMetadata(com.konfigyr.artifactory.ArtifactMetadata metadata, File targetDirectory)
      Writes the given ArtifactMetadata to the given directory. The file that would be created, or updated, would be using the following file name format: ${groupId}-${artifactId}-${version}.json
      Parameters:
      metadata - artifact metadata to be written
      targetDirectory - the target directory where the metadata should be written
      Returns:
      the name of the file that was written, never null.
    • writeServiceArtifactMetadata

      public void writeServiceArtifactMetadata(com.konfigyr.artifactory.ArtifactMetadata metadata, File target)
      Writes the given ArtifactMetadata to the exact given target file, unlike writeArtifactMetadata(ArtifactMetadata, File) which derives a filename from the artifact's coordinates inside a target directory. Used for the metadata of the artifact that represents the service (project) itself, where there is always at most one file and no need to derive its name.
      Parameters:
      metadata - artifact metadata to be written
      target - the exact file to write the metadata to
    • readArtifactMetadata

      public com.konfigyr.artifactory.ArtifactMetadata readArtifactMetadata(File metadata)
      Reads a single ArtifactMetadata previously written by writeServiceArtifactMetadata(ArtifactMetadata, File).
      Parameters:
      metadata - the exact file to read the metadata from, cannot be null.
      Returns:
      the artifact metadata, never null.
    • readArtifactMetadata

      public List<com.konfigyr.artifactory.ArtifactMetadata> readArtifactMetadata(File manifest, File directory) throws IOException
      Reads ArtifactMetadata from the given directory that are present in the artifact manifest list.

      This method should collect all the filenames in the artifact manifest file and then attempt to deserialize the metadata files from the given output directory.

      Parameters:
      manifest - the manifest file that contains the list of metadata files to be uploaded
      directory - the directory where the metadata files are located
      Returns:
      list of artifact metadata, never null.
      Throws:
      IOException - if an I/O error occurs while reading the metadata files.
    • release

      public com.konfigyr.artifactory.ServiceRelease release(@NonNull String namespace, @NonNull String service, @NonNull Collection<? extends com.konfigyr.artifactory.ServiceReleaseCandidate> candidates)
      Attempts to publish a new ServiceRelease for the given namespace and service.
      Parameters:
      namespace - the namespace owning the service, cannot be null.
      service - the service this release is opened for, cannot be null.
      candidates - the release candidate artifacts to be added to the new release, cannot be null.
      Returns:
      the service release, never null
    • upload

      public void upload(@NonNull String namespace, @NonNull String service, @NonNull com.konfigyr.artifactory.ServiceRelease release, @NonNull com.konfigyr.artifactory.ArtifactMetadata metadata)
      Uploads the given ArtifactMetadata for the given ServiceRelease. Intended to be called from a ServiceReleaseArtifactUploadAction, one artifact per work item.
      Parameters:
      namespace - the namespace owning the service, cannot be null.
      service - the service this release belongs to, cannot be null.
      release - the service release this upload contributes to, cannot be null.
      metadata - the artifact metadata payload to upload, cannot be null.
      Throws:
      org.gradle.api.artifacts.PublishException - if the upload fails.
    • complete

      public @NonNull com.konfigyr.artifactory.ServiceRelease complete(@NonNull String namespace, @NonNull String service, @NonNull com.konfigyr.artifactory.ServiceRelease release)
      Completes the given ServiceRelease, promoting it to the service's current Manifest. Every ServiceReleaseEntry requiring an upload must already have been uploaded via upload(String, String, ServiceRelease, ArtifactMetadata) before this is called.
      Parameters:
      namespace - the namespace owning the service, cannot be null.
      service - the service this release belongs to, cannot be null.
      release - the release to complete, cannot be null.
      Returns:
      the completed release, never null.
      Throws:
      org.gradle.api.artifacts.PublishException - if the release could not be completed.
    • publish

      public void publish(@NonNull com.konfigyr.artifactory.ArtifactMetadata metadata, @NonNull Duration timeout, @NonNull Duration interval)
      Starts the publication process for the given ArtifactMetadata. This method would post the metadata to the Konfigyr Artifactory and then poll the service until the publication state is either successfully published or failed.
      Parameters:
      metadata - the artifact metadata to publish, cannot be null.
      timeout - the maximum time to wait for a successful poll of the release, cannot be null.
      interval - the time interval between consecutive polling attempts, cannot be null.
      Throws:
      org.gradle.api.artifacts.PublishException - if the poll process timed out or the artifact metadata upload fails.