/* | |
* | |
* 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(); | |
} | |
} |