View | Details | Raw Unified | Return to bug 316385
Collapse All | Expand All

(-)src/org/eclipse/jst/jsf/context/AbstractDelegatingFactory.java (-1 / +39 lines)
Lines 15-20 Link Here
15
import java.util.ArrayList;
15
import java.util.ArrayList;
16
import java.util.Arrays;
16
import java.util.Arrays;
17
import java.util.Collections;
17
import java.util.Collections;
18
import java.util.Comparator;
18
import java.util.List;
19
import java.util.List;
19
import java.util.concurrent.CopyOnWriteArrayList;
20
import java.util.concurrent.CopyOnWriteArrayList;
20
21
Lines 61-67 Link Here
61
    {
62
    {
62
        if (isValidDelegate(delegate))
63
        if (isValidDelegate(delegate))
63
        {
64
        {
64
            _delegates.addIfAbsent(delegate);
65
        	synchronized(_delegates)
66
        	{
67
        		_delegates.addIfAbsent(delegate);
68
        		if (_delegates.size() > 1)
69
        		{
70
        			List<IAdaptable> delegates = new ArrayList<IAdaptable>(_delegates);
71
72
        			Collections.sort(delegates, new Comparator()
73
        			{
74
						public int compare(Object delegate1, Object delegate2) 
75
						{
76
							final Class<?>  clazz1 = delegate1.getClass();
77
							final Class<?>  clazz2 = delegate2.getClass();
78
							
79
							Package package1 = clazz1.getPackage();
80
							Package package2 = clazz2.getPackage();
81
							boolean package1IsOSS = package1.getName().startsWith("org.eclipse.jst"); //$NON-NLS-1$
82
							boolean package2IsOSS = package2.getName().startsWith("org.eclipse.jst"); //$NON-NLS-1$
83
							
84
							if (package1IsOSS && !package2IsOSS)
85
							{
86
								// sort the oss one after the non-oss one
87
								return 1;
88
							}
89
							else if (!package1IsOSS && package2IsOSS)
90
							{
91
								return -1;
92
							}
93
							
94
							// otherwise they are either both oss or both non-oss, so just
95
							// sort canonically by name.
96
							return clazz1.getName().compareTo(clazz2.getName());
97
						}
98
        			});
99
        			_delegates.clear();
100
        			_delegates.addAll(delegates);
101
        		}
102
        	}
65
        }
103
        }
66
    }
104
    }
67
105

Return to bug 316385