Hi Stuart,

Thanks for the feedback.
On Nov 29, 2011, at 7:31 PM, Stuart Marks wrote:

> On 11/29/11 10:02 AM, Lance Andersen - Oracle wrote:
>> Please review the following changes for JDBC area as part of the warnings 
>> clean up day.  I will not be able to participate on Thursday so I wanted to 
>> try and get this done ahead of time.
>> 
>> The changes can be found at 
>> http://cr.openjdk.java.net/~lancea/7116445/webrev.00/
> 
> Hi Lance, thanks for jumping on the warnings bandwagon!
> 
> I have a few comments and discussion points.
> 
> * In CachedRowSetImpl.java, JdbcRowSetImpl.java and CachedRowSetReader.java, 
> there are places where @SuppressWarnings("deprecation") is added to methods 
> that are fairly long. If during further maintenance of these methods a use of 
> another deprecated element is added, no warning will be issued. It might be 
> nice to try to narrow the scope of the annotation, e.g. for CachedRowSetImpl 
> you could do add this to the acceptChanges() method:
> 
>    @SuppressWarnings("deprecation")
>    final boolean doCommit = this.COMMIT_ON_ACCEPT_CHANGES;
> 
> and then use doCommit where COMMIT_ON_ACCEPT_CHANGES formerly was used. This 
> would allow removal of the SuppressWarnings annotation from the entire method.
> 
> (Changing this to CachedRowSet.COMMIT_ON_ACCEPT_CHANGES would remove 
> additional warnings. Actually since this is a final boolean defined to be 
> true in an interface, it can't be changed, so maybe use of this value can be 
> removed entirely. (But perhaps this is too much JDBC history for you to get 
> into right now.))

I went back and removed this though I was somewhat hesitant due to the history 
though I am not sure why the original authors of the spec did this anyways 
(which is why I deprecated it).  Ran the RowSet TCK to validate there were no 
hiccups (though there should not have been)
> 
> In JdbcRowSetImpl and CachedRowSetReader dealing with the use of deprecated 
> PreparedStatement.setUnicodeStream is trickier. There's no obvious way to add 
> a local declaration on which one can place the annotation. I suppose you 
> could refactor the call into a small method of its own, but this seems like 
> overkill. Up to you as to whether you want to do anything on these.

For now, I would rather leave it as is and will go back and revisit this later 
after I give it some more thought.
> 
> * 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.
> 
> * Also in CachedRowSetWriter.java, line 308 can use diamond:
> 
>    status = new ArrayList<>(sz);

changed this
> Up to you whether you want to use diamond here since the creation is separate 
> from the declaration.
> 
> Further note that this sets up a potentially similar redundant cast for the 
> result of status.get(), however, the line where it's used does this:
> 
> if (! ((status.get(j)).equals(Integer.valueOf(SyncResolver.NO_ROW_CONFLICT))))
> 
> Although this doesn't generate a warning I think you can simplify this to
> 
> if (status.get(j) != SyncResolver.NO_ROW_CONFLICT)

made the suggested changes
> 
> *  similar redundant cast at line 535, (String)stack.pop(), since stack is 
> now Stack<String>. Oh, again you might want to use diamond where stack is 
> initialized.
made the suggested changes
> 
> * 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

> This usually occurs near a get() call, e.g. in XmlReaderContentHandler, since 
> propMap is now HashMap<String,Integer>, usages can be simplified from
> 
>    tag = ((Integer)propMap.get(name)).intValue();
> 
> to
> 
>    tag = propMap.get(name);
> 
> 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.

The updated webrev is at: http://cr.openjdk.java.net/~lancea/7116445/webrev.01/


Thank you for your review comments

Best
Lance

> 
> Thanks,
> 
> 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

Reply via email to