Hi Stuart, On Dec 2, 2011, at 3:45 PM, Stuart Marks wrote:
> Hi Lance, > > I'm OK with postponing the @Deprecated work, and doing a separate pass for > @Deprecated, including the com.sun.* stuff at that time. OK, will do that separately > > There's enough stuff in this changeset already. I think we're better off > getting it in now than putting more stuff in and getting it reviewed again. I > think you've done this to yourself on this review twice already. :-) Probably, but this code has been the gift that keeps on giving :-) > > Comments on webrev.03 follow. > > CachedRowSetImpl.java -- > > 451 @SuppressWarnings("rawtypes") > 452 public CachedRowSetImpl(Hashtable env) throws SQLException { > > The warning suppression covers the entire constructor. You could do this... > > public CachedRowSetImpl(@SuppressWarnings("rawtypes") Hashtable env) I can make that change sure and done > > Ugh. As you said earlier, probably not worth spending more cycles on this. > > 5710 Class<?> c = (Class)map.get(s.getSQLTypeName()); > > The cast to (Class) is probably unnecessary since the values in the map are > already Class<?>. agree done > > JoinRowSetImpl.java -- > > 932 (vecRowSetsInJOIN.get(i)).getMatchColumnNames()[0]); > 4179 Integer i = (vecJoinType.get(vecJoinType.size()-1)); > > Can probably remove extra set of parens that were necessary when the cast was > there. done > > CachedRowSetWriter.java -- > > 576 c = (Class)map.get(s.getSQLTypeName()); > > Redundant cast to (Class). > done > BaseRowSet.java -- > > 622 for (Iterator<?> i = listeners.iterator(); i.hasNext(); ) { > 623 ((RowSetListener)i.next()).cursorMoved(event); > 624 } > > Hm, listeners is Vector<RowSetListener> so some casts could be removed, > > 622 for (Iterator<RowSetListener> i = listeners.iterator(); > i.hasNext(); ) { > 623 (i.next()).cursorMoved(event); > 624 } > > or even changed to > > 622 for (RowSetListener rsl : listeners) { > 623 rsl.cursorMoved(event); > 624 } > > There are several other cases in this file where you used Iterator<?>. You > might check them to see if similar simplifications could be done there as > well. I thought about making the change as part of this changeset, but thought it might be too much. Here is the change: dhcp-adc-twvpn-2-vpnpool-10-154-44-9:rowset lanceandersen$ !hg hg diff BaseRowSet.java diff -r 43a630f11af6 src/share/classes/javax/sql/rowset/BaseRowSet.java --- a/src/share/classes/javax/sql/rowset/BaseRowSet.java Wed Nov 30 13:11:16 2011 -0800 +++ b/src/share/classes/javax/sql/rowset/BaseRowSet.java Fri Dec 02 17:19:53 2011 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -619,8 +619,8 @@ checkforRowSetInterface(); if (listeners.isEmpty() == false) { RowSetEvent event = new RowSetEvent((RowSet)this); - for (Iterator i = listeners.iterator(); i.hasNext(); ) { - ((RowSetListener)i.next()).cursorMoved(event); + for (RowSetListener rsl : listeners) { + rsl.cursorMoved(event); } } } @@ -644,8 +644,8 @@ checkforRowSetInterface(); if (listeners.isEmpty() == false) { RowSetEvent event = new RowSetEvent((RowSet)this); - for (Iterator i = listeners.iterator(); i.hasNext(); ) { - ((RowSetListener)i.next()).rowChanged(event); + for (RowSetListener rsl : listeners) { + rsl.rowChanged(event); } } } @@ -669,8 +669,8 @@ checkforRowSetInterface(); if (listeners.isEmpty() == false) { RowSetEvent event = new RowSetEvent((RowSet)this); - for (Iterator i = listeners.iterator(); i.hasNext(); ) { - ((RowSetListener)i.next()).rowSetChanged(event); + for (RowSetListener rsl : listeners) { + rsl.rowSetChanged(event); } } } dhcp-adc-twvpn-2-vpnpool-10-154-44-9:rowset lanceandersen$ > > (There is also Iterator<?> used in CachedRowSetImpl.java but this is used to > iterate over rvh, a Vector<Object>, but then the elements are cast to Row. > This begs the question of why rvh isn't Vector<Row> but this is beyond the > scope of warnings cleanup.) > > SerialArray.java -- > > 290 default: > 291 ; > > I'm surprised you didn't remove these lines as you had done above. I thought I got this, but looks like i missed it... got it now :-) > > ******* > > With the exception of changing Iterator<?> to use a for-each loop in > BaseRowSet.java, all of these comments are just little tweaks, so I don't > think we need another webrev for them. It's up to you whether to proceed with > the BaseRowSet changes I recommend. Regardless, I don't want to see another > webrev of this code. Check it in!! :-) I made them, thank you... Ran the RowSet TCK and all still passes for me for completeness, I did generate a new webrev http://cr.openjdk.java.net/~lancea/7116445/webrev.04, but will push back if tonight Thank you for your help and reviews through all of these modules Best Lance > > s'marks > > > On 12/2/11 8:06 AM, Lance Andersen - Oracle wrote: >> >> On Dec 2, 2011, at 10:54 AM, David Schlosnagle wrote: >> >>> On Fri, Dec 2, 2011 at 8:19 AM, Lance Andersen - >>> Oracle<lance.ander...@oracle.com> wrote: >>> Adding @Deprecated changes the signatures so I need to coordinate any >>> changes as it will result in TCK signature failures. This is something I >>> will most likely do as part of the JDBC 4.2 work after giving the JDBC EG a >>> chance for input. >>> >>> Lance, >>> >>> I figured it was worth a shot to try and piggy back on your changes to >>> cleanup the rest of java.sql.* :) >> >> Appreciate the suggestion. >> >>> >>> I assume it is the @Deprecated annotation's retention runtime value that >>> introduces TCK signature compatibility issues, is that correct? >> >> Yes, here is the reason why: >> >> >> @Documented >> @Retention(value=RUNTIME) >> @Target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE}) >> public @interface Deprecated >> >> why Here is @Documented >> >> >> @Documented >> @Retention(value=RUNTIME) >> @Target(value=ANNOTATION_TYPE) >> public @interface Documented >> Indicates that annotations with a type are to be documented by javadoc and >> similar tools by default. This type should be used to annotate the >> declarations of types whose annotations affect the use of annotated elements >> by their clients. If a type declaration is annotated with Documented, its >> annotations become part of the public API of the annotated elements. >> Since: >> 1.5 >> >> As you can see this results in an API change which would result in the >> signatures changing. This type of change would be flagged by the signature >> tests so we would not want to do this in say JDK 7. It would be OK for JDK >> 8 but I would not want to do it as part of the cleanup changes. >> >> It is interesting that the behavior is different between @Deprecated vs >> @deprecated(javadoc mark up) and I have had previous discussions on this as >> one vendor made this innocent change in a standalone technology and then >> could not pass the signature tests for a given TCK. >> >> Again, my desire is to do this soon, and might for the com.* classes >> assuming Alan/Stuart see no issue as part of this push >> >> Many thanks for your time >> >> Best >> Lance >>> If so, that is an interesting catch-22 when the idea behind @Deprecated is >>> to maintain a backward compatible API for some period to be determined to >>> the API provider. It seems like this might be worthwhile mentioning in the >>> deprecation guide [1], and maybe even additions to Joe Darcy's excellent >>> treatises on compatibility [2] [3]. I completely understand wanting to wait >>> for the appropriate approvals to move forward with the remaining cleanup. >>> >>> >>> On Fri, Dec 2, 2011 at 9:14 AM, Lance Andersen - >>> Oracle<lance.ander...@oracle.com> wrote: >>> Here is the diff for DriverManager, I won't be pushing another webrev >>> unless the word is to go ahead and add @Deprecated to the com/* classes of >>> the RowSet RI or there is another change requested that is more detailed: >>> >>> That looks good to me, unfortunately I don't think I can be used as a >>> reviewer. >>> >>> Thanks, >>> Dave >>> >>> [1]: >>> http://docs.oracle.com/javase/6/docs/technotes/guides/javadoc/deprecation/deprecation.html >>> [2]: http://blogs.oracle.com/darcy/entry/kinds_of_compatibility >>> [3]: http://blogs.oracle.com/darcy/entry/release_types_compatibility_regions >>> >> >> >> 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