<Swing Dev> JDK 9 RFR of JDK-8055254: Address source incompatability of JSlider generification
Anthony Petrov
anthony.petrov at oracle.com
Mon Aug 18 11:50:07 UTC 2014
+1
--
best regards,
Anthony
On 8/18/2014 2:27 PM, Sergey Bylokhov wrote:
> 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
>
>
More information about the swing-dev
mailing list