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