Author: rgodfrey
Date: Fri Mar 16 21:17:55 2012
New Revision: 1301771

URL: http://svn.apache.org/viewvc?rev=1301771&view=rev
Log:
NO-JIRA : [Java config] updates to the connection JMX MBean and adapter

Added:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
Modified:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Connection.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java

Added: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java?rev=1301771&view=auto
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
 (added)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
 Fri Mar 16 21:17:55 2012
@@ -0,0 +1,205 @@
+package org.apache.qpid.server.jmx.mbeans;
+
+import javax.management.NotCompliantMBeanException;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.jmx.AMQManagedObject;
+import org.apache.qpid.server.jmx.ManagedObjectRegistry;
+import org.apache.qpid.server.model.VirtualHost;
+
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+abstract class AbstractStatisticsGatheringMBean<T extends ConfiguredObject> 
extends AMQManagedObject
+{
+    private long _lastStatupDateTime;
+    private long _statUpdatePeriod = 5000L;
+    private long _messagesReceived;
+    private long _messagesSent;
+    private long _bytesReceived;
+    private long _bytesSent;
+    private double _messageReceivedRate;
+    private double _messageSentRate;
+    private double _bytesReceivedRate;
+    private double _bytesSentRate;
+    private double _peakMessageReceivedRate;
+    private double _peakMessageSentRate;
+    private double _peakBytesReceivedRate;
+    private double _peakBytesSentRate;
+    private final T _configuredObject;
+
+    protected AbstractStatisticsGatheringMBean(Class<?> managementInterface, 
+                                               String typeName, 
+                                               ManagedObjectRegistry registry,
+                                               T object) throws 
NotCompliantMBeanException
+    {
+        super(managementInterface, typeName, registry);
+        _configuredObject = object;
+        initStats();
+    }
+
+    protected void initStats()
+    {
+        _lastStatupDateTime = System.currentTimeMillis();
+
+        _messagesReceived = getStatistic(VirtualHost.MESSAGES_IN);
+        _messagesSent = getStatistic(VirtualHost.MESSAGES_OUT);
+        _bytesReceived = getStatistic(VirtualHost.BYTES_IN);
+        _bytesSent = getStatistic(VirtualHost.BYTES_OUT);
+    }
+
+    protected synchronized void updateStats()
+    {
+        long time = System.currentTimeMillis();
+        final long period = time - _lastStatupDateTime;
+        if(period > _statUpdatePeriod)
+        {
+            long messagesReceived = getStatistic(VirtualHost.MESSAGES_IN);
+            long messagesSent = getStatistic(VirtualHost.MESSAGES_OUT);
+            long bytesReceived = getStatistic(VirtualHost.BYTES_IN);
+            long bytesSent = getStatistic(VirtualHost.BYTES_OUT);
+
+            double messageReceivedRate = (double)(messagesReceived - 
_messagesReceived) / (double)period;
+            double messageSentRate = (double)(messagesSent - _messagesSent) / 
(double)period;
+            double bytesReceivedRate = (double)(bytesReceived - 
_bytesReceived) / (double)period;
+            double bytesSentRate = (double)(bytesSent - _bytesSent) / 
(double)period;
+
+            _messagesReceived = messagesReceived;
+            _messagesSent = messagesSent;
+            _bytesReceived = bytesReceived;
+            _bytesSent = bytesSent;
+            
+            _messageReceivedRate = messageReceivedRate;
+            _messageSentRate = messageSentRate;
+            _bytesReceivedRate = bytesReceivedRate;
+            _bytesSentRate = bytesSentRate;
+            
+            if(messageReceivedRate > _peakMessageReceivedRate)
+            {
+                _peakMessageReceivedRate = messageReceivedRate;
+            }
+            
+            if(messageSentRate > _peakMessageSentRate)
+            {
+                _peakMessageSentRate = messageSentRate;
+            }
+
+            if(bytesReceivedRate > _peakBytesReceivedRate)
+            {
+                _peakBytesReceivedRate = bytesReceivedRate;
+            }
+            
+            if(bytesSentRate > _peakBytesSentRate)
+            {
+                _peakBytesSentRate = bytesSentRate;
+            }
+            
+        }
+    }
+
+    private long getStatistic(String name)
+    {
+        return (Long) getConfiguredObject().getStatistics().getStatistic(name);
+    }
+
+    public synchronized void resetStatistics() throws Exception
+    {
+        updateStats();
+        //TODO
+    }
+
+    public synchronized double getPeakMessageDeliveryRate()
+    {
+        updateStats();
+        return _peakMessageSentRate;
+    }
+
+    public synchronized double getPeakDataDeliveryRate()
+    {
+        updateStats();
+        return _peakBytesSentRate;
+    }
+
+    public synchronized double getMessageDeliveryRate()
+    {
+        updateStats();
+        return _messageSentRate;
+    }
+
+    public synchronized double getDataDeliveryRate()
+    {
+        updateStats();
+        return _bytesSentRate;
+    }
+
+    public synchronized long getTotalMessagesDelivered()
+    {
+        updateStats();
+        return _messagesSent;
+    }
+
+    public synchronized long getTotalDataDelivered()
+    {
+        updateStats();
+        return _bytesSent;
+    }
+
+    protected final T getConfiguredObject()
+    {
+        return _configuredObject;
+    }
+
+    public synchronized double getPeakMessageReceiptRate()
+    {
+        updateStats();
+        return _peakMessageReceivedRate;
+    }
+
+    public synchronized double getPeakDataReceiptRate()
+    {
+        updateStats();
+        return _peakBytesReceivedRate;
+    }
+
+    public synchronized double getMessageReceiptRate()
+    {
+        updateStats();
+        return _messageReceivedRate;
+    }
+
+    public synchronized double getDataReceiptRate()
+    {
+        updateStats();
+        return _bytesReceivedRate;
+    }
+
+    public synchronized long getTotalMessagesReceived()
+    {
+        updateStats();
+        return _messagesReceived;
+    }
+
+    public synchronized long getTotalDataReceived()
+    {
+        updateStats();
+        return _bytesReceived;
+    }
+
+    public synchronized boolean isStatisticsEnabled()
+    {
+        updateStats();
+        return false;  //TODO
+    }
+}

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
 Fri Mar 16 21:17:55 2012
