On 2/26/18 4:23 PM, Jeremy Manson wrote:
Hi Mandy,

Thanks for taking this on!  I'm happy to see that you are happy to do cleanups I was too timid to do (like adding the Factory in the tests).

I note a few places in the test code where static initializers can throw RuntimeExceptions.  When I ran the tests, and a static initializer threw a RuntimeException, I didn't see it reflected in the output, so I had to add print statements.  Was I just doing it wrong, or is that a feature of jtreg?


Do you see ExceptionInInitializerError and its cause should be RuntimeException?  ExceptionInInitializerError is thrown when <clinit> fails.


Just a couple of random nits:

>  267      * @throws IllegalArgumentException if the given CompositeData does not >  268      * contain all attributes representing ThreadInfo of any release.

Could this be misinterpreted?  If you have everything in V5, and only one of the V6 attributes, it contains all of the attributes representing the ThreadInfo of V5.  Maybe you want to say "does not contain exactly the attributes present in ThreadInfo for a particular release"?


The javadoc has this statement:
   A CompositeData representing a ThreadInfo of version N must contain all the attributes defined since N or earlier unless specified otherwise.

What about:
@throws IAE if the given CompositeData does not contain all {@linkplain #attrs ThreadInfo attributes} for a  release.

I will add a link to the table.

For signatures like:

> static CompositeType initV5CompositeType(CompositeType ctype) {

I probably would change the name of ctype to indicate when you are reading the method that the parameter is always supposed to be the the CompositeType for ThreadInfo.



Let me think about it and send another webrev.  I am tempted to improve and provide an automated way for the versioning support.

Mandy


On Fri, Feb 23, 2018 at 4:50 PM, mandy chung <mandy.ch...@oracle.com <mailto:mandy.ch...@oracle.com>> wrote:

    Webrev at:
       http://cr.openjdk.java.net/~mchung/jdk11/webrevs/8198253/webrev.01
    <http://cr.openjdk.java.net/%7Emchung/jdk11/webrevs/8198253/webrev.01>

    This patch updates the spec to clarify what attributes are required
    since which release.  There is a spec bug that "classLoaderName"
    added in JDK 9 is missing in the CompositeData for StackTraceElement
    but the implementation is correct.  I will file a CSR for this update.

    This patch ensures that CompositeData for ThreadInfo of version N
    must have the attributes defined since <= N.
    ThreadInfo::from also makes sure 'stackTrace' and 'lockedMonitors'
    attributes of version N while it can include additional attributes
    which has been the current behavior.

    JDK-8139587 intended to support older versions of StackTraceElement
    which does not seem a complete solution.  I reverted the fix for
    JDK-8139587 (mostly) and removed TypeVersionMapper.  The fix constructs
    the CompositeType for ThreadInfo and MonitorInfo of different
    versions and used them for validation.  Minor cleanup: the static
    final variables are renamed to all capitals.  CompatibilityTest.java
    test is missing the copyright header.

    thanks
    Mandy
    
[1]http://cr.openjdk.java.net/~mchung/jdk11/webrevs/8198253/api/java/lang/management/ThreadInfo.html#from(javax.management.openmbean.CompositeData)
    
<http://cr.openjdk.java.net/%7Emchung/jdk11/webrevs/8198253/api/java/lang/management/ThreadInfo.html#from%28javax.management.openmbean.CompositeData%29>



Reply via email to