Package org.apache.qpid.management.wsdm

Source Code of org.apache.qpid.management.wsdm.QEmu

/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.qpid.management.wsdm;

import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
import javax.management.NotificationBroadcasterSupport;
import javax.management.ObjectName;

import org.apache.qpid.management.Names;
import org.apache.qpid.management.domain.handler.impl.QpidDomainObject;
import org.apache.qpid.management.domain.handler.impl.QpidDomainObjectMBean;
import org.apache.qpid.management.jmx.EntityLifecycleNotification;

/**
* QEmu is basically an instance creator that is installed separately
* as part of QMan test cases & examples.
* Reason for that is to emulate object creation (queues, exchanges, etc...)
* without having Qpid broker connected and therefore controlling the
* total number of the instances that are created.
*
* @author Andrea Gazzarini
*/
public class QEmu extends NotificationBroadcasterSupport implements QEmuMBean, MBeanRegistration{
  
  private MBeanServer _mxServer;
  private final static String PACKAGE_NAME= "org.apache.qpid";
  private final static String QUEUE = "queue";
 
  /**
   * Unregisters a Queue MBean with MBeanServer.
   *
   * @param objectName the name of the MBean that must unregistered.
   * @throws Exception when the creation or the registration fails.
   */
  public void unregister(ObjectName objectName) throws Exception
  {
    _mxServer.unregisterMBean(objectName);
   
    sendNotification(
        EntityLifecycleNotification.INSTANCE_REMOVED_NOTIFICATION_TYPE,
        objectName);
  }

  /**
   * Creates and registers a Queue MBean with MBeanServer.
   *
   * @param objectName the name of the queue MBean.
   * @throws Exception when the creation or the registration fails.
   */
  public void createQueue(ObjectName objectName) throws Exception
  {
    QpidDomainObjectMBean queue = new QpidDomainObject();
    _mxServer.registerMBean(queue, objectName);
   
    sendNotification(
        EntityLifecycleNotification.INSTANCE_ADDED_NOTIFICATION_TYPE,
        objectName);
  }

  /**
   * Sends a notification about a lifecycle event of the mbean associated
   * with the given object.
   *
   * @param type the event (notification) type.
   * @param name the name of the event source.
   */
  private void sendNotification(String type,ObjectName name)
  {
    sendNotification(
        new EntityLifecycleNotification(
            type,
            PACKAGE_NAME,
            QUEUE,
            Names.CLASS,
            name));
  }
 
  /**
   * Not implemented for this class.
   */
  public void postDeregister()
  {
    // N.A.
  }

  /**
   * Not implemented for this class.
   */
  public void postRegister(Boolean registrationDone)
  {
    // N.A.
  }

  /**
   * Not implemented for this class.
   */
  public void preDeregister()
  {
    // N.A.
  }

  /**
   * MBean server callback.
   * Stores the value of the owner MBeanServer.
   */
  public ObjectName preRegister(MBeanServer server, ObjectName name)
  {
    this._mxServer = server;
    return name;
  }
}
TOP

Related Classes of org.apache.qpid.management.wsdm.QEmu

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.