Author: gscokart
Date: Tue Jun 19 04:32:43 2007
New Revision: 548695
URL: http://svn.apache.org/viewvc?view=rev&rev=548695
Log:
refactor: remove dependency between sort engine and IvySettings
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/sort/SortEngine.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java?view=diff&rev=548695&r1=548694&r2=548695
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java Tue Jun 19
04:32:43 2007
@@ -159,7 +159,8 @@
eventManager = new EventManager();
}
if (sortEngine == null) {
- sortEngine = new SortEngine(settings);
+ sortEngine = new SortEngine();
+ //Settings element are injected in the getSortEngine method.
}
if (searchEngine == null) {
searchEngine = new SearchEngine(settings);
@@ -329,7 +330,7 @@
* Sorts the collection of IvyNode from the less dependent to the more
dependent
*/
public List sortNodes(Collection nodes) {
- return sortEngine.sortNodes(nodes);
+ return getSortEngine().sortNodes(nodes);
}
/**
@@ -344,15 +345,10 @@
* revision of an other modules present in the of modules to
sort with a different
* revision.
* @return a List of sorted ModuleDescriptors
- * @deprecated Use
sortModuleDescriptors(Collection,NonMatchingVersionReporter)
*/
- public List sortModuleDescriptors(Collection moduleDescriptors) {
- return sortEngine.sortModuleDescriptors(moduleDescriptors, new
SilentNonMatchingVersionReporter());
- }
-
public List sortModuleDescriptors(Collection moduleDescriptors,
NonMatchingVersionReporter nonMatchingVersionReporter) {
- return sortEngine.sortModuleDescriptors(moduleDescriptors,
nonMatchingVersionReporter);
+ return getSortEngine().sortModuleDescriptors(moduleDescriptors,
nonMatchingVersionReporter);
}
// ///////////////////////////////////////////////////////////////////////
@@ -569,6 +565,8 @@
}
public SortEngine getSortEngine() {
+
sortEngine.setCircularDependencyStrategy(settings.getCircularDependencyStrategy());
+ sortEngine.setVersionMatcher(settings.getVersionMatcher());
return sortEngine;
}
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/sort/SortEngine.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/sort/SortEngine.java?view=diff&rev=548695&r1=548694&r2=548695
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/sort/SortEngine.java
(original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/sort/SortEngine.java
Tue Jun 19 04:32:43 2007
@@ -26,18 +26,29 @@
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
import org.apache.ivy.core.resolve.IvyNode;
-import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.plugins.circular.CircularDependencyException;
import org.apache.ivy.plugins.circular.CircularDependencyStrategy;
import org.apache.ivy.plugins.version.VersionMatcher;
public class SortEngine {
- private IvySettings settings;
- public SortEngine(IvySettings settings) {
- this.settings = settings;
+ private CircularDependencyStrategy circularStrategy;
+
+ private VersionMatcher versionMatcher;
+
+ public SortEngine() {
+ }
+
+
+ public void setCircularDependencyStrategy(CircularDependencyStrategy
circularStrategy) {
+ this.circularStrategy = circularStrategy;
}
+ public void setVersionMatcher(VersionMatcher versionMatcher) {
+ this.versionMatcher = versionMatcher;
+ }
+
+
public List sortNodes(Collection nodes) throws CircularDependencyException
{
/*
* here we want to use the sort algorithm which work on module
descriptors : so we first put
@@ -92,10 +103,8 @@
public List sortModuleDescriptors(Collection moduleDescriptors,
NonMatchingVersionReporter nonMatchingVersionReporter)
throws CircularDependencyException {
- VersionMatcher versionMatcher = settings.getVersionMatcher();
- CircularDependencyStrategy circularDepStrategy =
settings.getCircularDependencyStrategy();
ModuleDescriptorSorter sorter = new
ModuleDescriptorSorter(moduleDescriptors,
- versionMatcher, nonMatchingVersionReporter,
circularDepStrategy);
+ versionMatcher, nonMatchingVersionReporter, circularStrategy);
return sorter.sortModuleDescriptors();
}
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java?view=diff&rev=548695&r1=548694&r2=548695
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
(original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
Tue Jun 19 04:32:43 2007
@@ -27,7 +27,6 @@
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.apache.ivy.Ivy;
import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
@@ -35,6 +34,9 @@
import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.plugins.circular.CircularDependencyHelper;
import org.apache.ivy.plugins.circular.CircularDependencyStrategy;
+import org.apache.ivy.plugins.circular.WarnCircularDependencyStrategy;
+import org.apache.ivy.plugins.version.ExactVersionMatcher;
+import org.apache.ivy.plugins.version.LatestVersionMatcher;
public class SortTest extends TestCase {
@@ -46,9 +48,9 @@
private DefaultModuleDescriptor md4;
- private static Ivy ivy;
-
-
+ private SortEngine sortEngine;
+
+ private SilentNonMatchingVersionReporter nonMatchReporter;
/*
* (non-Javadoc)
@@ -63,8 +65,11 @@
md3 = createModuleDescriptorToSort("md3", "rev3");
md4 = createModuleDescriptorToSort("md4", "rev4");
- ivy = new Ivy();
- ivy.configureDefault();
+ sortEngine = new SortEngine();
+
sortEngine.setCircularDependencyStrategy(WarnCircularDependencyStrategy.getInstance());
+ sortEngine.setVersionMatcher(new ExactVersionMatcher());
+
+ nonMatchReporter = new SilentNonMatchingVersionReporter();
}
public void testSort() throws Exception {
@@ -78,7 +83,7 @@
Collection permutations = getAllLists(md1, md3, md2, md4);
for (Iterator it = permutations.iterator(); it.hasNext();) {
List toSort = (List) it.next();
- assertSorted(expectedOrder, ivy.sortModuleDescriptors(toSort));
+ assertSorted(expectedOrder,
sortEngine.sortModuleDescriptors(toSort, nonMatchReporter));
}
}
@@ -100,7 +105,7 @@
Collection permutations = getAllLists(md1, md3, md2, md4);
for (Iterator it = permutations.iterator(); it.hasNext();) {
List toSort = (List) it.next();
- assertSorted(possibleOrder, ivy.sortModuleDescriptors(toSort));
+ assertSorted(possibleOrder,
sortEngine.sortModuleDescriptors(toSort, nonMatchReporter));
}
}
@@ -117,7 +122,7 @@
Collection permutations = getAllLists(md1, md3, md2, md4);
for (Iterator it = permutations.iterator(); it.hasNext();) {
List toSort = (List) it.next();
- assertSorted(possibleOrder, ivy.sortModuleDescriptors(toSort));
+ assertSorted(possibleOrder,
sortEngine.sortModuleDescriptors(toSort, nonMatchReporter));
}
}
@@ -160,10 +165,10 @@
}
}
CircularDependencyReporterMock circularDepReportMock = new
CircularDependencyReporterMock();
- ivy.getSettings().setCircularDependencyStrategy(circularDepReportMock);
+ sortEngine.setCircularDependencyStrategy(circularDepReportMock);
List toSort = Arrays.asList(new ModuleDescriptor[] {md4, md3, md2,
md1});
- ivy.sortModuleDescriptors(toSort);
+ sortEngine.sortModuleDescriptors(toSort, nonMatchReporter);
circularDepReportMock.validate();
}
@@ -178,13 +183,15 @@
addDependency(md3, "md2", "latest.integration");
addDependency(md4, "md3", "latest.integration");
+ sortEngine.setVersionMatcher(new LatestVersionMatcher());
+
DefaultModuleDescriptor[][] expectedOrder = new
DefaultModuleDescriptor[][] {{md1, md2,
md3, md4}};
Collection permutations = getAllLists(md1, md3, md2, md4);
for (Iterator it = permutations.iterator(); it.hasNext();) {
List toSort = (List) it.next();
- assertSorted(expectedOrder, ivy.sortModuleDescriptors(toSort));
+ assertSorted(expectedOrder,
sortEngine.sortModuleDescriptors(toSort, nonMatchReporter));
}
}
@@ -210,7 +217,7 @@
Collection permutations = getAllLists(md1, md3, md2, md4);
for (Iterator it = permutations.iterator(); it.hasNext();) {
List toSort = (List) it.next();
- assertSorted(possibleOrder, ivy.sortModuleDescriptors(toSort));
+ assertSorted(possibleOrder,
sortEngine.sortModuleDescriptors(toSort, nonMatchReporter));
}
}
@@ -244,7 +251,7 @@
NonMatchingVersionReporterMock nonMatchingVersionReporterMock =
new NonMatchingVersionReporterMock();
List toSort = Arrays.asList(new ModuleDescriptor[] {md4, md3, md2,
md1});
- ivy.sortModuleDescriptors(toSort, nonMatchingVersionReporterMock);
+ sortEngine.sortModuleDescriptors(toSort,
nonMatchingVersionReporterMock);
nonMatchingVersionReporterMock.validate();
}