Hi Stuart, On Dec 1, 2011, at 4:10 PM, Stuart Marks wrote:
> Hi Lance, > > Thanks for your patience. I was doing a lot of organizing this morning and > I'm finally getting back to reviewing. Totally understand. I appreciate your time on this as while some of this seems simple, it is a lot of files that are being touched :-) > > Overall the changeset looks fine. I have just a few questions. You might or > might not want to make further changes, but in any case I'm OK if you were to > go ahead and push. > > Items as follows: > > * CachedRowSetImpl.java line 4007: can unboxing be used here to replace > "Integer.valueOf(0)" with simply "0"? This is done below at 4174. Yes it should be able to, i saw this after I hit send (too many passes through this last night. > > * Similar unboxing question at line 401 of CachedRowSetWriter.java Yes I saw this. > > * JdbcRowSetImpl.java and CachedRowSetReader.java: you added "break" in some > switch statements here. This actually changes the behavior of the program and > (probably) fixes a bug, in addition to removing warnings. I guess this is a > bit out of bounds for Warnings Cleanup Day, but I think you have the > prerogative to do this since you're the primary maintainer of this code. I got this as a warning and findbugs was also barking at me about this. The previous code was indeed buggy so I thought I would address it. > > * Row.java has a change to use System.arraycopy(): again a bit much for > warnings day but you have prerogative as the maintainer of this area. Netbeans was gently suggesting this change and I was OK with it so I would prefer to leave it. I will make the couple changes above for the unboxing and generate 1 last webrev and then push it once I get the final green light... Best Lance > > Thanks! > > s'marks > > > > > > On 12/1/11 11:52 AM, Lance Andersen - Oracle wrote: >> 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 >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 lance.ander...@oracle.com