blob: d7f9d8d6f004bfb21584e48e2a23122cac5587a6 [file] [log] [blame]
/*
*
* 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.jmx;
import javax.management.Notification;
import javax.management.ObjectName;
import org.apache.qpid.management.Names;
import org.apache.qpid.management.domain.services.SequenceNumberGenerator;
/**
* Q-Man JMX entity lifecycle notification.
* A notification is sent to interested listener by Q-Man on the following scenarios :
*
* <br> - A schema (class / event) has been requested (Schema request);
* <br> - A schema (class / event) has been injected (Schema response);
* <br> - A schema cannot be parsed (probably it is malformed);
* <br> - An object instance has been created (Instrumentation / Configuration response);
* <br> - An event instance has been created (Instrumentation / Configuration response);
* <br> - An object instance has been removed (Instrumentation / Configuration response);
*
* @author Andrea Gazzarini
*/
public class EntityLifecycleNotification extends Notification
{
private static final long serialVersionUID = -7755773156742412161L;
public static final String SCHEMA_INJECTED_NOTIFICATION_TYPE = "org.apache.qpid.management.lifecycle.entity.schema.injected";
public static final String SCHEMA_REQUESTED_NOTIFICATION_TYPE = "org.apache.qpid.management.lifecycle.entity.schema.requested";
public static final String MALFORMED_SCHEMA_NOTIFICATION_TYPE = "org.apache.qpid.management.lifecycle.error.schema";
public static final String INSTANCE_ADDED_NOTIFICATION_TYPE = "qman.lifecycle.entity.instance.created";
public static final String INSTANCE_REMOVED_NOTIFICATION_TYPE = "qman.lifecycle.entity.instance.removed";
private String _packageName = Names.NOT_AVAILABLE;
private String _className = Names.NOT_AVAILABLE;
private String _classKind = Names.NOT_AVAILABLE;
private ObjectName _objectName;
/**
* Builds a new notification with the given parameters.
*
* @param type the notification type.
* @param sequenceNumber the sequence number.
* @param packageName the package name.
* @param className the class name.
* @param classKind the class kind (i.e. class or event)
* @param objectName the object name of the affected mbean.
*/
public EntityLifecycleNotification(
String type,
String packageName,
String className,
String classKind,
ObjectName objectName)
{
super(
type,
Names.APPLICATION_NAME,
SequenceNumberGenerator.getNextSequenceNumber());
this._className = className;
this._packageName = packageName;
this._classKind = classKind;
this._objectName = objectName;
}
/**
* Returns the package name of object contained in this notification.
*
* @return the package name of object contained in this notification.
*/
public String getPackageName()
{
return _packageName;
}
/**
* Returns the class name of object contained in this notification.
*
* @return the class name of object contained in this notification.
*/
public String getClassName()
{
return _className;
}
/**
* Returns the class kind of object contained in this notification.
*
* @return the class kind of object contained in this notification.
* @see Names#CLASS
* @see Names#EVENT
*/
public String getClassKind()
{
return _classKind;
}
/**
* Returns the object name of object contained in this notification.
*
* @return the object name of object contained in this notification.
*/
public ObjectName getObjectName()
{
return _objectName;
}
/**
* Returns a string representation of this notification.
*
* @return a string representation of this notification.
*/
@Override
public String toString()
{
return new StringBuilder()
.append(getType())
.append(':')
.append(_packageName)
.append('.')
.append(_className)
.append('@')
.append(_objectName)
.toString();
}
}