@@ -21,33 +21,29 @@
 
 package org.apache.qpid.server.jmx.mbeans;
 
+import java.io.IOException;
+import java.util.Date;
+import javax.management.JMException;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
 import org.apache.qpid.management.common.mbeans.ManagedConnection;
-import 
org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParameter;
-import org.apache.qpid.server.jmx.AMQManagedObject;
 import org.apache.qpid.server.jmx.ManagedObject;
 import org.apache.qpid.server.model.Connection;
 
-import javax.management.JMException;
-import javax.management.openmbean.TabularData;
-import java.io.IOException;
-import java.util.Date;
-
-public class ConnectionMBean extends AMQManagedObject implements 
ManagedConnection
+public class ConnectionMBean extends 
AbstractStatisticsGatheringMBean<Connection> implements ManagedConnection
 {
     private final VirtualHostMBean _virtualHostMBean;
-    private final Connection _connection;
 
     public ConnectionMBean(Connection conn, VirtualHostMBean virtualHostMBean) 
throws JMException
     {
-        super(ManagedConnection.class, ManagedConnection.TYPE, 
virtualHostMBean.getRegistry());
+        super(ManagedConnection.class, ManagedConnection.TYPE, 
virtualHostMBean.getRegistry(), conn);
         _virtualHostMBean = virtualHostMBean;
-        _connection = conn;
         register();
     }
 
     public String getObjectInstanceName()
     {
-        return _connection.getName();
+        return ObjectName.quote(getRemoteAddress());
     }
 
     @Override
@@ -58,22 +54,22 @@ public class ConnectionMBean extends AMQ
 
     public String getClientId()
     {
-        return null;  // TODO - Implement
+        return (String) 
getConfiguredObject().getAttribute(Connection.CLIENT_ID);
     }
 
     public String getAuthorizedId()
     {
-        return null;  // TODO - Implement
+        return (String) 
getConfiguredObject().getAttribute(Connection.PRINCIPAL);
     }
 
     public String getVersion()
     {
-        return null;  // TODO - Implement
+        return (String) 
getConfiguredObject().getAttribute(Connection.CLIENT_VERSION);
     }
 
     public String getRemoteAddress()
     {
-        return null;  // TODO - Implement
+        return (String) 
getConfiguredObject().getAttribute(Connection.REMOTE_ADDRESS);
     }
 
     public Date getLastIoTime()
@@ -83,7 +79,7 @@ public class ConnectionMBean extends AMQ
 
     public Long getMaximumNumberOfChannels()
     {
-        return null;  // TODO - Implement
+        return (Long) 
getConfiguredObject().getAttribute(Connection.SESSION_COUNT_LIMIT);
     }
 
     public TabularData channels() throws IOException, JMException
@@ -91,14 +87,12 @@ public class ConnectionMBean extends AMQ
         return null;  // TODO - Implement
     }
 
