jdk/test/javax/management/namespace/LeadingSeparatorsTest.java
changeset 4159 9e3aae7675f1
parent 4158 0b4d21bc8b5c
parent 4156 acaa49a2768a
child 4160 bda0a85afcb7
--- a/jdk/test/javax/management/namespace/LeadingSeparatorsTest.java	Wed Oct 21 15:47:09 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*
- * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-/*
- * @test LeadingSeparatorsTest.java
- * @summary Test that the semantics of a leading // in ObjectName is respected.
- * @author Daniel Fuchs
- * @bug 5072476 6768935
- * @run clean LeadingSeparatorsTest Wombat WombatMBean
- * @compile -XDignore.symbol.file=true  LeadingSeparatorsTest.java
- * @run build LeadingSeparatorsTest Wombat WombatMBean
- * @run main LeadingSeparatorsTest
- */
-
-import java.lang.management.ManagementFactory;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.logging.Logger;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.NotCompliantMBeanException;
-import javax.management.ObjectName;
-import javax.management.namespace.JMXNamespaces;
-import javax.management.namespace.JMXRemoteNamespace;
-import javax.management.namespace.JMXNamespace;
-import javax.management.remote.JMXConnectorServer;
-import javax.management.remote.JMXConnectorServerFactory;
-import javax.management.remote.JMXServiceURL;
-
-/**
- * Class LeadingSeparatorsTest
- * @author Sun Microsystems, 2005 - All rights reserved.
- */
-public class LeadingSeparatorsTest {
-
-    /**
-     * A logger for this class.
-     **/
-    private static final Logger LOG =
-            Logger.getLogger(LeadingSeparatorsTest.class.getName());
-
-    /** Creates a new instance of NullObjectNameTest */
-    public LeadingSeparatorsTest() {
-    }
-
-    public static interface MyWombatMBean extends WombatMBean {
-        public Set<ObjectName> untrue(ObjectName pat) throws Exception;
-    }
-    public static class MyWombat
-            extends Wombat implements MyWombatMBean {
-        public MyWombat() throws NotCompliantMBeanException {
-            super(MyWombatMBean.class);
-        }
-
-        public Set<ObjectName> untrue(ObjectName pat) throws Exception {
-            final Set<ObjectName> res=listMatching(pat.withDomain("*"));
-            final Set<ObjectName> untrue = new HashSet<ObjectName>();
-            for (ObjectName a:res) {
-                untrue.add(a.withDomain(pat.getDomain()+"//"+a.getDomain()));
-            }
-            return untrue;
-        }
-    }
-
-    static String failure=null;
-
-    public static void testRegister() throws Exception {
-        final MBeanServer top = ManagementFactory.getPlatformMBeanServer();
-        final MBeanServer sub = MBeanServerFactory.createMBeanServer();
-        final JMXServiceURL url = new JMXServiceURL("rmi",null,0);
-        final JMXConnectorServer srv =
-                JMXConnectorServerFactory.newJMXConnectorServer(url,null,sub);
-        srv.start();
-
-        try {
-
-            // Create a namespace rmi// that points to 'sub' and flows through
-            // a JMXRemoteNamespace connected to 'srv'
-            // The namespace rmi// will accept createMBean, but not registerMBean.
-            //
-            final JMXRemoteNamespace rmiHandler = JMXRemoteNamespace.
-                    newJMXRemoteNamespace(srv.getAddress(),null);
-            top.registerMBean(rmiHandler,
-                    JMXNamespaces.getNamespaceObjectName("rmi"));
-            top.invoke(JMXNamespaces.getNamespaceObjectName("rmi"),
-                    "connect", null, null);
-
-            // Create a namespace direct// that points to 'sub' and flows
-            // through a direct reference to 'sub'.
-            // The namespace direct// will accept createMBean, and registerMBean.
-            //
-            final JMXNamespace directHandler = new JMXNamespace(sub);
-            top.registerMBean(directHandler,
-                    JMXNamespaces.getNamespaceObjectName("direct"));
-
-            final ObjectName n1 = new ObjectName("//direct//w:type=Wombat");
-            final ObjectName n2 = new ObjectName("direct//w:type=Wombat");
-            final ObjectName n3 = new ObjectName("//rmi//w:type=Wombat");
-            final ObjectName n4 = new ObjectName("rmi//w:type=Wombat");
-
-            // register wombat using an object name with a leading //
-            final Object     obj = new MyWombat();
-            // check that returned object name doesn't have the leading //
-            assertEquals(n2,top.registerMBean(obj, n2).getObjectName());
-            System.out.println(n1+" registered");
-
-            // check that the registered Wombat can be accessed with all its
-            // names.
-            System.out.println(n2+" mood is: "+top.getAttribute(n2, "Mood"));
-            try {
-                System.out.println(n1+" mood is: "+top.getAttribute(n1, "Mood"));
-                throw new Exception("Excepected exception not thrown for "+n1);
-            } catch (InstanceNotFoundException x) {
-                System.out.println("OK: "+x);
-            }
-            System.out.println(n4+" mood is: "+top.getAttribute(n4, "Mood"));
-            try {
-                System.out.println(n3+" mood is: "+top.getAttribute(n3, "Mood"));
-                throw new Exception("Excepected exception not thrown for "+n3);
-            } catch (InstanceNotFoundException x) {
-                System.out.println("OK: "+x);
-            }
-
-            // call listMatching. The result should not contain any prefix.
-            final Set<ObjectName> res = (Set<ObjectName>)
-                    top.invoke(n4, "listMatching",
-                    // remove rmi// from rmi//*:*
-                    JMXNamespaces.deepReplaceHeadNamespace(
-                    new Object[] {ObjectName.WILDCARD.withDomain("rmi//*")},
-                    "rmi", ""), new String[] {ObjectName.class.getName()});
-
-            // add rmi// prefix to all names in res.
-            final Set<ObjectName> res1 =
-                   JMXNamespaces.deepReplaceHeadNamespace(res, "", "rmi");
-            System.out.println("got: "+res1);
-
-            // compute expected result
-            final Set<ObjectName> res2 = sub.queryNames(null,null);
-            final Set<ObjectName> res3 = new HashSet<ObjectName>();
-            for (ObjectName o:res2) {
-               res3.add(o.withDomain("rmi//"+o.getDomain()));
-            }
-            System.out.println("expected: "+res3);
-            assertEquals(res1, res3);
-
-            // invoke "untrue(//niark//niark:*)"
-            // should return a set were all ObjectNames begin with
-            // //niark//niark//
-            //
-            final Set<ObjectName> res4 = (Set<ObjectName>)
-                    top.invoke(n4, "untrue",
-                    // remove niark//niark : should remove nothing since
-                    // our ObjectName begins with a leading //
-                    JMXNamespaces.deepReplaceHeadNamespace(
-                    new Object[] {
-                       ObjectName.WILDCARD.withDomain("//niark//niark")},
-                    "niark//niark", ""),
-                    new String[] {ObjectName.class.getName()});
-            System.out.println("got: "+res4);
-
-            // add rmi// should add nothing since the returned names have a
-            // leading //
-            //
-            final Set<ObjectName> res5 =
-                   JMXNamespaces.deepReplaceHeadNamespace(res4, "", "rmi");
-            System.out.println("got#2: "+res5);
-
-            // compute expected result
-            final Set<ObjectName> res6 = new HashSet<ObjectName>();
-            for (ObjectName o:res2) {
-               res6.add(o.withDomain("//niark//niark//"+o.getDomain()));
-            }
-            System.out.println("expected: "+res6);
-
-            // both res4 and res5 should be equals to the expected result.
-            assertEquals(res4, res6);
-            assertEquals(res5, res6);
-
-        } finally {
-            srv.stop();
-        }
-
-        if (failure != null)
-            throw new Exception(failure);
-
-
-    }
-    private static void assertEquals(Object x, Object y) {
-        if (!equal(x, y))
-            failed("expected " + string(x) + "; got " + string(y));
-    }
-
-    private static boolean equal(Object x, Object y) {
-        if (x == y)
-            return true;
-        if (x == null || y == null)
-            return false;
-        if (x.getClass().isArray())
-            return Arrays.deepEquals(new Object[] {x}, new Object[] {y});
-        return x.equals(y);
-    }
-
-    private static String string(Object x) {
-        String s = Arrays.deepToString(new Object[] {x});
-        return s.substring(1, s.length() - 1);
-    }
-
-
-    private static void failed(String why) {
-        failure = why;
-        new Throwable("FAILED: " + why).printStackTrace(System.out);
-    }
-
-    public static void main(String[] args) throws Exception {
-        testRegister();
-    }
-}