I reviewed the BlenderRev fairly closely and did not find any errors. The only weirdness I saw was several cases where multiple "Specified by:" declarations were present for a method and one of the instances referenced a class to which it didn't appear to be able to link to.
Example: Method.getTypeParameters(): Specified by: getTypeParameters in interface java.lang.reflect.GenericDeclaration It wasn't clear to me why it needed two "Specified by:" entries and only one of them was hot linked to the specifying class. Just javadoc weirdness? Mike On Jul 19 2011, at 12:49 , Joe Darcy wrote: > Agreed; I've posted a BlenderRev corresponding to the current patch at: > > http://cr.openjdk.java.net/~darcy/7007535.4/BR-7007535.html > > Thanks, > > -Joe > > Mike Duigou wrote: >> This looks good to me but I agree with David that it's probably important to >> look at the generated javadoc and specdiff output before finalizing. >> >> Mike >> >> On Jul 18 2011, at 00:51 , Joe Darcy wrote: >> >> >>> Peter and David. >>> >>> Thanks for the careful review; the @throws information still needs its own >>> {@inheritDoc}; I've uploaded a webrev with this and other corrections: >>> >>> http://cr.openjdk.java.net/~darcy/7007535.4 >>> >>> More comments interspersed below. >>> >>> Thanks, >>> >>> -Joe >>> >>> Peter Jones wrote: >>> >>>> Hi Joe, >>>> >>>> On Jul 15, 2011, at 1:49 AM, David Holmes wrote: >>>> >>>>> On 14/07/2011 12:21 PM, joe.da...@oracle.com wrote: >>>>> >>>>>> Please code review my JDK 8 changes for >>>>>> >>>>>> 7007535: (reflect) Please generalize Constructor and Method >>>>>> http://cr.openjdk.java.net/~darcy/7007535.3 >>>>>> >>>>>> To summarize the changes, a new superclass is defined to capture the >>>>>> common >>>>>> functionality of java.lang.reflect.Method and >>>>>> java.lang.reflect.Constructor. >>>>>> That superclass is named "Executable" along the lines of >>>>>> javax.lang.model.ExecutableElement, which models constructors and >>>>>> methods in >>>>>> the JSR 269 language model. >>>>>> >>>>>> Both specification and implementation code are shared. To preserve the >>>>>> right >>>>>> @since behavior, it is common that in Method/Constructor the javadoc for >>>>>> a >>>>>> method will now look like: >>>>>> >>>>>> /** >>>>>> * {@inheritDoc} >>>>>> * @since 1.5 >>>>>> */ >>>>>> >>>>> Unless they have fixed/changed javadoc (entirely possible) it used to be >>>>> that the above would not cause @throws declarations for unchecked >>>>> exceptions to be inherited - you have/had to explicitly repeat them as: >>>>> >>>>> @throws <exception-type> {@inheritDoc} >>>>> >>>> Yes, that would seem to be needed for some of the inherited getters of >>>> generics info, which specify unchecked exception types. >>>> >>>> >>>>>> Since Executable is being created in JDK 8, it would be incorrect for >>>>>> methods in that class to have an @since of 1.5; adding the @since in >>>>>> Method/Constructor preserves the right information. >>>>>> >>>> In Executable.java, getAnnotation and getDeclaredAnnotations do have >>>> "@since 1.5"-- oversight? >>>> >>> Yes; that was incorrect. >>> >>> >>>> In Constructor.java and Method.java, getExceptionTypes has "@since 1.5", >>>> but that method has existed in those classes since 1.1. >>>> >>>> >>> Fixed. >>> >>> >>>> In Executable.java: >>>> >>>> 216 /** >>>> 217 * Returns an array of {@code Class} objects that represent the >>>> formal >>>> 218 * parameter types, in declaration order, of the method >>>> 219 * represented by this {@code Method} object. Returns an array of >>>> length >>>> 220 * 0 if the underlying method takes no parameters. >>>> 221 * >>>> 222 * @return the parameter types for the method this object >>>> 223 * represents >>>> >>>> At least "{@code Method}" needs to be generalized, and perhaps all >>>> occurrences of "method"? >>>> >>> Corrected. >>> >> >> >