-    public void commitTransactions(
-            @MBeanOperationParameter(name = "channel Id", description = 
"channel Id") int channelId) throws JMException
+    public void commitTransactions(int channelId) throws JMException
     {
         // TODO - Implement
     }
 
-    public void rollbackTransactions(
-            @MBeanOperationParameter(name = "channel Id", description = 
"channel Id") int channelId) throws JMException
+    public void rollbackTransactions(int channelId) throws JMException
     {
         // TODO - Implement
     }
@@ -108,78 +102,10 @@ public class ConnectionMBean extends AMQ
         // TODO - Implement
     }
 
-    public void resetStatistics() throws Exception
-    {
-        // TODO - Implement
-    }
-
-    public double getPeakMessageDeliveryRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getPeakDataDeliveryRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getMessageDeliveryRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getDataDeliveryRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public long getTotalMessagesDelivered()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public long getTotalDataDelivered()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getPeakMessageReceiptRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getPeakDataReceiptRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getMessageReceiptRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public double getDataReceiptRate()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public long getTotalMessagesReceived()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public long getTotalDataReceived()
-    {
-        return 0;  // TODO - Implement
-    }
-
-    public boolean isStatisticsEnabled()
-    {
-        return false;  // TODO - Implement
-    }
 
     public void setStatisticsEnabled(boolean enabled)
     {
         // TODO - Implement
+        updateStats();
     }
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
 Fri Mar 16 21:17:55 2012
