| package org.apache.qpid.server.management; |
| |
| import org.apache.qpid.management.common.mbeans.ManagedConnection; |
| |
| import javax.management.JMException; |
| import javax.management.MBeanNotificationInfo; |
| import javax.management.NotCompliantMBeanException; |
| import javax.management.Notification; |
| import javax.management.ObjectName; |
| import javax.management.monitor.MonitorNotification; |
| import javax.management.openmbean.CompositeType; |
| import javax.management.openmbean.OpenType; |
| import javax.management.openmbean.SimpleType; |
| import javax.management.openmbean.TabularType; |
| |
| public abstract class AbstractAMQManagedConnectionObject extends AMQManagedObject implements ManagedConnection |
| { |
| private final String _name; |
| |
| protected static final OpenType[] _channelAttributeTypes = { SimpleType.INTEGER, SimpleType.BOOLEAN, SimpleType.STRING, SimpleType.INTEGER, SimpleType.BOOLEAN }; |
| protected static final CompositeType _channelType; |
| protected static final TabularType _channelsType; |
| |
| protected static final String BROKER_MANAGEMENT_CONSOLE_HAS_CLOSED_THE_CONNECTION_STR = |
| "Broker Management Console has closed the connection."; |
| |
| static |
| { |
| try |
| { |
| _channelType = new CompositeType("Channel", "Channel Details", COMPOSITE_ITEM_NAMES_DESC.toArray(new String[COMPOSITE_ITEM_NAMES_DESC.size()]), |
| COMPOSITE_ITEM_NAMES_DESC.toArray(new String[COMPOSITE_ITEM_NAMES_DESC.size()]), _channelAttributeTypes); |
| _channelsType = new TabularType("Channels", "Channels", _channelType, (String[]) TABULAR_UNIQUE_INDEX.toArray(new String[TABULAR_UNIQUE_INDEX.size()])); |
| } |
| catch (JMException ex) |
| { |
| // This is not expected to ever occur. |
| throw new RuntimeException("Got JMException in static initializer.", ex); |
| } |
| } |
| |
| protected AbstractAMQManagedConnectionObject(final String remoteAddress) throws NotCompliantMBeanException |
| { |
| super(ManagedConnection.class, ManagedConnection.TYPE); |
| _name = "anonymous".equals(remoteAddress) ? (remoteAddress + hashCode()) : remoteAddress; |
| } |
| |
| public String getObjectInstanceName() |
| { |
| return ObjectName.quote(_name); |
| } |
| |
| public void notifyClients(String notificationMsg) |
| { |
| final Notification n = new Notification(MonitorNotification.THRESHOLD_VALUE_EXCEEDED, this, incrementAndGetSequenceNumber(), |
| System.currentTimeMillis(), notificationMsg); |
| getBroadcaster().sendNotification(n); |
| } |
| |
| @Override |
| public MBeanNotificationInfo[] getNotificationInfo() |
| { |
| String[] notificationTypes = new String[] { MonitorNotification.THRESHOLD_VALUE_EXCEEDED }; |
| String name = MonitorNotification.class.getName(); |
| String description = "Channel count has reached threshold value"; |
| MBeanNotificationInfo info1 = new MBeanNotificationInfo(notificationTypes, name, description); |
| |
| return new MBeanNotificationInfo[] { info1 }; |
| } |
| } |