1.1 --- a/openide.util/src/org/openide/util/lookup/AbstractLookup.java Tue Apr 10 08:10:48 2007 +0000
1.2 +++ b/openide.util/src/org/openide/util/lookup/AbstractLookup.java Tue Apr 10 13:17:40 2007 +0000
1.3 @@ -241,12 +241,12 @@
1.4
1.5 try {
1.6 Enumeration<Pair<Object>> en = t.lookup(Object.class);
1.7 - LinkedHashSet<Pair<?>> arr = new LinkedHashSet<Pair<?>>();
1.8 + TreeSet<Pair<?>> arr = new TreeSet<Pair<?>>(ALPairComparator.DEFAULT);
1.9 while (en.hasMoreElements()) {
1.10 Pair<Object> item = en.nextElement();
1.11 arr.add(item);
1.12 }
1.13 - return arr;
1.14 + return new LinkedHashSet<Pair<?>>(arr);
1.15 } finally {
1.16 exitStorage();
1.17 }
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/openide.util/test/unit/src/org/bar/Comparator3.java Tue Apr 10 13:17:40 2007 +0000
2.3 @@ -0,0 +1,7 @@
2.4 +
2.5 +package org.bar;
2.6 +
2.7 +public class Comparator3 implements java.util.Comparator {
2.8 + public int compare(Object o1, Object o2) {return 0;}
2.9 + public boolean equals(Object obj) {return true;}
2.10 +}
3.1 --- a/openide.util/test/unit/src/org/openide/util/lookup/MetaInfServicesLookupTest.java Tue Apr 10 08:10:48 2007 +0000
3.2 +++ b/openide.util/test/unit/src/org/openide/util/lookup/MetaInfServicesLookupTest.java Tue Apr 10 13:17:40 2007 +0000
3.3 @@ -19,6 +19,7 @@
3.4
3.5 package org.openide.util.lookup;
3.6
3.7 +import java.awt.Component;
3.8 import java.io.File;
3.9 import java.io.FileOutputStream;
3.10 import java.io.IOException;
3.11 @@ -27,8 +28,11 @@
3.12 import java.net.URL;
3.13 import java.net.URLClassLoader;
3.14 import java.util.ArrayList;
3.15 +import java.util.Collection;
3.16 import java.util.Collections;
3.17 +import java.util.Comparator;
3.18 import java.util.Enumeration;
3.19 +import java.util.Iterator;
3.20 import java.util.List;
3.21 import java.util.Set;
3.22 import java.util.Set;
3.23 @@ -39,6 +43,7 @@
3.24 import java.util.logging.Logger;
3.25 import java.util.regex.Matcher;
3.26 import java.util.regex.Pattern;
3.27 +import org.bar.Comparator2;
3.28 import org.netbeans.junit.NbTestCase;
3.29 import org.openide.util.Lookup;
3.30 import org.openide.util.LookupEvent;
3.31 @@ -293,4 +298,33 @@
3.32
3.33 assertEquals("Now two", 2, res.allInstances().size());
3.34 }
3.35 +
3.36 + public void testWrongOrderAsInIssue100320() throws Exception {
3.37 + ClassLoader app = getClass().getClassLoader().getParent();
3.38 + ClassLoader c0 = app;
3.39 + ClassLoader c1 = new URLClassLoader(new URL[] {
3.40 + findJar("problem100320.jar"),
3.41 + }, c0);
3.42 + Lookup lookup = Lookups.metaInfServices(c1);
3.43 +
3.44 + Collection<?> colAWT = lookup.lookupAll(Component.class);
3.45 + assertEquals("There is enough objects to switch to InheritanceTree", 12, colAWT.size());
3.46 +
3.47 +
3.48 + List<?> col1 = new ArrayList<Object>(lookup.lookupAll(Comparator.class));
3.49 + assertEquals("Two", 2, col1.size());
3.50 + Collection<?> col2 = lookup.lookupAll(c1.loadClass(Comparator2.class.getName()));
3.51 + assertEquals("One", 1, col2.size());
3.52 + List<?> col3 = new ArrayList<Object>(lookup.lookupAll(Comparator.class));
3.53 + assertEquals("Two2", 2, col3.size());
3.54 +
3.55 + Iterator<?> it1 = col1.iterator();
3.56 + Iterator<?> it3 = col3.iterator();
3.57 + if (
3.58 + it1.next() != it3.next() ||
3.59 + it1.next() != it3.next()
3.60 + ) {
3.61 + fail("Collections are different:\nFirst: " + col1 + "\nLast: " + col3);
3.62 + }
3.63 + }
3.64 }
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/openide.util/test/unit/src/org/openide/util/lookup/problem100320.txt Tue Apr 10 13:17:40 2007 +0000
4.3 @@ -0,0 +1,17 @@
4.4 +:java.awt.Component:
4.5 +java.awt.Panel
4.6 +javax.swing.JPanel
4.7 +javax.swing.JMenuItem
4.8 +javax.swing.JTree
4.9 +javax.swing.JTextArea
4.10 +javax.swing.JButton
4.11 +javax.swing.JLabel
4.12 +javax.swing.JComboBox
4.13 +javax.swing.JEditorPane
4.14 +javax.swing.JFrame
4.15 +javax.swing.JDialog
4.16 +javax.swing.JMenu
4.17 +:java.util.Comparator:
4.18 +org.bar.Comparator3
4.19 +org.bar.Comparator2
4.20 +#position=5