Class 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 Detail

      • ChannelSession

        public ChannelSession​(List<Channel> channels,
                              MavenVersionsResolver.Factory factory)
        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.
    • Method Detail

      • resolveMavenArtifact

        public MavenArtifact resolveMavenArtifact​(String groupId,
                                                  String artifactId,
                                                  String extension,
                                                  String classifier,
                                                  String baseVersion)
                                           throws UnresolvedMavenArtifactException
        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:
        UnresolvedMavenArtifactException - if the latest version can not be resolved or the artifact itself can not be resolved.
      • 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:
        UnresolvedMavenArtifactException
      • resolveDirectMavenArtifact

        public MavenArtifact resolveDirectMavenArtifact​(String groupId,
                                                        String artifactId,
                                                        String extension,
                                                        String classifier,
                                                        String version)
                                                 throws UnresolvedMavenArtifactException
        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:
        UnresolvedMavenArtifactException - if the artifact can not be resolved
      • resolveDirectMavenArtifacts

        public List<MavenArtifact> resolveDirectMavenArtifacts​(List<ArtifactCoordinate> coordinates)
                                                        throws UnresolvedMavenArtifactException
        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:
        UnresolvedMavenArtifactException - if the artifact can not be resolved
      • findLatestMavenArtifactVersion

        public String findLatestMavenArtifactVersion​(String groupId,
                                                     String artifactId,
                                                     String extension,
                                                     String classifier,
                                                     String baseVersion)
                                              throws UnresolvedMavenArtifactException
        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:
        UnresolvedMavenArtifactException - if the latest version cannot be established
      • getRecordedChannel

        public Channel 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.