blob: 58f587c6f4d5ddbc90603492d1365c4beaea85e1 [file] [log] [blame]
/*
* Licensed 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.karaf.features.management.internal;
import javax.management.*;
public class StandardEmitterMBean extends StandardMBean implements NotificationEmitter {
private final NotificationBroadcasterSupport emitter;
public StandardEmitterMBean(Class mbeanInterface) throws NotCompliantMBeanException {
super(mbeanInterface);
this.emitter = new NotificationBroadcasterSupport() {
@Override
public MBeanNotificationInfo[] getNotificationInfo() {
return StandardEmitterMBean.this.getNotificationInfo();
}
};
}
public void sendNotification(Notification notification) {
emitter.sendNotification(notification);
}
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException {
emitter.removeNotificationListener(listener, filter, handback);
}
public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException {
emitter.addNotificationListener(listener, filter, handback);
}
public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException {
emitter.removeNotificationListener(listener);
}
public MBeanNotificationInfo[] getNotificationInfo() {
return new MBeanNotificationInfo[0];
}
@Override
public MBeanInfo getMBeanInfo() {
MBeanInfo mbeanInfo = super.getMBeanInfo();
if (mbeanInfo != null) {
MBeanNotificationInfo[] notificationInfo = getNotificationInfo();
mbeanInfo = new MBeanInfo(mbeanInfo.getClassName(), mbeanInfo.getDescription(), mbeanInfo.getAttributes(),
mbeanInfo.getConstructors(), mbeanInfo.getOperations(), notificationInfo);
}
return mbeanInfo;
}
}