Class ChannelSession

java.lang.Object
org.wildfly.channel.ChannelSession
All Implemented Interfaces:
AutoCloseable

public class ChannelSession extends Object implements AutoCloseable
A ChannelSession is used to install and resolve Maven Artifacts inside a single scope.
  • Constructor Details

    • ChannelSession

      public ChannelSession(List<Channel> channelDefinitions, MavenVersionsResolver.Factory factory)
      Create a ChannelSession.
      Parameters:
      channelDefinitions - the list of channels to resolve Maven artifact
      factory - Factory to create MavenVersionsResolver that are performing the actual Maven resolution.
      Throws:
      UnresolvedRequiredManifestException - - if a required manifest cannot be resolved either via maven coordinates or in the list of channels
      CyclicDependencyException - - if the required manifests form a cyclic dependency
    • ChannelSession

      public ChannelSession(List<Channel> channelDefinitions, MavenVersionsResolver.Factory factory, int versionResolutionParallelism)
      Create a ChannelSession.
      Parameters:
      channels - the list of channels to resolve Maven artifact
      factory - Factory to create MavenVersionsResolver that are performing the actual Maven resolution.
      versionResolutionParallelism - Number of threads to use when resolving available artifact versions.
      Throws:
      UnresolvedRequiredManifestException - - if a required manifest cannot be resolved either via maven coordinates or in the list of channels
      CyclicDependencyException - - if the required manifests form a cyclic dependency
  • Method Details

    • getRuntimeChannels

      public List<RuntimeChannel> getRuntimeChannels()
      Get the definitions of channels used by this session. Returned version contains resolved versions of channel metadata (if applicable).
      Returns:
      List of RuntimeChannels used to resolve artifacts by this session
    • resolveMavenArtifact

      public MavenArtifact resolveMavenArtifact(String groupId, String artifactId, String extension, String classifier, String baseVersion) throws NoStreamFoundException, ArtifactTransferException
      Resolve the Maven artifact according to the session's channels.

      In order to find the stream corresponding to the Maven artifact, the channels are searched depth-first, starting with the first channel in the list and into their respective required channels. Once the first stream that matches the groupId and parameters is found, the Maven artifact will be resolved with the version determined by this stream.

      Parameters:
      groupId - - required
      artifactId - - required
      extension - - can be null
      classifier - - can be null
      baseVersion - - can be null. The base version is required when the stream for the component specifies multiple versions and needs the base version to determine the appropriate version to resolve.
      Returns:
      the Maven Artifact (with a file corresponding to the artifact).
      Throws:
      NoStreamFoundException - if none of the channels in the ChannelSession provides the artifact
      ArtifactTransferException - if the artifact is provided by the ChannelSession, but the resolution failed
    • getManifests

      public List<ChannelManifest> getManifests()
      Return the list of manifests configured in this channel session.
      Returns:
      The list of manifests.
    • resolveMavenArtifacts

      public List<MavenArtifact> resolveMavenArtifacts(List<ArtifactCoordinate> coordinates) throws UnresolvedMavenArtifactException
      Resolve a list of Maven artifacts according to the session's channels.

      In order to find the stream corresponding to the Maven artifact, the channels are searched depth-first, starting with the first channel in the list and into their respective required channels. Once the first stream that matches the groupId and parameters is found, the Maven artifact will be resolved with the version determined by this stream.

      The returned list of resolved artifacts does not maintain ordering of requested coordinates

      Parameters:
      coordinates - list of ArtifactCoordinates to resolve
      Returns:
      a list of resolved MavenArtifacts with resolved versions asnd files
      Throws:
      NoStreamFoundException - if one or more of the artifact is not provided by any of the channels in the ChannelSession
      ArtifactTransferException - if one or more of the artifacts is provided by the ChannelSession, but the resolution failed
      UnresolvedMavenArtifactException
    • resolveDirectMavenArtifact

      public MavenArtifact resolveDirectMavenArtifact(String groupId, String artifactId, String extension, String classifier, String version) throws ArtifactTransferException
      Resolve the Maven artifact with a specific version without checking the channels.

      If the artifact is resolved, a stream for it is added to the getRecordedChannel.

      Parameters:
      groupId - - required
      artifactId - - required
      extension - - can be null
      classifier - - can be null
      version - - required
      Returns:
      the Maven Artifact (with a file corresponding to the artifact).
      Throws:
      ArtifactTransferException - if the artifact can not be resolved
    • resolveDirectMavenArtifacts

      public List<MavenArtifact> resolveDirectMavenArtifacts(List<ArtifactCoordinate> coordinates) throws ArtifactTransferException
      Resolve a list of Maven artifacts with a specific version without checking the channels.

      If the artifact is resolved, a stream for it is added to the getRecordedChannel.

      Parameters:
      coordinates - - list of ArtifactCoordinates to check
      Returns:
      the Maven Artifact (with a file corresponding to the artifact).
      Throws:
      ArtifactTransferException - if the artifact can not be resolved
    • findLatestMavenArtifactVersion

      public VersionResult findLatestMavenArtifactVersion(String groupId, String artifactId, String extension, String classifier, String baseVersion) throws NoStreamFoundException
      Find the latest version of the Maven artifact in the session's channel. The artifact file will not be resolved.
      Parameters:
      groupId - - required
      artifactId - - required
      extension - - can be null
      classifier - - can be null
      baseVersion - - can be null. The base version is required when the stream for the component specifies multiple versions and needs the base version to determine the appropriate version to resolve.
      Returns:
      the latest version if a Maven artifact
      Throws:
      NoStreamFoundException - if the latest version cannot be established
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • getRecordedChannel

      public ChannelManifest getRecordedChannel()
      Returns a synthetic Channel where each resolved artifacts (either with exact or latest version) is defined in a Stream with a version field.

      This channel can be used to reproduce the same resolution in another ChannelSession.

      Returns:
      a synthetic Channel.