Hi, Joe.
The fix looks good.
On 18.08.2014 2:53, Joe Darcy wrote:
Hello,
As noted by Sergey, the recently pushed changes for
JDK-8054360: Refine generification of javax.swing
cause one of the files in SwingSet2 to not build, breaking the
combined open + closed JDK build.
To remedy this situation, at least in the short term, please review
the proposed changes for
JDK-8055254: Address source incompatability of JSlider
generification
http://cr.openjdk.java.net/~darcy/8055254.0/
In brief, the label table information in JSlider is reverted to be a
raw Dictionary rather than
* A Dictionary<Integer, ? extends JComponent> as under 8054360
* A Dictionary<Integer, JComponent> as under JDK-8043550 (earlier
swing generification)
(The usage patterns of the label table from the get/set methods seems
to include modifying the returned table, which is problematic if
wildcards are used.)
For a bit more information, here is a diff of the non-javadoc changes
between the pre JDK-8043550 state of the slider files and the proposed
changes:
diff JSlider.java ../jdk/src/share/classes/javax/swing/JSlider.java
140a141
> @SuppressWarnings("rawtypes")
142c143,145
<
---
> // For better source compatibility, the labelTable field and
> // associated getter and setter methods are being left as raw
> // types.
772c779
< Enumeration elements = labelTable.elements();
---
> Enumeration<?> elements = labelTable.elements();
795a803
> @SuppressWarnings("rawtypes")
828a837
> @SuppressWarnings("rawtypes")
850a860
> @SuppressWarnings("rawtypes")
856c866
< Enumeration labels = labelTable.keys();
---
> Enumeration<?> labels = labelTable.keys();
864a875
> @SuppressWarnings("rawtypes")
867c878
< Enumeration labels = labelTable.elements();
---
> Enumeration<?> labels = labelTable.elements();
897c908
< public Hashtable createStandardLabels( int increment ) {
---
> public Hashtable<Integer, JComponent> createStandardLabels( int
increment ) {
925c936
< public Hashtable createStandardLabels( int increment, int start ) {
---
> public Hashtable<Integer, JComponent> createStandardLabels( int
increment, int start ) {
934c945
< class SmartHashtable extends Hashtable<Object, Object>
implements PropertyChangeListener {
---
> class SmartHashtable extends Hashtable<Integer, JComponent>
implements PropertyChangeListener {
981,982c992,993
< Enumeration keys = getLabelTable().keys();
< Hashtable<Object, Object> hashtable = new
Hashtable<Object, Object>();
---
> Enumeration<?> keys = getLabelTable().keys();
> Hashtable<Integer, JComponent> hashtable = new
Hashtable<>();
986,987c997,998
< Object key = keys.nextElement();
< Object value = labelTable.get(key);
---
> Integer key = (Integer) keys.nextElement();
> JComponent value = (JComponent)
labelTable.get(key);
999c1010
< Object key = keys.nextElement();
---
> Integer key = (Integer) keys.nextElement();
1015a1027
> @SuppressWarnings("rawtypes")
1524d1535
<
diff BasicSliderUI.java
../jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java
399a400
> @SuppressWarnings("rawtypes")
403c404
< Enumeration elements = dictionary.elements();
---
> Enumeration<?> elements = dictionary.elements();
755a762
> @SuppressWarnings("rawtypes")
759c766
< Enumeration keys = dictionary.keys();
---
> Enumeration<?> keys = dictionary.keys();
768a776
> @SuppressWarnings("rawtypes")
772c780
< Enumeration keys = dictionary.keys();
---
> Enumeration<?> keys = dictionary.keys();
844a853
> @SuppressWarnings("rawtypes")
851c860
< Enumeration keys = dictionary.keys();
---
> Enumeration<?> keys = dictionary.keys();
873a883
> @SuppressWarnings("rawtypes")
880c890
< Enumeration keys = dictionary.keys();
---
> Enumeration<?> keys = dictionary.keys();
1123a1142
> @SuppressWarnings("rawtypes")
1126c1145
< Enumeration keys = dictionary.keys();
---
> Enumeration<?> keys = dictionary.keys();
diff SynthSliderUI.java
../jdk/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java | more
2c2
< * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All
rights reserved.
---
> * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All
rights reserved.
394c394,395
<
---
>
> @SuppressWarnings("rawtypes")
405c406
< for (Enumeration keys = dictionary.keys();
---
> for (Enumeration<?> keys = dictionary.keys();
The raw and unchecked warnings are now enabled in the build of the JDK
so the changes for 8055254 must preserve that property, which is
largely done by suppressing some warnings and judicious use of some
wildcards on local variables.
Thanks,
-Joe
--
Best regards, Sergey.