Thank you for the review Chris. Once I hear back from Stuart, I will push these changes back.
Best Lance On Dec 1, 2011, at 11:17 AM, Chris Hegarty wrote: > Skimming over this, I think it looks fine. > > -Chris. > > On 01/12/2011 01:46, Lance Andersen - Oracle wrote: >> Here is another round of diffs as I found more warnings after I changed lint >> levels >> >> >> http://cr.openjdk.java.net/~lancea/7116445/webrev.02/ >> >> For SQLOutputImpl.java, as I found no easy way to avoid the errors without >> changing the constructor generic types, I went the route of suppressing the >> warnings in each of the methods. This class is not used much if at all so I >> am not sure it is worth any more cycles currently. >> >> >> Thanks for your time on the reviews... >> >> >> Best >> Lance >> On Nov 30, 2011, at 3:58 PM, Stuart Marks wrote: >> >>> >>> >>> On 11/30/11 10:43 AM, Lance Andersen - Oracle wrote: >>>> Hi Stuart, >>>> >>>> Thanks for the feedback. >>> >>> Great, thanks for the updates. Further comments below. >>> >>>>> * In CachedRowSetWriter.java, cols is changed from Vector to >>>>> Vector<Integer>. >>>>> This is fine but there's now a redundant cast (Integer)cols.get(i) at line >>>>> 752 that might generate another warning. >>>> >>>> I removed it now. btw, there was no warning generated with cast there >>>> which is >>>> why I did not make the change initially. >>> >>> I'm not sure what the default compiler flags are for this portion of the >>> build. I had done a full build of the jdk repo with your patch applied, >>> using the following command, >>> >>> make JAVAC_MAX_WARNINGS=true JAVAC_WARNINGS_FATAL= >>> OTHER_JAVACFLAGS="-Xmaxwarns 10000" >>> >>> and I did see that some redundant cast warnings were introduced. >>> >>>>> * WebRowSetXmlWriter.java, XmlReaderContentHandler.java, >>>>> SQLInputImpl.java, >>>>> and SyncFactory.java similar removals of redundant casts can be performed >>>>> for >>>>> types that have been converted to generics. >>>> >>>> I did not see the changes you were suggesting in SyncFactory but maybe I >>>> have >>>> not had enough coffee :-), was there something specific you saw as I did >>>> not >>>> see an obvious change to get rid of the couple of casts to the type that >>>> was >>>> converted to use generics >>> >>> Oh yes, the SyncFactory one is different. Usually generifying a type will >>> introduce redundant casts near calls to things like get(). The >>> "implementations" field was generified, and I saw this: >>> >>> ProviderImpl impl = (ProviderImpl) implementations.get(providerID); >>> >>> which looked like a redundant cast. But the declared type is now >>> Hashtable<String,SyncProvider> which means the cast isn't redundant, but >>> it does raise a different set of questions. The "impl" local is only tested >>> for being null so maybe its type should be SyncProvider instead. Oddly it >>> doesn't appear to be used if it's non-null. Hm, this code has other issues >>> as well... (A null return from Class.forName is handled, which AFAIK cannot >>> occur; c.newInstance() is cast to SyncProvider but ClassCastException isn't >>> handled.) >>> >>> Despite this I don't actually see any compiler warnings from this code. >>> Since this is warnings cleanup day maybe we're done. :-) Perhaps further >>> cleanups in this area can be deferred. >>> >>>>> You might also consider using diamond where new generic instances are >>>>> created, though it's a matter of style whether to use diamond in an >>>>> assignment statement (as opposed to in a declaration's initializer). >>>> >>>> Do we have a preference going forward? I used diamond as you suggested. >>> >>> My recommendation is to use diamond in field and local initializers and in >>> simple assignment statements. I avoid diamond in parameters to method calls >>> and within ternary (?:) expressions. >>> >>> Some people don't want to use diamond in assignment statements, since the >>> redundancy isn't as obvious, and they think that having the type arguments >>> in the constructor is helpful there. But I don't see it. >>> >>>> The updated webrev is at: >>>> http://cr.openjdk.java.net/~lancea/7116445/webrev.01/ >>> >>> Oh... one more thing. Sorry I missed this in my previous review. >>> >>> In SQLOutputImpl the constructor parameters got changed from Vector<?> to >>> Vector<Object> and from Map<String,?> to Map<String,Class<?>>. This looks >>> like a public constructor to a public API class. (At least, I see this in >>> the javadoc.) This change might actually be correct (though perhaps not >>> strictly compatible) but I don't think we want to be making such changes as >>> part of warnings cleanup, even if it does end up removing warnings. >>> >>> s'marks >>> >> >> >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 >> Oracle Java Engineering >> 1 Network Drive >> Burlington, MA 01803 >> lance.ander...@oracle.com >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 lance.ander...@oracle.com