author | dfuchs |
Wed, 10 Sep 2008 16:27:13 +0200 | |
changeset 1227 | 4546977d0d66 |
child 1709 | 392dd6db361a |
permissions | -rw-r--r-- |
1227
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
1 |
/* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
2 |
* Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
4 |
* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
8 |
* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
13 |
* accompanied this code). |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
14 |
* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
18 |
* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
19 |
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
20 |
* CA 95054 USA or visit www.sun.com if you need additional information or |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
21 |
* have any questions. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
22 |
*/ |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
23 |
/* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
24 |
* @test LeadingSeparatorsTest.java |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
25 |
* @summary Test that the semantics of a leading // in ObjectName is respected. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
26 |
* @author Daniel Fuchs |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
27 |
* @bug 5072476 |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
28 |
* @run clean LeadingSeparatorsTest Wombat WombatMBean |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
29 |
* @compile -XDignore.symbol.file=true LeadingSeparatorsTest.java |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
30 |
* @run build LeadingSeparatorsTest Wombat WombatMBean |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
31 |
* @run main LeadingSeparatorsTest |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
32 |
*/ |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
33 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
34 |
import java.lang.management.ManagementFactory; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
35 |
import java.util.Arrays; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
36 |
import java.util.Set; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
37 |
import java.util.HashSet; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
38 |
import java.util.logging.Logger; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
39 |
import javax.management.MBeanServer; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
40 |
import javax.management.MBeanServerFactory; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
41 |
import javax.management.NotCompliantMBeanException; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
42 |
import javax.management.ObjectName; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
43 |
import javax.management.namespace.JMXNamespaces; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
44 |
import javax.management.namespace.JMXRemoteNamespace; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
45 |
import javax.management.namespace.JMXNamespace; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
46 |
import javax.management.remote.JMXConnectorServer; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
47 |
import javax.management.remote.JMXConnectorServerFactory; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
48 |
import javax.management.remote.JMXServiceURL; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
49 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
50 |
/** |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
51 |
* Class LeadingSeparatorsTest |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
52 |
* @author Sun Microsystems, 2005 - All rights reserved. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
53 |
*/ |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
54 |
public class LeadingSeparatorsTest { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
55 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
56 |
/** |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
57 |
* A logger for this class. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
58 |
**/ |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
59 |
private static final Logger LOG = |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
60 |
Logger.getLogger(LeadingSeparatorsTest.class.getName()); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
61 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
62 |
/** Creates a new instance of NullObjectNameTest */ |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
63 |
public LeadingSeparatorsTest() { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
64 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
65 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
66 |
public static interface MyWombatMBean extends WombatMBean { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
67 |
public Set<ObjectName> untrue(ObjectName pat) throws Exception; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
68 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
69 |
public static class MyWombat |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
70 |
extends Wombat implements MyWombatMBean { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
71 |
public MyWombat() throws NotCompliantMBeanException { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
72 |
super(MyWombatMBean.class); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
73 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
74 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
75 |
public Set<ObjectName> untrue(ObjectName pat) throws Exception { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
76 |
final Set<ObjectName> res=listMatching(pat.withDomain("*")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
77 |
final Set<ObjectName> untrue = new HashSet<ObjectName>(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
78 |
for (ObjectName a:res) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
79 |
untrue.add(a.withDomain(pat.getDomain()+"//"+a.getDomain())); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
80 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
81 |
return untrue; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
82 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
83 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
84 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
85 |
static String failure=null; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
86 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
87 |
public static void testRegister() throws Exception { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
88 |
final MBeanServer top = ManagementFactory.getPlatformMBeanServer(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
89 |
final MBeanServer sub = MBeanServerFactory.createMBeanServer(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
90 |
final JMXServiceURL url = new JMXServiceURL("rmi",null,0); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
91 |
final JMXConnectorServer srv = |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
92 |
JMXConnectorServerFactory.newJMXConnectorServer(url,null,sub); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
93 |
srv.start(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
94 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
95 |
try { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
96 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
97 |
// Create a namespace rmi// that points to 'sub' and flows through |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
98 |
// a JMXRemoteNamespace connected to 'srv' |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
99 |
// The namespace rmi// will accept createMBean, but not registerMBean. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
100 |
// |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
101 |
final JMXRemoteNamespace rmiHandler = JMXRemoteNamespace. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
102 |
newJMXRemoteNamespace(srv.getAddress(),null); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
103 |
top.registerMBean(rmiHandler, |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
104 |
JMXNamespaces.getNamespaceObjectName("rmi")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
105 |
top.invoke(JMXNamespaces.getNamespaceObjectName("rmi"), |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
106 |
"connect", null, null); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
107 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
108 |
// Create a namespace direct// that points to 'sub' and flows |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
109 |
// through a direct reference to 'sub'. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
110 |
// The namespace direct// will accept createMBean, and registerMBean. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
111 |
// |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
112 |
final JMXNamespace directHandler = new JMXNamespace(sub); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
113 |
top.registerMBean(directHandler, |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
114 |
JMXNamespaces.getNamespaceObjectName("direct")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
115 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
116 |
final ObjectName n1 = new ObjectName("//direct//w:type=Wombat"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
117 |
final ObjectName n2 = new ObjectName("direct//w:type=Wombat"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
118 |
final ObjectName n3 = new ObjectName("//rmi//w:type=Wombat"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
119 |
final ObjectName n4 = new ObjectName("rmi//w:type=Wombat"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
120 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
121 |
// register wombat using an object name with a leading // |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
122 |
final Object obj = new MyWombat(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
123 |
// check that returned object name doesn't have the leading // |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
124 |
assertEquals(n2,top.registerMBean(obj, n1).getObjectName()); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
125 |
System.out.println(n1+" registered"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
126 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
127 |
// check that the registered Wombat can be accessed with all its |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
128 |
// names. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
129 |
System.out.println(n2+" mood is: "+top.getAttribute(n2, "Mood")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
130 |
System.out.println(n1+" mood is: "+top.getAttribute(n1, "Mood")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
131 |
System.out.println(n4+" mood is: "+top.getAttribute(n4, "Mood")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
132 |
System.out.println(n3+" mood is: "+top.getAttribute(n3, "Mood")); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
133 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
134 |
// call listMatching. The result should not contain any prefix. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
135 |
final Set<ObjectName> res = (Set<ObjectName>) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
136 |
top.invoke(n3, "listMatching", |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
137 |
// remove rmi// from rmi//*:* |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
138 |
JMXNamespaces.deepReplaceHeadNamespace( |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
139 |
new Object[] {ObjectName.WILDCARD.withDomain("rmi//*")}, |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
140 |
"rmi", ""), new String[] {ObjectName.class.getName()}); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
141 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
142 |
// add rmi// prefix to all names in res. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
143 |
final Set<ObjectName> res1 = |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
144 |
JMXNamespaces.deepReplaceHeadNamespace(res, "", "rmi"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
145 |
System.out.println("got: "+res1); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
146 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
147 |
// compute expected result |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
148 |
final Set<ObjectName> res2 = sub.queryNames(null,null); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
149 |
final Set<ObjectName> res3 = new HashSet<ObjectName>(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
150 |
for (ObjectName o:res2) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
151 |
res3.add(o.withDomain("rmi//"+o.getDomain())); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
152 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
153 |
System.out.println("expected: "+res3); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
154 |
assertEquals(res1, res3); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
155 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
156 |
// invoke "untrue(//niark//niark:*)" |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
157 |
// should return a set were all ObjectNames begin with |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
158 |
// //niark//niark// |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
159 |
// |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
160 |
final Set<ObjectName> res4 = (Set<ObjectName>) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
161 |
top.invoke(n3, "untrue", |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
162 |
// remove niark//niark : should remove nothing since |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
163 |
// our ObjectName begins with a leading // |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
164 |
JMXNamespaces.deepReplaceHeadNamespace( |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
165 |
new Object[] { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
166 |
ObjectName.WILDCARD.withDomain("//niark//niark")}, |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
167 |
"niark//niark", ""), |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
168 |
new String[] {ObjectName.class.getName()}); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
169 |
System.out.println("got: "+res4); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
170 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
171 |
// add rmi// should add nothing since the returned names have a |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
172 |
// leading // |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
173 |
// |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
174 |
final Set<ObjectName> res5 = |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
175 |
JMXNamespaces.deepReplaceHeadNamespace(res4, "", "rmi"); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
176 |
System.out.println("got#2: "+res5); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
177 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
178 |
// compute expected result |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
179 |
final Set<ObjectName> res6 = new HashSet<ObjectName>(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
180 |
for (ObjectName o:res2) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
181 |
res6.add(o.withDomain("//niark//niark//"+o.getDomain())); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
182 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
183 |
System.out.println("expected: "+res6); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
184 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
185 |
// both res4 and res5 should be equals to the expected result. |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
186 |
assertEquals(res4, res6); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
187 |
assertEquals(res5, res6); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
188 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
189 |
} finally { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
190 |
srv.stop(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
191 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
192 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
193 |
if (failure != null) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
194 |
throw new Exception(failure); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
195 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
196 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
197 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
198 |
private static void assertEquals(Object x, Object y) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
199 |
if (!equal(x, y)) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
200 |
failed("expected " + string(x) + "; got " + string(y)); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
201 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
202 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
203 |
private static boolean equal(Object x, Object y) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
204 |
if (x == y) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
205 |
return true; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
206 |
if (x == null || y == null) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
207 |
return false; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
208 |
if (x.getClass().isArray()) |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
209 |
return Arrays.deepEquals(new Object[] {x}, new Object[] {y}); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
210 |
return x.equals(y); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
211 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
212 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
213 |
private static String string(Object x) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
214 |
String s = Arrays.deepToString(new Object[] {x}); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
215 |
return s.substring(1, s.length() - 1); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
216 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
217 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
218 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
219 |
private static void failed(String why) { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
220 |
failure = why; |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
221 |
new Throwable("FAILED: " + why).printStackTrace(System.out); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
222 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
223 |
|
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
224 |
public static void main(String[] args) throws Exception { |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
225 |
testRegister(); |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
226 |
} |
4546977d0d66
6746754: jmx namespace: test for leading separator missing
dfuchs
parents:
diff
changeset
|
227 |
} |