package org.mobicents.slee.runtime.facilities; import java.io.Serializable; import javax.slee.SLEEException; import javax.slee.SbbID; import org.mobicents.slee.container.SleeContainer; import org.mobicents.slee.container.component.ServiceComponent; import org.mobicents.slee.container.management.jmx.AlarmMBeanImpl; import org.mobicents.slee.runtime.eventrouter.EventRouterThreadLocals; /** * Tricky extension of the alarm facility, needs to get the service id from the * thread * * @author martins * */ public class SbbAlarmFacilityImpl extends AbstractAlarmFacilityImpl implements Serializable { /** * */ private static final long serialVersionUID = 1L; private final SbbID sbbID; public SbbAlarmFacilityImpl(SbbID sbbID, AlarmMBeanImpl alarmMBeanImpl) { super(alarmMBeanImpl); this.sbbID = sbbID; } @Override public MNotificationSource getNotificationSource() { final ServiceComponent serviceComponent = SleeContainer.lookupFromJndi().getComponentRepositoryImpl().getComponentByID(EventRouterThreadLocals.getInvokingService()); if (serviceComponent != null) { return (MNotificationSource) serviceComponent.getAlarmNotificationSources().get(sbbID); } else { throw new SLEEException("unable to retrieve notification source for sbb, the service was not found"); } } }