<AWT Dev> JDK 9 RFR of JDK-8039109 : Fix unchecked and raw lint warnings in java.awt

Joe Darcy joe.darcy at oracle.com
Sun May 4 16:44:33 UTC 2014


Hello,

Any further comments on the latest version

      http://cr.openjdk.java.net/~darcy/8039109.3/

Thanks,

-Joe

On 4/30/2014 4:04 PM, Joe Darcy wrote:
> Hi Rémi,
>
>> Hi Joe,
>>
>> in AWTKeyStroke, instead of
>>
>> Class<AWTKeyStroke> clazz = 
>> (Class<AWTKeyStroke>)AppContext.getAppContext().get(AWTKeyStroke.class);
>>
>> I should have the right type Class<? extends ...> (the class is a
>> subclass of AWTKeyStroke) and
>> do a classcheck at runtime when the class is extracted instead of later
>>
>> Class<? extends AWTKeyStroke> clazz = 
>> ((Class<?>)AppContext.getAppContext().get(AWTKeyStroke.class)).asSubClass(AWTKeyStroke.class);
>
> As I'm not overly familiar with this code and the app context 
> mechanism, in the context of this lint removal exercise, I'd prefer to 
> leave the timing of the checks as they are today.
>
>>
>> and I think the second @SuppressWarnings in getCachedStroke() is
>> unnecessary.
>
> Right you are; I've removed the second @SuppressWarnings in the next 
> iteration of the patch.
>
>>
>>
>> in GraphicsEnvironment, the last line of your diff can be simplified,
>>
>> ge = GraphicsEnvironment.class.cast(geCls.newInstance());
>>
>> can be written
>>
>> ge = (GraphicsEnvironment)geCls.newInstance();
>>
>> which is more readable IMO but will also generate exactly the same
>> bytecode as the current implementation.
>
> Yes, since the type being cast to is unchanging, it is not necessary 
> to do the cast using core reflection; updated in the next iteration.
>
>>
>>
>> in KeyboardFocusManager,
>>
>> private Set<AWTKeyStroke>[] defaultFocusTraversalKeys = new Set[4];
>>
>> should be
>>
>> private Set<AWTKeyStroke>[] defaultFocusTraversalKeys = new Set<?>[4];
>>
>> so @SuppressWarnings("rawtypes") is not needed.
>
> Actually, javac objects to the code you've proposed:
>
> src/share/classes/java/awt/KeyboardFocusManager.java:352: error: 
> incompatible types: Set<?>[] cannot be converted to Set<AWTKeyStroke>[]
>     private Set<AWTKeyStroke>[] defaultFocusTraversalKeys = new 
> Set<?>[4];
>
> (IIRC, I ran into this when I was first putting the changeset together.)
>
>>
>>
>> in DragGestureEvent, the newEvents should be a List<? extends 
>> InputEvent>,
>> and @SuppressWarnings("rawtypes") should be a 
>> @SuppressWarnings("unchecked")
>
> For the purposes of this clean up effort, I'm not eager to take on 
> more extensive updates to DragGestureEvent than adding the one 
> @SuppressWarnings. I would encourage the awt team to consider the 
> update you've suggested.
>
>>
>> in RenderableImageOp,
>> getRenderableSources() should return a Vector of RenderableImage,
>>
>>        public Vector<RenderableImage> getSources() {
>>           getRenderableSources();
>>        }
>>           private Vector<RenderableImage> getRenderableSources() {
>>           Vector<RenderableImage sources = null;
>
> Petr made the same observation and I've addressed that in the second 
> iteration of the patch:
>
>     http://cr.openjdk.java.net/~darcy/8039109.2/
>
>>
>> all other modifications are OK for me.
>
> Newest iteration at:
>
>     http://cr.openjdk.java.net/~darcy/8039109.3/
>
> Thanks for the review,
>
> -Joe
>



More information about the awt-dev mailing list