@@ -258,7 +258,7 @@ public class ExchangeMBean extends AMQMa
             @MBeanOperationParameter(name = ManagedQueue.TYPE, description = 
"Queue name") String queueName,
             @MBeanOperationParameter(name = "Binding", description = "New 
binding") String binding) throws JMException
     {
-        //To change body of implemented methods use File | Settings | File 
Templates.
+        // TODO
     }
 
     public void removeBinding(
@@ -266,6 +266,6 @@ public class ExchangeMBean extends AMQMa
             @MBeanOperationParameter(name = "Binding", description = "Binding 
key") String binding)
             throws IOException, JMException
     {
-        //To change body of implemented methods use File | Settings | File 
Templates.
+        // TODO
     }
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
 Fri Mar 16 21:17:55 2012
@@ -21,27 +21,28 @@
 
 package org.apache.qpid.server.jmx.mbeans;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import javax.management.JMException;
+import javax.management.MBeanException;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
 import org.apache.qpid.management.common.mbeans.ManagedBroker;
 import org.apache.qpid.management.common.mbeans.ManagedExchange;
 import org.apache.qpid.management.common.mbeans.ManagedQueue;
 import org.apache.qpid.management.common.mbeans.annotations.MBeanConstructor;
 import org.apache.qpid.management.common.mbeans.annotations.MBeanDescription;
 import 
org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParameter;
-import org.apache.qpid.server.jmx.AMQManagedObject;
 import org.apache.qpid.server.jmx.ManagedObject;
-import org.apache.qpid.server.model.Queue;
-
-import javax.management.JMException;
-import javax.management.MBeanException;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.VirtualHost;
 
 @MBeanDescription("This MBean exposes the broker level management features")
-public class VirtualHostManagerMBean extends AMQManagedObject implements 
ManagedBroker
+public class VirtualHostManagerMBean extends 
AbstractStatisticsGatheringMBean<VirtualHost> implements ManagedBroker
 {
 
     private final VirtualHostMBean _virtualHostMBean;
@@ -49,11 +50,12 @@ public class VirtualHostManagerMBean ext
     @MBeanConstructor("Creates the Broker Manager MBean")
     public VirtualHostManagerMBean(VirtualHostMBean virtualHostMBean) throws 
JMException
     {
-        super(ManagedBroker.class, ManagedBroker.TYPE, 
virtualHostMBean.getRegistry());
+        super(ManagedBroker.class, ManagedBroker.TYPE, 
virtualHostMBean.getRegistry(), virtualHostMBean.getVirtualHost());
         _virtualHostMBean = virtualHostMBean;
         register();
     }
-    
+
+
     public String getObjectInstanceName()
     {
         return _virtualHostMBean.getName();
@@ -112,14 +114,12 @@ public class VirtualHostManagerMBean ext
 
     }
 
-    public void createNewExchange(
-            @MBeanOperationParameter(name = "name", description = "Name of the 
new exchange") String name,
-            @MBeanOperationParameter(name = "ExchangeType", description = 
"Type of the exchange") String type,
-            @MBeanOperationParameter(name = "durable",
-                                     description = "true if the Exchang should 
be durable") boolean durable)
+    public void createNewExchange(String name, String type, boolean durable)
             throws IOException, JMException, MBeanException
     {
-        //TODO
+        getConfiguredObject().createExchange(name, State.ACTIVE, durable,
+                                        LifetimePolicy.PERMANENT, 0l, type, 
Collections.EMPTY_MAP);
+
     }
 
     public void unregisterExchange(
@@ -129,26 +129,17 @@ public class VirtualHostManagerMBean ext
         //TODO
     }
 
-    public void createNewQueue(
-            @MBeanOperationParameter(name = "queue name", description = "Name 
of the new queue") String queueName,
-            @MBeanOperationParameter(name = "owner", description = "Owner 
name") String owner,
-            @MBeanOperationParameter(name = "durable",
-                                     description = "true if the queue should 
be durable") boolean durable)
+    public void createNewQueue(String queueName, String owner, boolean durable)
             throws IOException, JMException, MBeanException
     {
-        //TODO
+        createNewQueue(queueName, owner, durable, Collections.EMPTY_MAP);
     }
 
-    public void createNewQueue(
-            @MBeanOperationParameter(name = "queue name", description = "Name 
of the new queue") String queueName,
-            @MBeanOperationParameter(name = "owner", description = "Owner 
name") String owner,
-            @MBeanOperationParameter(name = "durable",
-                                     description = "true if the queue should 
be durable") boolean durable,
-            @MBeanOperationParameter(name = "arguments",
-                                     description = "Map of arguments") 
Map<String, Object> arguments)
+    public void createNewQueue(String queueName, String owner, boolean 
durable, Map<String, Object> arguments)
             throws IOException, JMException
     {
-        //TODO
+        // TODO - ignores owner (not sure that this isn't actually a good 
thing though)
+        getConfiguredObject().createQueue(queueName, State.ACTIVE,durable, 
LifetimePolicy.PERMANENT,0l, arguments);
     }
 
     public void deleteQueue(
@@ -158,76 +149,6 @@ public class VirtualHostManagerMBean ext
         //TODO
     }
 
-    public void resetStatistics() throws Exception
-    {
-        //TODO
-    }
-
-    public double getPeakMessageDeliveryRate()
-    {
-        return 0;  //TODO
-    }
-
-    public double getPeakDataDeliveryRate()
-    {
-        return 0;  //TODO
-    }
-
-    public double getMessageDeliveryRate()
-    {
-        return 0;  //TODO
-    }
-
-    public double getDataDeliveryRate()
-    {
-        return 0;  //TODO
-    }
-
-    public long getTotalMessagesDelivered()
-    {
-        return 0;  //TODO
-    }
-
-    public long getTotalDataDelivered()
-    {
-        return 0;  //TODO
-    }
-
-    public double getPeakMessageReceiptRate()
-    {
-        return 0;  //TODO
-    }
-
-    public double getPeakDataReceiptRate()
-    {
-        return 0;  //TODO
-    }
-
-    public double getMessageReceiptRate()
-    {
-        return 0;  //TODO
-    }
-
-    public double getDataReceiptRate()
-    {
-        return 0;  //TODO
-    }
-
-    public long getTotalMessagesReceived()
-    {
-        return 0;  //TODO
-    }
-
-    public long getTotalDataReceived()
-    {
-        return 0;  //TODO
-    }
-
-    public boolean isStatisticsEnabled()
-    {
-        return false;  //TODO
-    }
-
 
     @Override
     public ObjectName getObjectName() throws MalformedObjectNameException

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Connection.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Connection.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Connection.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Connection.java
 Fri Mar 16 21:17:55 2012
@@ -20,10 +20,41 @@
  */
 package org.apache.qpid.server.model;
 
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 
 public interface Connection extends ConfiguredObject
 {
+
+    // Statistics
+
+    // Attributes
+
+    public static final String CLIENT_ID = "clientId";
+    public static final String CLIENT_VERSION = "clientVersion";
+    public static final String INCOMING = "incoming";
+    public static final String LOCAL_ADDRESS = "localAddress";
+    public static final String PRINCIPAL = "principal";
+    public static final String PROPERTIES = "properties";
+    public static final String REMOTE_ADDRESS = "remoteAddress";
+    public static final String REMOTE_PROCESS_NAME = "remoteProcessName";
+    public static final String REMOTE_PROCESS_PID = "remoteProcessPid";
+    public static final String SESSION_COUNT_LIMIT = "sessionCountLimit";
+
+    public static final Collection<String> AVAILABLE_ATTRIBUTES =
+            Collections.unmodifiableCollection(
+                    Arrays.asList(  CLIENT_ID,
+                                    CLIENT_VERSION,
+                                    INCOMING,
+                                    LOCAL_ADDRESS,
+                                    PRINCIPAL,
+                                    PROPERTIES,
+                                    REMOTE_ADDRESS,
+                                    REMOTE_PROCESS_NAME,
+                                    REMOTE_PROCESS_PID,
+                                    SESSION_COUNT_LIMIT));
+
     //children
     Collection<Session> getSessions();
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
 Fri Mar 16 21:17:55 2012
@@ -21,11 +21,38 @@
 package org.apache.qpid.server.model;
 
 import java.security.AccessControlException;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Map;
 
 public interface VirtualHost extends ConfiguredObject
 {
+    // Statistics
+
+    public static final String BYTES_IN = "bytesIn";
+    public static final String BYTES_OUT = "bytesOut";
+    public static final String BYTES_RETAINED = "bytesRetained";
+    public static final String LOCAL_TRANSACTION_BEGINS = 
"localTransactionBegins";
+    public static final String LOCAL_TRANSACTION_ROLLBACKS = 
"localTransactionRollbacks";
+    public static final String MESSAGES_IN = "messagesIn";
+    public static final String MESSAGES_OUT = "messagesOut";
+    public static final String MESSAGES_RETAINED = "messagesRetained";
+    public static final String STATE_CHANGED = "stateChanged";
+    public static final String XA_TRANSACTION_BRANCH_ENDS = 
"xaTransactionBranchEnds";
+    public static final String XA_TRANSACTION_BRANCH_STARTS = 
"xaTransactionBranchStarts";
+    public static final String XA_TRANSACTION_BRANCH_SUSPENDS = 
"xaTransactionBranchSuspends";
+
+    public static final Collection<String> AVAILABLE_STATISTICS =
+            Collections.unmodifiableList(
+                    Arrays.asList(BYTES_IN, BYTES_OUT, BYTES_RETAINED, 
LOCAL_TRANSACTION_BEGINS,
+                            LOCAL_TRANSACTION_ROLLBACKS, MESSAGES_IN, 
MESSAGES_OUT, MESSAGES_RETAINED, STATE_CHANGED,
+                            XA_TRANSACTION_BRANCH_ENDS, 
XA_TRANSACTION_BRANCH_STARTS, XA_TRANSACTION_BRANCH_SUSPENDS));
+
+    // Attributes
+
+
+
     String getReplicationGroupName();
 
     //children

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
 Fri Mar 16 21:17:55 2012
@@ -23,7 +23,9 @@ package org.apache.qpid.server.model.ada
 import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import org.apache.qpid.server.model.Connection;
@@ -37,6 +39,9 @@ import org.apache.qpid.server.protocol.A
 final class ConnectionAdapter extends AbstractAdapter implements Connection
 {
 
+
+
+    
     private AMQConnectionModel _connection;
 
     private final Map<AMQSessionModel, SessionAdapter> _sessionAdapters =
@@ -75,7 +80,7 @@ final class ConnectionAdapter extends Ab
 
     public String getName()
     {
-        return _connection.getLogSubject().toLogString();
+        return _connection.getRemoteAddressString();
     }
 
     public String setName(final String currentName, final String desiredName)
@@ -122,6 +127,106 @@ final class ConnectionAdapter extends Ab
         return 0;  //TODO
     }
 
+    @Override
+    public Object getAttribute(String name)
+    {
+        if(name.equals(CLIENT_ID))
+        {
+            return _connection.getClientId();
+        }
+        else if(name.equals(CLIENT_VERSION))
+        {
+            return _connection.getClientVersion();
+        }
+        else if(name.equals(INCOMING))
+        {
+
+        }
+        else if(name.equals(LOCAL_ADDRESS))
+        {
+
+        }
+        else if(name.equals(PRINCIPAL))
+        {
+            return _connection.getPrincipalAsString();
+        }
+        else if(name.equals(PROPERTIES))
+        {
+
+        }
+        else if(name.equals(REMOTE_ADDRESS))
+        {
+            return _connection.getRemoteAddressString();
+        }
+        else if(name.equals(REMOTE_PROCESS_NAME))
+        {
+
+        }
+        else if(name.equals(REMOTE_PROCESS_PID))
+        {
+
+        }
+        else if(name.equals(SESSION_COUNT_LIMIT))
+        {
+            return _connection.getSessionCountLimit();
+        }
+        return super.getAttribute(name);
+    }
+
+    @Override
+    public Object setAttribute(String name, Object expected, Object desired) 
throws IllegalStateException, AccessControlException, IllegalArgumentException
+    {
+        if(name.equals(CLIENT_ID))
+        {
+
+        }
+        else if(name.equals(CLIENT_VERSION))
+        {
+
+        }
+        else if(name.equals(INCOMING))
+        {
+
+        }
+        else if(name.equals(LOCAL_ADDRESS))
+        {
+
+        }
+        else if(name.equals(PRINCIPAL))
+        {
+
+        }
+        else if(name.equals(PROPERTIES))
+        {
+
+        }
+        else if(name.equals(REMOTE_ADDRESS))
+        {
+
+        }
+        else if(name.equals(REMOTE_PROCESS_NAME))
+        {
+
+        }
+        else if(name.equals(REMOTE_PROCESS_PID))
+        {
+
+        }
+        else if(name.equals(SESSION_COUNT_LIMIT))
+        {
+
+        }
+        return super.setAttribute(name, expected, desired);
+    }
+
+    @Override
+    public Collection<String> getAttributeNames()
+    {
+        final HashSet<String> attrNames = new 
HashSet<String>(super.getAttributeNames());
+        attrNames.addAll(Connection.AVAILABLE_ATTRIBUTES);
+        return Collections.unmodifiableCollection(attrNames);
+    }
+
     public Statistics getStatistics()
     {
         return _statistics;

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java
 Fri Mar 16 21:17:55 2012
@@ -1,10 +1,9 @@
 package org.apache.qpid.server.model.adapter;
 
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import org.apache.qpid.server.model.Statistics;
 import org.apache.qpid.server.stats.StatisticsCounter;
@@ -31,29 +30,24 @@ class StatisticsAdapter implements Stati
 
     private final Map<String, StatisticsCounter> _statistics =
             new HashMap<String, StatisticsCounter>();
-                  
 
-    private static final Collection<String> STATISTIC_NAMES;
-    
-    static 
-    {
-        List<String> names = new ArrayList<String>(16);
-        for(String stat : new String[] {"bytes-in", "bytes-out", "msgs-in", 
"msgs-out"})
-        {
-            for(String type : new String[] {"total","rate","peak"})
-            {
-                names.add(stat + "-" + type);
-            }
-        }
-        STATISTIC_NAMES = Collections.unmodifiableCollection(names);
-    }
+
+    private static final String BYTES_IN = "bytesIn";
+    private static final String BYTES_OUT = "bytesOut";
+    private static final String MESSAGES_IN = "messagesIn";
+    private static final String MESSAGES_OUT = "messagesOut";
+
+    private static final Collection<String> STATISTIC_NAMES =
+            Collections.unmodifiableCollection(Arrays.asList(BYTES_IN, 
BYTES_OUT, MESSAGES_IN, MESSAGES_OUT));
+
     
+
     public StatisticsAdapter(StatisticsGatherer applicationRegistry)
     {
-        _statistics.put("bytes-out", 
applicationRegistry.getDataDeliveryStatistics());
-        _statistics.put("bytes-in", 
applicationRegistry.getDataReceiptStatistics());
-        _statistics.put("msgs-out", 
applicationRegistry.getMessageDeliveryStatistics());
-        _statistics.put("msgs-in", 
applicationRegistry.getMessageReceiptStatistics());
+        _statistics.put(BYTES_OUT, 
applicationRegistry.getDataDeliveryStatistics());
+        _statistics.put(BYTES_IN, 
applicationRegistry.getDataReceiptStatistics());
+        _statistics.put(MESSAGES_OUT, 
applicationRegistry.getMessageDeliveryStatistics());
+        _statistics.put(MESSAGES_IN, 
applicationRegistry.getMessageReceiptStatistics());
     }
 
     
@@ -64,23 +58,9 @@ class StatisticsAdapter implements Stati
 
     public Number getStatistic(String name)
     {
-        if(name.endsWith("-total"))
-        {
-            StatisticsCounter counter = 
_statistics.get(name.substring(0,name.length()-6));
-            return counter == null ? null : counter.getTotal();
-        }
-        else if(name.endsWith("-rate"))
-        {
-            StatisticsCounter counter = 
_statistics.get(name.substring(0,name.length()-5));
-            return counter == null ? null : counter.getRate();
-        }
-        else if(name.endsWith("-peak"))
-        {
-            StatisticsCounter counter = 
_statistics.get(name.substring(0,name.length()-5));
-            return counter == null ? null : counter.getPeak();
-        }
+        StatisticsCounter counter = _statistics.get(name);
+        return counter == null ? null : counter.getTotal();
 
-        return null;
     }
     
     

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
 Fri Mar 16 21:17:55 2012
@@ -73,4 +73,14 @@ public interface AMQConnectionModel exte
     public String getUserName();
 
     public boolean isSessionNameUnique(byte[] name);
+
+    String getRemoteAddressString();
+
+    String getClientId();
+
+    String getClientVersion();
+
+    String getPrincipalAsString();
+
+    long getSessionCountLimit();
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
 Fri Mar 16 21:17:55 2012
@@ -1145,6 +1145,16 @@ public class AMQProtocolEngine implement
         return _clientVersion;
     }
 
+    public String getPrincipalAsString()
+    {
+        return getAuthId();
+    }
+
+    public long getSessionCountLimit()
+    {
+        return getMaximumNumberOfChannels();
+    }
+
     public Boolean isIncoming()
     {
         return true;
@@ -1427,6 +1437,16 @@ public class AMQProtocolEngine implement
         return true;
     }
 
+    public String getRemoteAddressString()
+    {
+        return String.valueOf(getRemoteAddress());
+    }
+
+    public String getClientId()
+    {
+        return String.valueOf(getContextKey());
+    }
+
     public void setDeferFlush(boolean deferFlush)
     {
         _deferFlush = deferFlush;

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java?rev=1301771&r1=1301770&r2=1301771&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
 Fri Mar 16 21:17:55 2012
@@ -409,6 +409,11 @@ public class ServerConnection extends Co
         return !super.hasSessionWithName(name);
     }
 
+    public String getRemoteAddressString()
+    {
+        return getConfig().getAddress();
+    }
+
     public String getUserName()
     {
         return _authorizedPrincipal.getName();
@@ -499,4 +504,14 @@ public class ServerConnection extends Co
     {
         return getConnectionDelegate().getClientVersion();
     }
+
+    public String getPrincipalAsString()
+    {
+        return getAuthorizedPrincipal().getName();
+    }
+
+    public long getSessionCountLimit()
+    {
+        return getChannelMax();
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to