org.apache.ivy.core.resolve
Class IvyNode

java.lang.Object
  extended by org.apache.ivy.core.resolve.IvyNode
All Implemented Interfaces:
java.lang.Comparable

public class IvyNode
extends java.lang.Object
implements java.lang.Comparable


Constructor Summary
IvyNode(ResolveData data, IvyNode parent, DependencyDescriptor dd)
           
IvyNode(ResolveData data, ModuleDescriptor md)
           
 
Method Summary
 void addCaller(java.lang.String rootModuleConf, IvyNode callerNode, java.lang.String callerConf, java.lang.String requestedConf, java.lang.String[] dependencyConfs, DependencyDescriptor dd)
           
 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.
 void clean()
          Clean data related to one root module configuration only
 int compareTo(java.lang.Object obj)
           
 void discardConf(java.lang.String rootModuleConf, java.lang.String conf)
           
 boolean doesCallersExclude(java.lang.String rootModuleConf, Artifact artifact, java.util.Stack callersStack)
           
 boolean equals(java.lang.Object obj)
           
 IvyNode findNode(ModuleRevisionId mrid)
           
 Artifact[] getAllArtifacts()
          Returns all the artifacts of this dependency required in all the root module configurations
 IvyNodeCallers.Caller[] getAllCallers()
           
 java.util.Collection getAllCallersModuleIds()
           
 java.util.Collection getAllEvictingConflictManagers()
           
 java.util.Collection getAllEvictingNodes()
           
 java.util.Collection getAllEvictingNodesDetails()
           
 IvyNodeCallers.Caller[] getAllRealCallers()
           
 Artifact[] getArtifacts(java.lang.String rootModuleConf)
          Returns the artifacts of this dependency required in the configurations themselves required in the given root module configuration
 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.
 IvyNodeCallers.Caller[] getCallers(java.lang.String rootModuleConf)
           
 Configuration getConfiguration(java.lang.String conf)
           
 java.lang.String[] getConfigurations(java.lang.String rootModuleConf)
          Returns the configurations of the dependency required in a given root module configuration.
 ConflictManager getConflictManager(ModuleId mid)
           
 java.lang.String[] getConfsToFetch()
           
 ResolveData getData()
           
 java.util.Collection getDependencies(java.lang.String rootModuleConf, java.lang.String[] confs)
           
 java.util.Collection getDependencies(java.lang.String rootModuleConf, java.lang.String conf, java.lang.String requestedConf)
           
 DependencyDescriptor getDependencyDescriptor(IvyNode parent)
           
 ModuleDescriptor getDescriptor()
           
 java.lang.String[] getEvictedConfs()
           
 IvyNodeEviction.EvictionData getEvictedData(java.lang.String rootModuleConf)
           
 java.util.Collection getEvictedNodes(ModuleId mid, java.lang.String rootModuleConf)
           
 java.util.Collection getEvictedRevisions(ModuleId mid, java.lang.String rootModuleConf)
           
 IvyNodeEviction.EvictionData getEvictionDataInRoot(java.lang.String rootModuleConf, IvyNode ancestor)
           
 ModuleRevisionId getId()
           
 long getLastModified()
          Returns the last modified timestamp of the module represented by this Node, or 0 if the last modified timestamp is currently unkwown (module not loaded)
 IvyNodeUsage getMainUsage()
           
 ModuleId getModuleId()
           
 ResolvedModuleRevision getModuleRevision()
           
 java.util.Collection 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
 java.lang.Exception getProblem()
           
 java.lang.String getProblemMessage()
           
 long getPublication()
           
 java.lang.String[] getRealConfs(java.lang.String conf)
           
 IvyNode getRealNode()
           
 java.lang.String[] getRequiredConfigurations()
          returns all the current required configurations of the node
 java.lang.String[] getRequiredConfigurations(IvyNode in, java.lang.String inConf)
          returns the required configurations from the given node
 ModuleRevisionId getResolvedId()
           
 java.util.Set getResolvedNodes(ModuleId moduleId, java.lang.String rootModuleConf)
          A copy of the set of resolved nodes (real nodes)
 java.util.Collection getResolvedRevisions(ModuleId moduleId, java.lang.String rootModuleConf)
           
 IvyNode getRoot()
           
 java.lang.String[] getRootModuleConfigurations()
          Returns the root module configurations in which this dependency is required
 java.util.Set getRootModuleConfigurationsSet()
          Returns the root module configurations in which this dependency is required
 Artifact[] getSelectedArtifacts(Filter artifactFilter)
          Returns all the artifacts of this dependency required in the root module configurations in which the node is not evicted nor blacklisted
 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.
 boolean hasConfigurationsToLoad()
           
 int hashCode()
           
 boolean hasProblem()
           
 boolean isBlacklisted(java.lang.String rootModuleConf)
          Indicates if this node has been blacklisted in the given root module conf.
 boolean isCompletelyBlacklisted()
          Indicates if this node has been blacklisted in all root module configurations.
 boolean isCompletelyEvicted()
           
