001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.test.jbossmx.compliance.registration;
023:
024: import org.jboss.test.jbossmx.compliance.TestCase;
025:
026: import javax.management.MBeanServer;
027: import javax.management.MBeanServerFactory;
028: import javax.management.ObjectName;
029: import javax.management.MalformedObjectNameException;
030: import javax.management.InstanceAlreadyExistsException;
031: import javax.management.MBeanRegistrationException;
032: import javax.management.NotCompliantMBeanException;
033: import javax.management.InstanceNotFoundException;
034:
035: import org.jboss.test.jbossmx.compliance.registration.support.RegistrationAware;
036:
037: public class RegistrationTestCase extends TestCase {
038: public RegistrationTestCase(String s) {
039: super (s);
040: }
041:
042: public void testSimpleRegistration() {
043: try {
044: MBeanServer server = MBeanServerFactory.newMBeanServer();
045: RegistrationAware ra = new RegistrationAware();
046: ObjectName name = new ObjectName("test:key=value");
047:
048: server.registerMBean(ra, name);
049:
050: assertTrue("preRegister", ra.isPreRegisterCalled());
051: assertTrue("postRegister", ra.isPostRegisterCalled());
052: assertTrue("postRegisterRegistrationDone", ra
053: .isPostRegisterRegistrationDone());
054: assertEquals(name, ra.getRegisteredObjectName());
055:
056: server.unregisterMBean(name);
057:
058: assertTrue("preDeRegister", ra.isPreDeRegisterCalled());
059: assertTrue("postDeRegister", ra.isPostDeRegisterCalled());
060: } catch (MalformedObjectNameException e) {
061: fail("spurious MalformedObjectNameException");
062: } catch (MBeanRegistrationException e) {
063: fail("strange MBeanRegistrationException linked to: "
064: + e.getTargetException().getMessage());
065: } catch (Exception e) {
066: fail("something else went wrong: " + e.getMessage());
067: }
068: }
069:
070: public void testDuplicateRegistration() {
071:
072: try {
073: MBeanServer server = MBeanServerFactory.newMBeanServer();
074: ObjectName name = new ObjectName("test:key=value");
075:
076: RegistrationAware original = new RegistrationAware();
077: RegistrationAware ra = new RegistrationAware();
078:
079: server.registerMBean(original, name);
080:
081: try {
082: server.registerMBean(ra, name);
083: fail("expected a InstanceAlreadyExistsException");
084: } catch (InstanceAlreadyExistsException e) {
085: }
086:
087: assertTrue("preRegister", ra.isPreRegisterCalled());
088: assertTrue("postRegister", ra.isPostRegisterCalled());
089: assertTrue("postRegisterRegistrationDone", !ra
090: .isPostRegisterRegistrationDone());
091: assertTrue("preDeRegister", !ra.isPreDeRegisterCalled());
092: assertTrue("postDeRegister", !ra.isPostDeRegisterCalled());
093: assertEquals(name, ra.getRegisteredObjectName());
094:
095: server.unregisterMBean(name);
096: } catch (Exception e) {
097: fail("got an unexpected exception: " + e.getMessage());
098: }
099: }
100:
101: }
|