Class IvyNode

  • All Implemented Interfaces:
    java.lang.Comparable<IvyNode>

    public class IvyNode
    extends java.lang.Object
    implements java.lang.Comparable<IvyNode>
    • Method Detail

      • loadData

        public boolean loadData​(java.lang.String rootModuleConf,
                                IvyNode parent,
                                java.lang.String parentConf,
                                java.lang.String conf,
                                boolean shouldBePublic,
                                IvyNodeUsage usage)
        After the call node may be discarded. To avoid using discarded node, make sure to get the real node after the call IvyNode node = ... node.loadData(); node = node.getRealNode(); ...
        Parameters:
        rootModuleConf - String
        parent - IvyNode
        parentConf - String
        conf - String
        shouldBePublic - boolean
        usage - IvyNodeUsage
        Returns:
        boolean
      • getDependencies

        public java.util.Collection<IvyNode> getDependencies​(java.lang.String rootModuleConf,
                                                             java.lang.String[] confs,
                                                             java.lang.String requestedConf)
      • getDependencies

        public java.util.Collection<IvyNode> getDependencies​(java.lang.String rootModuleConf,
                                                             java.lang.String conf,
                                                             java.lang.String requestedConf)
        Load the dependencies of the current node

        The resulting collection of nodes may have some configuration to load

        Parameters:
        rootModuleConf - the requested configuration of the root module
        conf - the configuration to load of this node
        requestedConf - the actual node conf requested, possibly extending the conf one.
        Returns:
        Collection of IvyNode
      • hasConfigurationsToLoad

        public boolean hasConfigurationsToLoad()
      • updateConfsToFetch

        public void updateConfsToFetch​(java.util.Collection<java.lang.String> confs)
      • getRequiredConfigurations

        public java.lang.String[] getRequiredConfigurations​(IvyNode in,
                                                            java.lang.String inConf)
        returns the required configurations from the given node
        Parameters:
        in - IvyNode
        inConf - ditto
        Returns:
        array of configuration names
      • getRequiredConfigurations

        public java.lang.String[] getRequiredConfigurations()
        returns all the current required configurations of the node
        Returns:
        array of configuration names
      • getConfiguration

        public Configuration getConfiguration​(java.lang.String conf)
      • getConfigurations

        public java.lang.String[] getConfigurations​(java.lang.String rootModuleConf)
        Returns the configurations of the dependency required in a given root module configuration.
        Parameters:
        rootModuleConf - String
        Returns:
        array of configuration names
      • isConfRequiredByMergedUsageOnly

        protected boolean isConfRequiredByMergedUsageOnly​(java.lang.String rootModuleConf,
                                                          java.lang.String conf)
      • discardConf

        @Deprecated
        public void discardConf​(java.lang.String rootModuleConf,
                                java.lang.String conf)
        Deprecated.
      • getRootModuleConfigurations

        public java.lang.String[] getRootModuleConfigurations()
        Returns the root module configurations in which this dependency is required
        Returns:
        array of configuration names
      • getRootModuleConfigurationsSet

        public java.util.Set<java.lang.String> getRootModuleConfigurationsSet()
        Returns the root module configurations in which this dependency is required
        Returns:
        Set of configuration names
      • getConfsToFetch

        public java.lang.String[] getConfsToFetch()
      • getRealConfs

        public java.lang.String[] getRealConfs​(java.lang.String conf)
      • getAllArtifacts

        public Artifact[] getAllArtifacts()
        Returns all the artifacts of this dependency required in all the root module configurations
        Returns:
        array of Artifacts
      • getSelectedArtifacts

        public Artifact[] getSelectedArtifacts​(Filter<Artifact> artifactFilter)
        Returns all the artifacts of this dependency required in the root module configurations in which the node is not evicted nor blacklisted
        Parameters:
        artifactFilter - Filter
        Returns:
        array of Artifacts
      • getArtifacts

        public Artifact[] getArtifacts​(java.lang.String rootModuleConf)
        Returns the artifacts of this dependency required in the configurations themselves required in the given root module configuration
        Parameters:
        rootModuleConf - String
        Returns:
        array of Artifacts
      • hasProblem

        public boolean hasProblem()
      • getProblem

        public java.lang.Exception getProblem()
      • getProblemMessage

        public java.lang.String getProblemMessage()
      • isDownloaded

        public boolean isDownloaded()
      • isSearched

        public boolean isSearched()
      • isLoaded

        public boolean isLoaded()
      • isFetched

        public boolean isFetched​(java.lang.String conf)
      • getRoot

        public IvyNode getRoot()
      • getRealNode

        public IvyNode getRealNode()
      • getModuleId

        public ModuleId getModuleId()
      • getPublication

        public long getPublication()
      • getLastModified

        public long getLastModified()
        Returns the last modified timestamp of the module represented by this Node, or 0 if the last modified timestamp is currently unknown (module not loaded)
        Returns:
        the last modified timestamp of the module represented by this Node
      • clean

        public void clean()
        Clean data related to one root module configuration only
      • getAllCallersModuleIds

        public java.util.Collection<ModuleId> getAllCallersModuleIds()
      • addCaller

        public void addCaller​(java.lang.String rootModuleConf,
                              IvyNode callerNode,
                              java.lang.String callerConf,
                              java.lang.String requestedConf,
                              java.lang.String[] dependencyConfs,
                              DependencyDescriptor dd)
      • doesCallersExclude

        public boolean doesCallersExclude​(java.lang.String rootModuleConf,
                                          Artifact artifact,
                                          java.util.Stack<ModuleRevisionId> callersStack)
      • getResolvedNodes

        public java.util.Set<IvyNode> getResolvedNodes​(ModuleId moduleId,
                                                       java.lang.String rootModuleConf)
        A copy of the set of resolved nodes (real nodes)
        Parameters:
        moduleId - ditto
        rootModuleConf - String
        Returns:
        Set<IvyNode>
      • getResolvedRevisions

        public java.util.Collection<ModuleRevisionId> getResolvedRevisions​(ModuleId moduleId,
                                                                           java.lang.String rootModuleConf)
      • getAllEvictingConflictManagers

        public java.util.Collection<ConflictManager> getAllEvictingConflictManagers()
      • getAllEvictingNodes

        public java.util.Collection<IvyNode> getAllEvictingNodes()
      • getAllEvictingNodesDetails

        public java.util.Collection<java.lang.String> getAllEvictingNodesDetails()
      • getEvictedConfs

        public java.lang.String[] getEvictedConfs()
      • getEvictedNodes

        public java.util.Collection<IvyNode> getEvictedNodes​(ModuleId mid,
                                                             java.lang.String rootModuleConf)
      • getEvictedRevisions

        public java.util.Collection<ModuleRevisionId> getEvictedRevisions​(ModuleId mid,
                                                                          java.lang.String rootModuleConf)
      • isCompletelyEvicted

        public boolean isCompletelyEvicted()
      • isEvicted

        public boolean isEvicted​(java.lang.String rootModuleConf)
      • markEvicted

        public void markEvicted​(java.lang.String rootModuleConf,
                                IvyNode node,
                                ConflictManager conflictManager,
                                java.util.Collection<IvyNode> resolved)
      • setEvictedNodes

        public void setEvictedNodes​(ModuleId moduleId,
                                    java.lang.String rootModuleConf,
                                    java.util.Collection<IvyNode> evicted)
      • setResolvedNodes

        public void setResolvedNodes​(ModuleId moduleId,
                                     java.lang.String rootModuleConf,
                                     java.util.Collection<IvyNode> resolved)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • compareTo

        public int compareTo​(IvyNode that)
        Specified by:
        compareTo in interface java.lang.Comparable<IvyNode>
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getPendingConflicts

        public java.util.Collection<IvyNode> getPendingConflicts​(java.lang.String rootModuleConf,
                                                                 ModuleId mid)
        Returns a collection of Nodes in conflict for which conflict has been detected but conflict resolution hasn't been done yet
        Parameters:
        rootModuleConf - ditto
        mid - the module id for which pending conflicts should be found
        Returns:
        a Collection of IvyNode in pending conflict
      • setPendingConflicts

        public void setPendingConflicts​(ModuleId moduleId,
                                        java.lang.String rootModuleConf,
                                        java.util.Collection<IvyNode> conflicts)
      • blacklist

        public void blacklist​(IvyNodeBlacklist bdata)
        Blacklists the current node, so that a new resolve process won't ever consider this node as available in the repository.

        This is useful in combination with RestartResolveProcess for conflict manager implementation which use a best effort strategy to find compatible dependency set, like LatestCompatibleConflictManager

        Parameters:
        bdata - the root module configuration in which the node should be blacklisted
      • isBlacklisted

        public boolean isBlacklisted​(java.lang.String rootModuleConf)
        Indicates if this node has been blacklisted in the given root module conf.

        A blacklisted node should be considered as if it doesn't even exist on the repository.

        Parameters:
        rootModuleConf - the root module conf for which we'd like to know if the node is blacklisted
        Returns:
        true if this node is blacklisted int he given root module conf, false otherwise
        See Also:
        blacklist(IvyNodeBlacklist)
      • isCompletelyBlacklisted

        public boolean isCompletelyBlacklisted()
        Indicates if this node has been blacklisted in all root module configurations.
        Returns:
        true if this node is blacklisted in all root module configurations, false otherwise
        See Also:
        blacklist(IvyNodeBlacklist)
      • getBlacklistData

        public IvyNodeBlacklist getBlacklistData​(java.lang.String rootModuleConf)
        Returns the blacklist data of this node in the given root module conf, or null if this node is not blacklisted in this root module conf.
        Parameters:
        rootModuleConf - the root module configuration to consider
        Returns:
        the blacklist data if any
      • hasAnyMergedUsageWithTransitiveDependency

        public boolean hasAnyMergedUsageWithTransitiveDependency​(java.lang.String rootModuleConf)
        Indicates if there is any of the merged usages of this node which has a depender with transitive dependency descriptor.

        If at there is at least one usage from the merged usages for which there is a depender in the given root module conf which has a dependency descriptor with transitive == true, then it returns true. Otherwise it returns false.

        Parameters:
        rootModuleConf - the root module configuration to consider
        Returns:
        true if there is any merged usage with transitive dd, false otherwise.