1/*
2 * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 6471865 6675768
27 * @summary DescriptorSupport constructors throw IAE when traces are enabled;
28 * RequiredModelMBean.addAttributeChangeNotificationListener throws exception
29 * when traces enabled and no attributes.
30 * @author Luis-Miguel Alventosa
31 * @author Paul Cheeseman
32 *
33 * @modules java.logging
34 *          java.management
35 */
36
37import java.util.logging.ConsoleHandler;
38import java.util.logging.Handler;
39import java.util.logging.Level;
40import java.util.logging.Logger;
41import javax.management.Notification;
42import javax.management.NotificationListener;
43import javax.management.modelmbean.DescriptorSupport;
44import javax.management.modelmbean.RequiredModelMBean;
45
46public class LoggingExceptionTest {
47    private static final String tests[] = new String[] {
48        "DescriptorSupport()",
49        "DescriptorSupport(int)",
50        "DescriptorSupport(String)",
51        "DescriptorSupport(String...)",
52        "DescriptorSupport(String[], Object[])",
53        "DescriptorSupport(DescriptorSupport)",
54        "RequiredModelMBean.addAttributeChangeNotificationListener",
55    };
56    public static void main(String[] args) {
57        Handler handler = new ConsoleHandler();
58        Logger logger = Logger.getLogger("javax.management.modelmbean");
59        logger.addHandler(handler);
60        logger.setLevel(Level.FINEST);
61        try {
62            for (int i = 0; i < tests.length; i++) {
63                System.out.println(">>> DescriptorSupportLoggingTest: Test Case " + i);
64                DescriptorSupport ds;
65                String msg = "Instantiate " + tests[i];
66                System.out.println(msg);
67                switch (i) {
68                    case 0:
69                        ds = new DescriptorSupport();
70                        break;
71                    case 1:
72                        ds = new DescriptorSupport(10);
73                        break;
74                    case 2:
75                        ds = new DescriptorSupport(new DescriptorSupport().toXMLString());
76                        break;
77                    case 3:
78                        ds = new DescriptorSupport("name1=value1", "name2=value2");
79                        break;
80                    case 4:
81                        ds = new DescriptorSupport(new String[] {"name"}, new Object[] {"value"});
82                        break;
83                    case 5:
84                        ds = new DescriptorSupport(new DescriptorSupport());
85                        break;
86                    case 6:
87                        RequiredModelMBean mbean = new RequiredModelMBean();
88                        NotificationListener nl = new NotificationListener() {
89                            public void handleNotification(Notification notification,
90                                                           Object handback) {}
91                        };
92                        mbean.addAttributeChangeNotificationListener(nl, null, null);
93                        break;
94                    default:
95                        throw new AssertionError();
96                }
97                System.out.println(msg + " OK");
98            }
99        } catch (Exception e) {
100            System.out.println("Got unexpected exception = " + e);
101            String msg = "Test FAILED!";
102            System.out.println(msg);
103            throw new IllegalArgumentException(msg);
104        }
105        System.out.println("Test PASSED!");
106    }
107}
108