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

MXBeans: no IllegalArgumentException in the ex. chain for SortedSet/Map with a non-null comparator()

XMLWordPrintable

    • b07
    • generic
    • generic

        The Mapping Rules for Collections in the MXBean spec say:

        -------------------------------------8<----------------------------------
          Mappings for collections (List<E> etc)

        ...

        The conversion of a SortedSet instance will fail with an IllegalArgumentException if it has a non-null comparator().
        -------------------------------------8<----------------------------------

        However having an MXBean with the attribute of a custom type like this:

            // The getter for the item "nonConvertibleSortedSet"
            // returns a SortedSet with a non-null comparator()
            public static class NonConvertibleType07 {
                public static NonConvertibleType07 from(CompositeData cd) {
                    return new NonConvertibleType07();
                }
                
                public SortedSet<String> getNonConvertibleSortedSet() {
                    TreeSet<String> treeSet =
                                            new TreeSet<String>(Collator.getInstance());
                    treeSet.add("value");
                    return treeSet;
                }
            }

        and attempting to get this non-convertible item leads to the exception with no sights of the IllegalArgumentException in its chain:

        -------------------------------------8<----------------------------------
        javax.management.MBeanException: interface proto.negative_tests.SortedSetMapException$TestedClassMXBean.getNonConvertibleType07: cannot convert return value to open value: javax.management.openmbean.OpenDataException: Error calling getter for nonConvertibleSortedSet: javax.management.openmbean.OpenDataException: Cannot convert SortedSet with non-null comparator: java.text.RuleBasedCollator@e4fa487e
                at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:174)
                at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:96)
                at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:33)
                at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208)
                at com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:65)
                at com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:216)
                at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666)
                at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
                at proto.negative_tests.SortedSetMapException.m1(SortedSetMapException.java:32)
                at proto.negative_tests.SortedSetMapException.main(SortedSetMapException.java:23)
        Caused by: javax.management.openmbean.OpenDataException: Error calling getter for nonConvertibleSortedSet: javax.management.openmbean.OpenDataException: Cannot convert SortedSet with non-null comparator: java.text.RuleBasedCollator@e4fa487e
                at com.sun.jmx.mbeanserver.OpenConverter.openDataException(OpenConverter.java:1370)
                at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.toNonNullOpenValue(OpenConverter.java:813)
                at com.sun.jmx.mbeanserver.OpenConverter.toOpenValue(OpenConverter.java:128)
                at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:169)
                ... 9 more
        Caused by: javax.management.openmbean.OpenDataException: Cannot convert SortedSet with non-null comparator: java.text.RuleBasedCollator@e4fa487e
                at com.sun.jmx.mbeanserver.OpenConverter$CollectionConverter.toNonNullOpenValue(OpenConverter.java:620)
                at com.sun.jmx.mbeanserver.OpenConverter.toOpenValue(OpenConverter.java:128)
                at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.toNonNullOpenValue(OpenConverter.java:811)
                ... 11 more
        BUILD SUCCESSFUL (total time: 3 seconds)
        -------------------------------------8<----------------------------------
        (the java-source attached)

        The same thing is about the SortedMap.

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

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: