Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/mxbean/AmbiguousConstructorTest.java
41149 views
1
/*
2
* Copyright (c) 2005, 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 6175517 6278707
27
* @summary Test that ambiguous ConstructorProperties annotations are detected.
28
* @author Eamonn McManus
29
*
30
* @run clean AmbiguousConstructorTest
31
* @run build AmbiguousConstructorTest
32
* @run main AmbiguousConstructorTest
33
*/
34
35
import javax.management.ConstructorParameters;
36
import javax.management.*;
37
38
public class AmbiguousConstructorTest {
39
public static void main(String[] args) throws Exception {
40
MBeanServer mbs = MBeanServerFactory.newMBeanServer();
41
42
System.out.println("Unambiguous case:");
43
ObjectName unambigName = new ObjectName("d:type=Unambiguous");
44
mbs.registerMBean(new UnambiguousImpl(), unambigName);
45
System.out.println("...OK");
46
47
System.out.println("Ambiguous case:");
48
ObjectName ambigName = new ObjectName("d:type=Ambiguous");
49
boolean exception = false;
50
try {
51
mbs.registerMBean(new AmbiguousImpl(), ambigName);
52
} catch (Exception e) {
53
// TODO - check for the specific exception we should get.
54
// Currently exception happens in preRegister so we have
55
// RuntimeMBeanException -> IllegalArgumentException ->
56
// InvalidObjectException, where the IllegalArgumentException
57
// is thrown by MXSupport.MBeanDispatcher.visitAttribute when
58
// it calls ConvertingMethod.checkCallFromOpen
59
System.out.println("...OK, got expected exception:");
60
e.printStackTrace(System.out);
61
exception = true;
62
}
63
if (!exception) {
64
System.out.println("TEST FAILED: expected exception, got none");
65
throw new Exception("Did not get expected exception");
66
}
67
68
System.out.println("TEST PASSED");
69
}
70
71
public static class Unambiguous {
72
public byte getA() {return 0;}
73
public short getB() {return 0;}
74
public int getC() {return 0;}
75
public long getD() {return 0;}
76
77
@ConstructorParameters({"a", "b"})
78
public Unambiguous(byte a, short b) {}
79
80
@ConstructorParameters({"b", "c"})
81
public Unambiguous(short b, int c) {}
82
83
@ConstructorParameters({"a", "b", "c"})
84
public Unambiguous(byte a, short b, int c) {}
85
}
86
87
public static class Ambiguous {
88
public byte getA() {return 0;}
89
public short getB() {return 0;}
90
public int getC() {return 0;}
91
public long getD() {return 0;}
92
93
@ConstructorParameters({"a", "b"})
94
public Ambiguous(byte a, short b) {}
95
96
@ConstructorParameters({"b", "c"})
97
public Ambiguous(short b, int c) {}
98
99
@ConstructorParameters({"a", "b", "c", "d"})
100
public Ambiguous(byte a, short b, int c, long d) {}
101
}
102
103
public static interface UnambiguousMXBean {
104
public void setUnambiguous(Unambiguous x);
105
}
106
107
public static class UnambiguousImpl implements UnambiguousMXBean {
108
public void setUnambiguous(Unambiguous x) {}
109
}
110
111
public static interface AmbiguousMXBean {
112
public void setAmbiguous(Ambiguous x);
113
}
114
115
public static class AmbiguousImpl implements AmbiguousMXBean {
116
public void setAmbiguous(Ambiguous x) {}
117
}
118
}
119
120