protected  boolean isConfRequiredByMergedUsageOnly(java.lang.String rootModuleConf, java.lang.String conf)
           
 boolean isDownloaded()
           
 boolean isEvicted(java.lang.String rootModuleConf)
           
 boolean isFetched(java.lang.String conf)
           
 boolean isLoaded()
           
 boolean isSearched()
           
 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.
 void markEvicted(IvyNodeEviction.EvictionData evictionData)
           
 void markEvicted(java.lang.String rootModuleConf, IvyNode node, ConflictManager conflictManager, java.util.Collection resolved)
           
 void setEvictedNodes(ModuleId moduleId, java.lang.String rootModuleConf, java.util.Collection evicted)
           
 void setPendingConflicts(ModuleId moduleId, java.lang.String rootModuleConf, java.util.Collection conflicts)
           
 void setResolvedNodes(ModuleId moduleId, java.lang.String rootModuleConf, java.util.Collection resolved)
           
 java.lang.String toString()
           
 void updateConfsToFetch(java.util.Collection confs)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

IvyNode

public IvyNode(ResolveData data,
               IvyNode parent,
               DependencyDescriptor dd)

IvyNode

public IvyNode(ResolveData data,
               ModuleDescriptor md)
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(); ...


getDependencies

public java.util.Collection getDependencies(java.lang.String rootModuleConf,
                                            java.lang.String[] confs)

getDependencies

public java.util.Collection getDependencies(java.lang.String rootModuleConf,
                                            java.lang.String conf,
                                            java.lang.String requestedConf)

getDependencyDescriptor

public DependencyDescriptor getDependencyDescriptor(IvyNode parent)

hasConfigurationsToLoad

public boolean hasConfigurationsToLoad()

updateConfsToFetch

public void updateConfsToFetch(java.util.Collection confs)

getRequiredConfigurations

public java.lang.String[] getRequiredConfigurations(IvyNode in,
                                                    java.lang.String inConf)
returns the required configurations from the given node

Parameters:
in -
Returns:

getRequiredConfigurations

public java.lang.String[] getRequiredConfigurations()
returns all the current required configurations of the node

Returns:

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 -
Returns:

isConfRequiredByMergedUsageOnly

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

discardConf

public void discardConf(java.lang.String rootModuleConf,
                        java.lang.String conf)

getRootModuleConfigurations

public java.lang.String[] getRootModuleConfigurations()
Returns the root module configurations in which this dependency is required

Returns:

getRootModuleConfigurationsSet

public java.util.Set getRootModuleConfigurationsSet()
Returns the root module configurations in which this dependency is required

Returns:

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:

getSelectedArtifacts

public Artifact[] getSelectedArtifacts(Filter 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 -
Returns:

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 -
Returns:

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)

findNode

public IvyNode findNode(ModuleRevisionId mrid)

getRoot

public IvyNode getRoot()

getConflictManager

public ConflictManager getConflictManager(ModuleId mid)

getRealNode

public IvyNode getRealNode()

getId

public ModuleRevisionId getId()

getModuleId

public ModuleId getModuleId()

getDescriptor

public ModuleDescriptor getDescriptor()

getData

public ResolveData getData()

getModuleRevision

public ResolvedModuleRevision getModuleRevision()

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 unkwown (module not loaded)

Returns:
the last modified timestamp of the module represented by this Node

getResolvedId

public ModuleRevisionId getResolvedId()

clean

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


getCallers

public IvyNodeCallers.Caller[] getCallers(java.lang.String rootModuleConf)

getAllCallersModuleIds

public java.util.Collection getAllCallersModuleIds()

getAllCallers

public IvyNodeCallers.Caller[] getAllCallers()

getAllRealCallers

public IvyNodeCallers.Caller[] getAllRealCallers()

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 callersStack)

getResolvedNodes

public java.util.Set getResolvedNodes(ModuleId moduleId,
                                      java.lang.String rootModuleConf)
A copy of the set of resolved nodes (real nodes)


getResolvedRevisions

public java.util.Collection getResolvedRevisions(ModuleId moduleId,
                                                 java.lang.String rootModuleConf)

markEvicted

public void markEvicted(IvyNodeEviction.EvictionData evictionData)

getAllEvictingConflictManagers

public java.util.Collection getAllEvictingConflictManagers()

getAllEvictingNodes

public java.util.Collection getAllEvictingNodes()

getAllEvictingNodesDetails

public java.util.Collection getAllEvictingNodesDetails()

getEvictedConfs

public java.lang.String[] getEvictedConfs()

getEvictedData

public IvyNodeEviction.EvictionData getEvictedData(java.lang.String rootModuleConf)

getEvictedNodes

public java.util.Collection getEvictedNodes(ModuleId mid,
                                            java.lang.String rootModuleConf)

getEvictedRevisions

public java.util.Collection getEvictedRevisions(ModuleId mid,
                                                java.lang.String rootModuleConf)

getEvictionDataInRoot

public IvyNodeEviction.EvictionData getEvictionDataInRoot(java.lang.String rootModuleConf,
                                                          IvyNode ancestor)

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 resolved)

setEvictedNodes

public void setEvictedNodes(ModuleId moduleId,
                            java.lang.String rootModuleConf,
                            java.util.Collection evicted)

setResolvedNodes

public void setResolvedNodes(ModuleId moduleId,
                             java.lang.String rootModuleConf,
                             java.util.Collection 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(java.lang.Object obj)
Specified by:
compareTo in interface java.lang.Comparable

hashCode

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

getPendingConflicts

public java.util.Collection 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 -
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 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:
rootModuleConf - 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(String)

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(String)

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

getMainUsage

public IvyNodeUsage getMainUsage()

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.