Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6600709

MXBeans: SortedMap<K,V> fails when V is an array of primitives

XMLWordPrintable

    • b07
    • generic
    • generic

        The MXBean spec says:

        -------------------------------8<---------------------------------
        Mappings for maps (Map<K,V> etc)
        ...

        A SortedMap<K,V> is mapped in the same way, but it is only convertible if K is a class or interface that implements Comparable. Thus, a *SortedMap<String,int[]>* is convertible, but a SortedMap<int[],String> is not.
        -------------------------------8<---------------------------------


        In fact, an attempt to create an MXBean with the attribute of type SortedMap<String,int[]> leads to the following exception:
        -------------------------------8<---------------------------------
        javax.management.NotCompliantMBeanException: proto.negative_tests.Fwrk$ReconstructibleClass02MXBean: Method proto.negative_tests.Fwrk$ReconstructibleClass02MXBean.getSortedMap has parameter or return type that cannot be translated into an open type
                at com.sun.jmx.mbeanserver.Introspector.throwException(Introspector.java:412)
                at com.sun.jmx.mbeanserver.MBeanAnalyzer.<init>(MBeanAnalyzer.java:98)
                at com.sun.jmx.mbeanserver.MBeanAnalyzer.analyzer(MBeanAnalyzer.java:84)
                at com.sun.jmx.mbeanserver.MXBeanIntrospector.getAnalyzer(MXBeanIntrospector.java:53)
                at com.sun.jmx.mbeanserver.MBeanIntrospector.getPerInterface(MBeanIntrospector.java:163)
                at com.sun.jmx.mbeanserver.MBeanSupport.<init>(MBeanSupport.java:147)
                at com.sun.jmx.mbeanserver.MXBeanSupport.<init>(MXBeanSupport.java:48)
                at com.sun.jmx.mbeanserver.Introspector.makeDynamicMBean(Introspector.java:184)
                at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:915)
                at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:294)
                at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:199)
                at com.sun.jmx.mbeanserver.JmxMBeanServer.createMBean(JmxMBeanServer.java:286)
                at proto.negative_tests.Fwrk.m1(Fwrk.java:34)
                at proto.negative_tests.Fwrk.main(Fwrk.java:25)
        Caused by: java.lang.IllegalArgumentException: Method proto.negative_tests.Fwrk$ReconstructibleClass02MXBean.getSortedMap has parameter or return type that cannot be translated into an open type
                at com.sun.jmx.mbeanserver.ConvertingMethod.from(ConvertingMethod.java:32)
                at com.sun.jmx.mbeanserver.MXBeanIntrospector.mFrom(MXBeanIntrospector.java:63)
                at com.sun.jmx.mbeanserver.MXBeanIntrospector.mFrom(MXBeanIntrospector.java:33)
                at com.sun.jmx.mbeanserver.MBeanAnalyzer.initMaps(MBeanAnalyzer.java:115)
                at com.sun.jmx.mbeanserver.MBeanAnalyzer.<init>(MBeanAnalyzer.java:96)
                ... 12 more
        Caused by: javax.management.openmbean.OpenDataException: Cannot obtain array class
                at com.sun.jmx.mbeanserver.OpenConverter.openDataException(OpenConverter.java:1370)
                at com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter(OpenConverter.java:321)
                at com.sun.jmx.mbeanserver.OpenConverter.makeConverter(OpenConverter.java:274)
                at com.sun.jmx.mbeanserver.OpenConverter.toConverter(OpenConverter.java:256)
                at com.sun.jmx.mbeanserver.OpenConverter.makeTabularConverter(OpenConverter.java:352)
                at com.sun.jmx.mbeanserver.OpenConverter.makeParameterizedConverter(OpenConverter.java:394)
                at com.sun.jmx.mbeanserver.OpenConverter.makeConverter(OpenConverter.java:288)
                at com.sun.jmx.mbeanserver.OpenConverter.toConverter(OpenConverter.java:256)
                at com.sun.jmx.mbeanserver.ConvertingMethod.<init>(ConvertingMethod.java:184)
                at com.sun.jmx.mbeanserver.ConvertingMethod.from(ConvertingMethod.java:27)
                ... 16 more
        Caused by: java.lang.ClassNotFoundException: [Lint;
                at java.lang.Class.forName0(Native Method)
                at java.lang.Class.forName(Class.java:169)
                at com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter(OpenConverter.java:319)
                ... 24 more
        -------------------------------8<---------------------------------

        The test class attached.

              emcmanus Eamonn McManus
              ashusher Alexander Shusherov (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: