Package org.apache.ivy.core.sort
Class ModuleDescriptorSorter
- java.lang.Object
-
- org.apache.ivy.core.sort.ModuleDescriptorSorter
-
public class ModuleDescriptorSorter extends java.lang.Object
Inner helper class for sorting ModuleDescriptors.ModuleDescriptorSorter use CollectionOfModulesToSort to find the dependencies of the modules, and use ModuleInSort to store some temporary values attached to the modules to sort.
- See Also:
ModuleInSort
,CollectionOfModulesToSort
-
-
Field Summary
Fields Modifier and Type Field Description private CircularDependencyStrategy
circularDepStrategy
private CollectionOfModulesToSort
moduleDescriptors
private java.util.List<ModuleDescriptor>
sorted
-
Constructor Summary
Constructors Constructor Description ModuleDescriptorSorter(java.util.Collection<ModuleDescriptor> modulesDescriptorsToSort, VersionMatcher matcher, NonMatchingVersionReporter nonMatchingVersionReporter, CircularDependencyStrategy circularDepStrategy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<ModuleDescriptor>
sortModuleDescriptors()
Iterates over all modules calling sortModuleDescriptorsHelp.private void
sortModuleDescriptorsHelp(ModuleInSort current, ModuleInSort caller)
If current module has already been added to list, returns, Otherwise invokes sortModuleDescriptorsHelp for all dependencies contained within set of moduleDescriptors.
-
-
-
Field Detail
-
moduleDescriptors
private final CollectionOfModulesToSort moduleDescriptors
-
sorted
private final java.util.List<ModuleDescriptor> sorted
-
circularDepStrategy
private final CircularDependencyStrategy circularDepStrategy
-
-
Constructor Detail
-
ModuleDescriptorSorter
public ModuleDescriptorSorter(java.util.Collection<ModuleDescriptor> modulesDescriptorsToSort, VersionMatcher matcher, NonMatchingVersionReporter nonMatchingVersionReporter, CircularDependencyStrategy circularDepStrategy)
-
-
Method Detail
-
sortModuleDescriptors
public java.util.List<ModuleDescriptor> sortModuleDescriptors() throws CircularDependencyException
Iterates over all modules calling sortModuleDescriptorsHelp.- Returns:
- sorted module
- Throws:
CircularDependencyException
- somehow
-
sortModuleDescriptorsHelp
private void sortModuleDescriptorsHelp(ModuleInSort current, ModuleInSort caller) throws CircularDependencyException
If current module has already been added to list, returns, Otherwise invokes sortModuleDescriptorsHelp for all dependencies contained within set of moduleDescriptors. Then finally adds self to list of sorted.
When a loop is detected by a recursive call, the moduleDescriptors are not added immediately added to the sorted list. They are added as loop dependencies of the root, and will be added to the sorted list only when the root itself will be added.- Parameters:
current
- Current module to add to sorted list.- Throws:
CircularDependencyException
- somehow
-
-