VisitNode
Date: 2014-12-13

org.apache.ivy.core.resolve

## Class VisitNode

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

-     public class VisitNode
      extends java.lang.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 depency 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 occuring
  - parentConf
  the configuration of the parent in which this node is visited
  - rootModuleConf
  the configuration of the root module which is currently resolved

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `VisitNode(ResolveData data, IvyNode node, VisitNode parent, java.lang.String rootModuleConf, java.lang.String parentConf)`
    `VisitNode(ResolveData data, IvyNode node, VisitNode parent, java.lang.String rootModuleConf, java.lang.String parentConf, IvyNodeUsage usage)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Configuration` | `getConfiguration(java.lang.String conf)`
    `java.lang.String[]` | `getConfsToFetch()`
    `java.util.Collection` | `getDependencies(java.lang.String conf)`
    `DependencyDescriptor` | `getDependencyDescriptor()`
    `ModuleDescriptor` | `getDescriptor()`
    `IvyNodeEviction.EvictionData` | `getEvictedData()`
    `java.util.Collection` | `getEvictedRevisions(ModuleId moduleId)`
    `IvyNodeEviction.EvictionData` | `getEvictionDataInRoot(java.lang.String rootModuleConf, VisitNode ancestor)`
    `ModuleRevisionId` | `getId()`
    `ModuleId` | `getModuleId()`
    `IvyNode` | `getNode()`
    `VisitNode` | `getParent()`
    `java.lang.String` | `getParentConf()`
    `java.util.Collection` | `getPath()` Get an ordered collection with the nodes from the root to this node
    `java.lang.String[]` | `getRealConfs(java.lang.String conf)`
    `IvyNode` | `getRealNode()` Returns the 'real' node currently visited.
    `java.lang.String` | `getRequestedConf()`
    `java.lang.String[]` | `getRequiredConfigurations()`
    `java.lang.String[]` | `getRequiredConfigurations(VisitNode in, java.lang.String inConf)`
    `ModuleRevisionId` | `getResolvedId()`
    `java.util.Collection` | `getResolvedRevisions(ModuleId mid)`
    `VisitNode` | `getRoot()`
    `static VisitNode` | `getRoot(VisitNode parent)`
    `java.lang.String` | `getRootModuleConf()`
    `boolean` | `hasProblem()`
    `boolean` | `isCircular()` Returns true if this node can already be found in the path
    `boolean` | `isConfRequiredByMergedUsageOnly(java.lang.String conf)`
    `boolean` | `isEvicted()`
    `protected boolean` | `isParentConfTransitive()` Checks if the current node's parent configuration is transitive.
    `boolean` | `isTransitive()` Returns true if the current dependency descriptor is transitive and the parent configuration is transitive.
    `boolean` | `loadData(java.lang.String conf, boolean shouldBePublic)`
    `void` | `markEvicted(IvyNodeEviction.EvictionData evictionData)`
    `void` | `markEvicted(VisitNode parent, ConflictManager conflictMgr, java.util.Collection 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`
    `void` | `setParentConf(java.lang.String parentConf)`
    `void` | `setRequestedConf(java.lang.String requestedConf)`
    `java.lang.String` | `toString()`
    `void` | `updateConfsToFetch(java.util.Collection confs)`
    `void` | `useRealNode()` Ask to the current visited node to use a real node only, if one exist.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### VisitNode

          public VisitNode(ResolveData data,
                   IvyNode node,
                   VisitNode parent,
                   java.lang.String rootModuleConf,
                   java.lang.String parentConf)

    - #### VisitNode

          public VisitNode(ResolveData data,
                   IvyNode node,
                   VisitNode parent,
                   java.lang.String rootModuleConf,
                   java.lang.String parentConf,
                   IvyNodeUsage usage)

  - ### Method Detail

    - #### getNode

          public IvyNode getNode()

    - #### getRequestedConf

          public java.lang.String getRequestedConf()

      Returns:
        Returns the configuration requested by the parent

    - #### setRequestedConf

          public void setRequestedConf(java.lang.String requestedConf)

    - #### getParent

          public VisitNode getParent()

    - #### getRoot

          public VisitNode getRoot()

    - #### getPath

          public java.util.Collection getPath()

      Get an ordered collection with the nodes from the root to this node
      Returns:

    - #### getParentConf

          public java.lang.String getParentConf()

    - #### setParentConf

          public void setParentConf(java.lang.String parentConf)

    - #### getRootModuleConf

          public java.lang.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.
      Parameters:
        `node` - current node
      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(java.lang.String conf,
                         boolean shouldBePublic)

    - #### getDependencies

          public java.util.Collection getDependencies(java.lang.String conf)

    - #### getResolvedId

          public ModuleRevisionId getResolvedId()

    - #### updateConfsToFetch

          public void updateConfsToFetch(java.util.Collection confs)

    - #### getId

          public ModuleRevisionId getId()

    - #### isEvicted

          public boolean isEvicted()

    - #### getRealConfs

          public java.lang.String[] getRealConfs(java.lang.String conf)

    - #### hasProblem

          public boolean hasProblem()

    - #### getConfiguration

          public Configuration getConfiguration(java.lang.String conf)

    - #### getEvictedData

          public IvyNodeEviction.EvictionData getEvictedData()

    - #### getDependencyDescriptor

          public DependencyDescriptor getDependencyDescriptor()

    - #### isCircular

          public boolean isCircular()

      Returns true if this node can already be found in the path
      Returns:

    - #### getConfsToFetch

          public java.lang.String[] getConfsToFetch()

    - #### getRequiredConfigurations

          public java.lang.String[] getRequiredConfigurations(VisitNode in,
                                                     java.lang.String inConf)

    - #### getModuleId

          public ModuleId getModuleId()

    - #### getResolvedRevisions

          public java.util.Collection getResolvedRevisions(ModuleId mid)

    - #### markEvicted

          public void markEvicted(IvyNodeEviction.EvictionData evictionData)

    - #### getRequiredConfigurations

          public java.lang.String[] getRequiredConfigurations()

    - #### markEvicted

          public void markEvicted(VisitNode parent,
                         ConflictManager conflictMgr,
                         java.util.Collection 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(java.lang.String rootModuleConf,
                                                           VisitNode ancestor)

    - #### getEvictedRevisions

          public java.util.Collection getEvictedRevisions(ModuleId moduleId)

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### isConfRequiredByMergedUsageOnly

          public boolean isConfRequiredByMergedUsageOnly(java.lang.String conf)