JDK-6574488 : new DescriptorSupport() constructor should never throw IllegalArgumentException
  • Type: Bug
  • Component: core-svc
  • Sub-Component: javax.management
  • Affected Version: 6
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2007-06-27
  • Updated: 2010-07-29
  • Resolved: 2007-06-28
Related Reports
Duplicate :  
Description
The debug logging code in this constructor throws an exception when enabled, rendering
the constructor unusable when trying to log jmx 

Test-case - enable logging, call the constructor - it fails:


import java.util.logging.*;
import javax.management.modelmbean.*;
import javax.management.*;

public class Test {

    public static void main(String[] args) throws Exception {

        Descriptor ds = new DescriptorSupport();

        System.out.println("ds = "+ds);

        Logger logger = Logger.getLogger("");
        logger.setLevel(Level.ALL);

        Handler handler = new ConsoleHandler();
        handler.setLevel(Level.ALL);

        logger.addHandler(handler);

        ds = new DescriptorSupport();

        System.out.println("ds = "+ds);



    }
}


Results:



ds =
Exception in thread "main" java.lang.IllegalArgumentException: Null Map
        at javax.management.ImmutableDescriptor.<init>(ImmutableDescriptor.java:85)
        at javax.management.modelmbean.DescriptorSupport.hashCode(DescriptorSupport.java:777)
        at javax.management.modelmbean.DescriptorSupport.debug(DescriptorSupport.java:1260)
        at javax.management.modelmbean.DescriptorSupport.debug(DescriptorSupport.java:1266)
        at javax.management.modelmbean.DescriptorSupport.<init>(DescriptorSupport.java:160)
        at Test.main(Test.java:22)