Class VisitNode

java.lang.Object
org.apache.ivy.core.resolve.VisitNode

public class VisitNode extends Object
A visit node is an object used to represent one visit from one parent on an IvyNode of the dependency graph. During dependency resolution, the ResolveEngine visits nodes of the dependency graph following the dependencies, thus the same node can be visited several times, if it is requested from several module. In this case you will have one VisitNode per parent and per root module configuration. Thus VisitNode stores data specific to the visit:
parent
the node from which the visit is occurring
parentConf
the configuration of the parent in which this node is visited
rootModuleConf
the configuration of the root module which is currently resolved
  • Field Details

    • node

      private IvyNode node
      The node which is currently visited
    • parent

      private VisitNode parent
      Represents the current parent of the node during ivy visit of dependency graph.
    • root

      private VisitNode root
      The root node of the current visit It is null until it is required, see getRoot
    • path

      private Collection<VisitNode> path
      Direct path from root to this node. Note that the collection is ordered but is not a list implementation This collection is null until it is required, see getPath
    • parentConf

      private String parentConf
      The configuration of the parent module in the current visit
    • requestedConf

      private String requestedConf
      The configuration requested by the parent Note that this is the actual conf requested by the parent, not a configuration extended by the requested conf which actually trigger the node visit
    • rootModuleConf

      private String rootModuleConf
      The root configuration which is currently visited
    • data

      private ResolveData data
      Shared ResolveData instance, which can be used to get info on the current resolve process
    • isCircular

      private Boolean isCircular
      Boolean.TRUE if a node with a same module id as the one visited has already been visited in the current path. null if not computed yet Boolean.FALSE otherwise
    • usage

      private IvyNodeUsage usage
      IvyNode usage information to update when visiting the underlying IvyNode. This is usually the main IvyNodeUsage of the underlying node, except when we are visiting it coming from an evicted node replaced by the other one.
  • Constructor Details

  • Method Details

    • getNode

      public IvyNode getNode()
    • getRequestedConf

      public String getRequestedConf()
      Returns:
      Returns the configuration requested by the parent
    • setRequestedConf

      public void setRequestedConf(String requestedConf)
    • getParent

      public VisitNode getParent()
    • getRoot

      public VisitNode getRoot()
    • getPath

      public Collection<VisitNode> getPath()
      Get an ordered collection with the nodes from the root to this node
      Returns:
      Collection<VisitNode>
    • computePath

      private Collection<VisitNode> computePath()
    • computeRoot

      private VisitNode computeRoot()
    • getParentConf

      public String getParentConf()
    • setParentConf

      public void setParentConf(String parentConf)
    • getRootModuleConf

      public String getRootModuleConf()
    • getRoot

      public static VisitNode getRoot(VisitNode parent)
    • isTransitive

      public boolean isTransitive()
      Returns true if the current dependency descriptor is transitive and the parent configuration is transitive. Otherwise returns false.
      Returns:
      true if current node is transitive and the parent configuration is transitive.
    • isParentConfTransitive

      protected boolean isParentConfTransitive()
      Checks if the current node's parent configuration is transitive.
      Returns:
      true if the node's parent configuration is transitive
    • getRealNode

      public IvyNode getRealNode()
      Returns the 'real' node currently visited. 'Real' means that if we are visiting a node created originally with only a version constraint, and if this version constraint has been resolved to an existing node in the graph, we will return the existing node, and not the one originally used which is about to be discarded, since it's not possible to have in the graph two nodes for the same ModuleRevisionId
      Returns:
      the 'real' node currently visited.
    • useRealNode

      public void useRealNode()
      Ask to the current visited node to use a real node only, if one exist. See getRealNode for details about what a 'real' node is.
    • loadData

      public boolean loadData(String conf, boolean shouldBePublic)
    • getDependencies

      public Collection<VisitNode> getDependencies(String conf)
    • gotoNode

      VisitNode gotoNode(IvyNode node)
      Returns a VisitNode for the given node. The given node must be a representation of the same module (usually in another revision) as the one visited by this node.
      Parameters:
      node - the node to visit
      Returns:
      a VisitNode for the given node
    • getUsage

      private IvyNodeUsage getUsage()
    • traverseChild

      private VisitNode traverseChild(String parentConf, IvyNode child)
    • traverse

      private VisitNode traverse(VisitNode parent, String parentConf, IvyNode node, IvyNodeUsage usage)
    • toMrids

      private ModuleRevisionId[] toMrids(Collection<VisitNode> path, ModuleRevisionId last)
    • getResolvedId

      public ModuleRevisionId getResolvedId()
    • updateConfsToFetch

      public void updateConfsToFetch(Collection<String> confs)
    • getId

      public ModuleRevisionId getId()
    • isEvicted

      public boolean isEvicted()
    • getRealConfs

      public String[] getRealConfs(String conf)
    • hasProblem

      public boolean hasProblem()
    • getConfiguration

      public Configuration getConfiguration(String conf)
    • getEvictedData

      public IvyNodeEviction.EvictionData getEvictedData()
    • getDependencyDescriptor

      public DependencyDescriptor getDependencyDescriptor()
    • getParentNode

      private IvyNode getParentNode()
    • isCircular

      public boolean isCircular()
      Returns true if this node can already be found in the path
      Returns:
      boolean
    • getConfsToFetch

      public String[] getConfsToFetch()
    • getRequiredConfigurations

      public String[] getRequiredConfigurations(VisitNode in, String inConf)
    • getModuleId

      public ModuleId getModuleId()
    • getResolvedRevisions

      public Collection<ModuleRevisionId> getResolvedRevisions(ModuleId mid)
    • markEvicted

      public void markEvicted(IvyNodeEviction.EvictionData evictionData)
    • getRequiredConfigurations

      public String[] getRequiredConfigurations()
    • markEvicted

      public void markEvicted(VisitNode parent, ConflictManager conflictMgr, Collection<IvyNode> selected)
      Marks the current node as evicted by the the given selected IvyNodes, in the given parent and root module configuration, with the given ConflictManager
      Parameters:
      parent - the VisitNode in which eviction has been made
      conflictMgr - the conflict manager responsible for the eviction
      selected - a Collection of IvyNode which have been selected
    • getDescriptor

      public ModuleDescriptor getDescriptor()
    • getEvictionDataInRoot

      public IvyNodeEviction.EvictionData getEvictionDataInRoot(String rootModuleConf, VisitNode ancestor)
    • getEvictedRevisions

      public Collection<ModuleRevisionId> getEvictedRevisions(ModuleId moduleId)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • isConfRequiredByMergedUsageOnly

      public boolean isConfRequiredByMergedUsageOnly(String conf)