summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-02-25 01:19:43 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-02-25 01:19:43 +0000
commitddba94d2538db03bdca182ab29309ebf83cd81c9 (patch)
tree4b0ef0435ddd2c4106af2b35982967b300082802 /qpid/java
parent2c02e80ee4907c42764d76018e8bfa9a71641822 (diff)
downloadqpid-python-ddba94d2538db03bdca182ab29309ebf83cd81c9.tar.gz
QPID-5579 : Use annotations to generate statistics values
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1571510 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java63
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java15
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java587
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java10
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java54
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java22
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java36
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedStatistic.java30
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java101
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java40
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java47
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java778
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java9
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java10
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java18
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java27
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java72
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java59
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java73
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java9
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java26
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NoStatistics.java46
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java200
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java92
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java67
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java82
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java7
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java1
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java2
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java4
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java5
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java23
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java2
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java13
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java4
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java27
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java34
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java16
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBean.java24
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java23
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBeanTest.java13
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java22
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBeanTest.java11
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java73
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java45
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java52
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java13
70 files changed, 1572 insertions, 1558 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java
index bde4cbac2b..13cbd0d544 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java
@@ -24,11 +24,18 @@ import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.messages.BindingMessages;
import org.apache.qpid.server.logging.subjects.BindingLogSubject;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.util.StateChangeListener;
+import java.security.AccessControlException;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -44,8 +51,7 @@ public class Binding
private final UUID _id;
private final AtomicLong _matches = new AtomicLong();
private final BindingLogSubject _logSubject;
- //TODO : persist creation time
- private long _createTime = System.currentTimeMillis();
+
final AtomicBoolean _deleted = new AtomicBoolean();
final CopyOnWriteArrayList<StateChangeListener<Binding,State>> _stateChangeListeners =
new CopyOnWriteArrayList<StateChangeListener<Binding, State>>();
@@ -57,15 +63,32 @@ public class Binding
final Exchange exchange,
final Map<String, Object> arguments)
{
+ this(id, convertToAttributes(bindingKey, arguments), queue, exchange);
+ }
+
+ private static Map<String, Object> convertToAttributes(final String bindingKey, final Map<String, Object> arguments)
+ {
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(org.apache.qpid.server.model.Binding.NAME,bindingKey);
+ if(arguments != null)
+ {
+ attributes.put(org.apache.qpid.server.model.Binding.ARGUMENTS, arguments);
+ }
+ return attributes;
+ }
+
+ public Binding(UUID id, Map<String,Object> attributes, AMQQueue queue, Exchange exchange)
+ {
_id = id;
- _bindingKey = bindingKey;
+ _bindingKey = (String)attributes.get(org.apache.qpid.server.model.Binding.NAME);
_queue = queue;
_exchange = exchange;
+ Map<String,Object> arguments = (Map<String, Object>) attributes.get(org.apache.qpid.server.model.Binding.ARGUMENTS);
_arguments = arguments == null ? Collections.EMPTY_MAP : Collections.unmodifiableMap(arguments);
//Perform ACLs
queue.getVirtualHost().getSecurityManager().authoriseCreateBinding(this);
- _logSubject = new BindingLogSubject(bindingKey,exchange,queue);
+ _logSubject = new BindingLogSubject(_bindingKey,exchange,queue);
CurrentActor.get().message(_logSubject, BindingMessages.CREATED(String.valueOf(getArguments()),
getArguments() != null
&& !getArguments().isEmpty()));
@@ -83,16 +106,17 @@ public class Binding
return _bindingKey;
}
- public AMQQueue getQueue()
+ public AMQQueue getAMQQueue()
{
return _queue;
}
- public Exchange getExchange()
+ public Exchange getExchangeImpl()
{
return _exchange;
}
+
public Map<String, Object> getArguments()
{
return _arguments;
@@ -113,9 +137,10 @@ public class Binding
return _queue.isDurable() && _exchange.isDurable();
}
- public long getCreateTime()
+
+ public LifetimePolicy getLifetimePolicy()
{
- return _createTime;
+ return LifetimePolicy.IN_USE;
}
@Override
@@ -134,8 +159,8 @@ public class Binding
final Binding binding = (Binding) o;
return (_bindingKey == null ? binding.getBindingKey() == null : _bindingKey.equals(binding.getBindingKey()))
- && (_exchange == null ? binding.getExchange() == null : _exchange.equals(binding.getExchange()))
- && (_queue == null ? binding.getQueue() == null : _queue.equals(binding.getQueue()));
+ && (_exchange == null ? binding.getExchangeImpl() == null : _exchange.equals(binding.getExchangeImpl()))
+ && (_queue == null ? binding.getAMQQueue() == null : _queue.equals(binding.getAMQQueue()));
}
@Override
@@ -147,6 +172,19 @@ public class Binding
return result;
}
+ protected boolean setState(final State currentState, final State desiredState)
+ {
+ if(desiredState == State.DELETED)
+ {
+ delete();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
public String toString()
{
return "Binding{bindingKey="+_bindingKey+", exchange="+_exchange+", queue="+_queue+", id= " + _id + " }";
@@ -164,6 +202,11 @@ public class Binding
}
}
+ public String getName()
+ {
+ return _bindingKey;
+ }
+
public State getState()
{
return _deleted.get() ? State.DELETED : State.ACTIVE;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
index 303818d7cb..91bbdb1649 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
@@ -29,7 +29,6 @@ import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.messages.ExchangeMessages;
import org.apache.qpid.server.logging.subjects.ExchangeLogSubject;
import org.apache.qpid.server.message.InstanceProperties;
-import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
@@ -123,11 +122,11 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
}
else if(alternateExchangeAttr instanceof UUID)
{
- setAlternateExchange(vhost.getExchange((UUID)alternateExchangeAttr));
+ setAlternateExchange(vhost.getExchange((UUID) alternateExchangeAttr));
}
else if(alternateExchangeAttr instanceof String)
{
- setAlternateExchange(vhost.getExchange((String)alternateExchangeAttr));
+ setAlternateExchange(vhost.getExchange((String) alternateExchangeAttr));
if(_alternateExchange == null)
{
try
@@ -221,7 +220,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
{
for(Binding b : _bindings)
{
- if(bindingKey.equals(b.getBindingKey()) && queue == b.getQueue())
+ if(bindingKey.equals(b.getBindingKey()) && queue == b.getAMQQueue())
{
return (b.getArguments() == null || b.getArguments().isEmpty())
? (arguments == null || arguments.isEmpty())
@@ -235,7 +234,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
{
for(Binding b : _bindings)
{
- if(bindingKey.equals(b.getBindingKey()) && queue == b.getQueue())
+ if(bindingKey.equals(b.getBindingKey()) && queue == b.getAMQQueue())
{
return true;
}
@@ -259,7 +258,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
{
for(Binding b : _bindings)
{
- if(queue == b.getQueue())
+ if(queue == b.getAMQQueue())
{
return true;
}
@@ -272,7 +271,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
{
for(Binding b : _bindings)
{
- if(queue == b.getQueue() &&
+ if(queue == b.getAMQQueue() &&
((b.getArguments() == null || b.getArguments().isEmpty())
? (arguments == null || arguments.isEmpty())
: b.getArguments().equals(arguments)))
@@ -590,7 +589,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
private void removeBinding(final Binding binding)
{
String bindingKey = binding.getBindingKey();
- AMQQueue queue = binding.getQueue();
+ AMQQueue queue = binding.getAMQQueue();
assert queue != null;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
index 74eb063455..222f838df5 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
@@ -79,13 +79,13 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
{
try
{
- MessageFilter filter = FilterSupport.createMessageFilter(b.getArguments(), b.getQueue());
- filteredQueues.put(b.getQueue(),filter);
+ MessageFilter filter = FilterSupport.createMessageFilter(b.getArguments(), b.getAMQQueue());
+ filteredQueues.put(b.getAMQQueue(),filter);
}
catch (AMQInvalidArgumentException e)
{
- _logger.warn("Binding ignored: cannot parse filter on binding of queue '"+b.getQueue().getName()
- + "' to exchange '" + b.getExchange().getName()
+ _logger.warn("Binding ignored: cannot parse filter on binding of queue '"+b.getAMQQueue().getName()
+ + "' to exchange '" + b.getExchangeImpl().getName()
+ "' with arguments: " + b.getArguments(), e);
}
@@ -93,9 +93,9 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
else
{
- if(!queues.contains(b.getQueue()))
+ if(!queues.contains(b.getAMQQueue()))
{
- queues.add(b.getQueue());
+ queues.add(b.getAMQQueue());
}
}
}
@@ -188,7 +188,7 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
protected void onBind(final Binding binding)
{
String bindingKey = binding.getBindingKey();
- AMQQueue queue = binding.getQueue();
+ AMQQueue queue = binding.getAMQQueue();
assert queue != null;
assert bindingKey != null;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
index d302ed6041..46f4e3256b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
@@ -124,7 +124,7 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
protected synchronized void onBind(final Binding binding)
{
- AMQQueue queue = binding.getQueue();
+ AMQQueue queue = binding.getAMQQueue();
assert queue != null;
if(binding.getArguments() == null || binding.getArguments().isEmpty() || !FilterSupport.argumentsContainFilter(binding.getArguments()))
{
@@ -151,10 +151,10 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
HashMap<AMQQueue,Map<Binding, MessageFilter>> filteredBindings =
new HashMap<AMQQueue,Map<Binding, MessageFilter>>(_filteredBindings.get());
- Map<Binding, MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getQueue());
+ Map<Binding, MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getAMQQueue());
final
MessageFilter messageFilter =
- FilterSupport.createMessageFilter(binding.getArguments(), binding.getQueue());
+ FilterSupport.createMessageFilter(binding.getArguments(), binding.getAMQQueue());
if(bindingsForQueue != null)
{
@@ -170,7 +170,7 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
}
}
- filteredBindings.put(binding.getQueue(), bindingsForQueue);
+ filteredBindings.put(binding.getAMQQueue(), bindingsForQueue);
_filteredBindings.set(filteredBindings);
@@ -190,7 +190,7 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
protected synchronized void onUnbind(final Binding binding)
{
- AMQQueue queue = binding.getQueue();
+ AMQQueue queue = binding.getAMQQueue();
if(binding.getArguments() == null || binding.getArguments().isEmpty() || !FilterSupport.argumentsContainFilter(binding.getArguments()))
{
Integer oldValue = _queues.remove(queue);
@@ -213,12 +213,12 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
HashMap<AMQQueue,Map<Binding, MessageFilter>> filteredBindings =
new HashMap<AMQQueue,Map<Binding, MessageFilter>>(_filteredBindings.get());
- Map<Binding,MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getQueue());
+ Map<Binding,MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getAMQQueue());
if(bindingsForQueue.size()>1)
{
bindingsForQueue = new HashMap<Binding,MessageFilter>(bindingsForQueue);
bindingsForQueue.remove(binding);
- filteredBindings.put(binding.getQueue(),bindingsForQueue);
+ filteredBindings.put(binding.getAMQQueue(),bindingsForQueue);
}
else
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
index 4780fae84e..23bd311d04 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
@@ -76,12 +76,12 @@ class HeadersBinding
{
try
{
- _filter = FilterSupport.createMessageFilter(_mappings,_binding.getQueue());
+ _filter = FilterSupport.createMessageFilter(_mappings,_binding.getAMQQueue());
}
catch (AMQInvalidArgumentException e)
{
- _logger.warn("Invalid filter in binding queue '"+_binding.getQueue().getName()
- +"' to exchange '"+_binding.getExchange().getName()
+ _logger.warn("Invalid filter in binding queue '"+_binding.getAMQQueue().getName()
+ +"' to exchange '"+_binding.getExchangeImpl().getName()
+"' with arguments: " + _binding.getArguments());
_filter = new MessageFilter()
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
index 8c1ea48031..e1a314b394 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
@@ -113,9 +113,9 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
if (_logger.isDebugEnabled())
{
_logger.debug("Exchange " + getName() + ": delivering message with headers " +
- payload.getMessageHeader() + " to " + b.getQueue().getName());
+ payload.getMessageHeader() + " to " + b.getAMQQueue().getName());
}
- queues.add(b.getQueue());
+ queues.add(b.getAMQQueue());
}
}
@@ -125,7 +125,7 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
protected void onBind(final Binding binding)
{
String bindingKey = binding.getBindingKey();
- AMQQueue queue = binding.getQueue();
+ AMQQueue queue = binding.getAMQQueue();
Map<String,Object> args = binding.getArguments();
assert queue != null;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
index 7c8c7ccb88..e9bcfe91cc 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
@@ -73,7 +73,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
protected synchronized void registerQueue(final Binding binding) throws AMQInvalidArgumentException
{
final String bindingKey = binding.getBindingKey();
- AMQQueue queue = binding.getQueue();
+ AMQQueue queue = binding.getAMQQueue();
Map<String,Object> args = binding.getArguments();
assert queue != null;
@@ -202,8 +202,8 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
{
try
{
- result.removeFilteredQueue(binding.getQueue(), FilterSupport.createMessageFilter(bindingArgs,
- binding.getQueue()));
+ result.removeFilteredQueue(binding.getAMQQueue(), FilterSupport.createMessageFilter(bindingArgs,
+ binding.getAMQQueue()));
}
catch (AMQInvalidArgumentException e)
{
@@ -212,7 +212,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
}
else
{
- result.removeUnfilteredQueue(binding.getQueue());
+ result.removeUnfilteredQueue(binding.getAMQQueue());
}
return true;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java
deleted file mode 100644
index 2a419585bd..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- *
- * 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.server.model;
-
-import java.lang.reflect.Method;
-import java.util.*;
-
-public final class Attribute<C extends ConfiguredObject, T>
-{
- private static Map<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> _allAttributes =
- Collections.synchronizedMap(new HashMap<Class<? extends ConfiguredObject>, Collection<Attribute<?, ?>>>());
-
- private final String _name;
- private final Class<T> _type;
- private final Converter<T> _converter;
- private final Method _getter;
-
- private Attribute(Class<C> clazz, String name, Class<T> type, final Method getter)
- {
- _name = name;
- _type = type;
- _converter = getConverter(type);
- _getter = getter;
- addToAttributesSet(clazz, this);
- }
-
- private static <X> Converter<X> getConverter(final Class<X> type)
- {
- if(type == String.class)
- {
- return (Converter<X>) STRING_CONVERTER;
- }
- else if(type == Integer.class)
- {
- return (Converter<X>) INT_CONVERTER;
- }
- else if(type == Long.class)
- {
- return (Converter<X>) LONG_CONVERTER;
- }
- else if(type == Boolean.class)
- {
- return (Converter<X>) BOOLEAN_CONVERTER;
- }
- else if(type == UUID.class)
- {
- return (Converter<X>) UUID_CONVERTER;
- }
- else if(Enum.class.isAssignableFrom(type))
- {
- return (Converter<X>) new EnumConverter((Class<? extends Enum>)type);
- }
- else if(List.class.isAssignableFrom(type))
- {
- return (Converter<X>) LIST_CONVERTER;
- }
- else if(Map.class.isAssignableFrom(type))
- {
- return (Converter<X>) MAP_CONVERTER;
- }
- else if(Collection.class.isAssignableFrom(type))
- {
- return (Converter<X>) COLLECTION_CONVERTER;
- }
- else if(ConfiguredObject.class.isAssignableFrom(type))
- {
- return (Converter<X>) new ConfiguredObjectConverter(type);
- }
- throw new IllegalArgumentException("Cannot create attributes of type " + type.getName());
- }
-
- private static void addToAttributesSet(final Class<? extends ConfiguredObject> clazz, final Attribute<?, ?> attribute)
- {
- synchronized (_allAttributes)
- {
- Collection<Attribute<?,?>> classAttributes = _allAttributes.get(clazz);
- if(classAttributes == null)
- {
- classAttributes = new ArrayList<Attribute<?, ?>>();
- for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> entry : _allAttributes.entrySet())
- {
- if(entry.getKey().isAssignableFrom(clazz))
- {
- classAttributes.addAll(entry.getValue());
- }
- }
- _allAttributes.put(clazz, classAttributes);
-
- }
- for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> entry : _allAttributes.entrySet())
- {
- if(clazz.isAssignableFrom(entry.getKey()))
- {
- entry.getValue().add(attribute);
- }
- }
-
- }
- }
-
- public String getName()
- {
- return _name;
- }
-
- public Class<T> getType()
- {
- return _type;
- }
-
- public T getValue(C configuredObject)
- {
- Object o = configuredObject.getAttribute(_name);
- return _converter.convert(o);
- }
-
-
- public T getValue(Map<String, Object> attributeMap)
- {
- Object o = attributeMap.get(_name);
- return _converter.convert(o);
- }
-
-
- @Override
- public String toString()
- {
- return _name;
- }
-
- private static interface Converter<T>
- {
- T convert(Object o);
- }
-
- private static final Converter<String> STRING_CONVERTER = new Converter<String>()
- {
- @Override
- public String convert(final Object o)
- {
- return o == null ? null : o.toString();
- }
- };
-
- private static final Converter<UUID> UUID_CONVERTER = new Converter<UUID>()
- {
- @Override
- public UUID convert(final Object o)
- {
- if(o instanceof UUID)
- {
- return (UUID)o;
- }
- else if(o instanceof String)
- {
- return UUID.fromString((String)o);
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a UUID");
- }
- }
- };
-
- private static final Converter<Long> LONG_CONVERTER = new Converter<Long>()
- {
-
- @Override
- public Long convert(final Object o)
- {
- if(o instanceof Long)
- {
- return (Long)o;
- }
- else if(o instanceof Number)
- {
- return ((Number)o).longValue();
- }
- else if(o instanceof String)
- {
- return Long.valueOf((String)o);
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Long");
- }
- }
- };
-
- private static final Converter<Integer> INT_CONVERTER = new Converter<Integer>()
- {
-
- @Override
- public Integer convert(final Object o)
- {
- if(o instanceof Integer)
- {
- return (Integer)o;
- }
- else if(o instanceof Number)
- {
- return ((Number)o).intValue();
- }
- else if(o instanceof String)
- {
- return Integer.valueOf((String)o);
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to an Integer");
- }
- }
- };
-
- private static final Converter<Boolean> BOOLEAN_CONVERTER = new Converter<Boolean>()
- {
-
- @Override
- public Boolean convert(final Object o)
- {
- if(o instanceof Boolean)
- {
- return (Boolean)o;
- }
- else if(o instanceof String)
- {
- return Boolean.valueOf((String)o);
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Boolean");
- }
- }
- };
-
- private static final Converter<List> LIST_CONVERTER = new Converter<List>()
- {
- @Override
- public List convert(final Object o)
- {
- if(o instanceof List)
- {
- return (List)o;
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a List");
- }
- }
- };
-
- private static final Converter<Collection> COLLECTION_CONVERTER = new Converter<Collection>()
- {
- @Override
- public Collection convert(final Object o)
- {
- if(o instanceof Collection)
- {
- return (Collection)o;
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a List");
- }
- }
- };
-
- private static final Converter<Map> MAP_CONVERTER = new Converter<Map>()
- {
- @Override
- public Map convert(final Object o)
- {
- if(o instanceof Map)
- {
- return (Map)o;
- }
- else if(o == null)
- {
- return null;
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Map");
- }
- }
- };
-
- private static final class EnumConverter<X extends Enum<X>> implements Converter<X>
- {
- private final Class<X> _klazz;
-
- private EnumConverter(final Class<X> klazz)
- {
- _klazz = klazz;
- }
-
- @Override
- public X convert(final Object o)
- {
- if(o == null)
- {
- return null;
- }
- else if(_klazz.isInstance(o))
- {
- return (X) o;
- }
- else if(o instanceof String)
- {
- return Enum.valueOf(_klazz,(String)o);
- }
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a " + _klazz.getName());
- }
- }
- }
-
- private static final class ConfiguredObjectConverter<X extends ConfiguredObject<X>> implements Converter<X>
- {
- private final Class<X> _klazz;
-
- private ConfiguredObjectConverter(final Class<X> klazz)
- {
- _klazz = klazz;
- }
-
- @Override
- public X convert(final Object o)
- {
- if(o == null)
- {
- return null;
- }
- else if(_klazz.isInstance(o))
- {
- return (X) o;
- }
- // TODO - traverse tree based on UUID
- else
- {
- throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a " + _klazz.getName());
- }
- }
- }
-
-
- public static <X extends ConfiguredObject> Collection<String> getAttributeNames(Class<X> clazz)
- {
- final Collection<Attribute<? super X, ?>> attrs = getAttributes(clazz);
-
- return new AbstractCollection<String>()
- {
- @Override
- public Iterator<String> iterator()
- {
- final Iterator<Attribute<? super X, ?>> underlyingIterator = attrs.iterator();
- return new Iterator<String>()
- {
- @Override
- public boolean hasNext()
- {
- return underlyingIterator.hasNext();
- }
-
- @Override
- public String next()
- {
- return underlyingIterator.next().getName();
- }
-
- @Override
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
- };
- }
-
- @Override
- public int size()
- {
- return attrs.size();
- }
- };
-
- }
-
- protected static <X extends ConfiguredObject> Collection<Attribute<? super X, ?>> getAttributes(final Class<X> clazz)
- {
- if(!_allAttributes.containsKey(clazz))
- {
- processAttributes(clazz);
- }
- final Collection<Attribute<? super X, ?>> attributes = (Collection) _allAttributes.get(clazz);
- return attributes;
- }
-
- private static <X extends ConfiguredObject> void processAttributes(final Class<X> clazz)
- {
- if(_allAttributes.containsKey(clazz))
- {
- return;
- }
-
-
- for(Class<?> parent : clazz.getInterfaces())
- {
- if(ConfiguredObject.class.isAssignableFrom(parent))
- {
- processAttributes((Class<? extends ConfiguredObject>)parent);
- }
- }
- final Class<? super X> superclass = clazz.getSuperclass();
- if(superclass != null && ConfiguredObject.class.isAssignableFrom(superclass))
- {
- processAttributes((Class<? extends ConfiguredObject>) superclass);
- }
-
- final ArrayList<Attribute<?, ?>> attributeList = new ArrayList<Attribute<?, ?>>();
- _allAttributes.put(clazz, attributeList);
-
- for(Class<?> parent : clazz.getInterfaces())
- {
- if(ConfiguredObject.class.isAssignableFrom(parent))
- {
- Collection<Attribute<?, ?>> attrs = _allAttributes.get(parent);
- for(Attribute<?,?> attr : attrs)
- {
- if(!attributeList.contains(attr))
- {
- attributeList.add(attr);
- }
- }
- }
- }
- if(superclass != null && ConfiguredObject.class.isAssignableFrom(superclass))
- {
- Collection<Attribute<?, ?>> attrs = _allAttributes.get(superclass);
- for(Attribute<?,?> attr : attrs)
- {
- if(!attributeList.contains(attr))
- {
- attributeList.add(attr);
- }
- }
-
- }
-
-
- for(Method m : clazz.getDeclaredMethods())
- {
- ManagedAttribute annotation = m.getAnnotation(ManagedAttribute.class);
- if(annotation != null)
- {
- if(m.getParameterTypes().length != 0)
- {
- throw new IllegalArgumentException("ManagedAttribute annotation should only be added to no-arg getters");
- }
- Class<?> type = m.getReturnType();
- if(type.isPrimitive())
- {
- if(type == Boolean.TYPE)
- {
- type = Boolean.class;
- }
- else if(type == Byte.TYPE)
- {
- type = Byte.class;
- }
- else if(type == Short.TYPE)
- {
- type = Short.class;
- }
- else if(type == Integer.TYPE)
- {
- type = Integer.class;
- }
- else if(type == Long.TYPE)
- {
- type = Long.class;
- }
- else if(type == Float.TYPE)
- {
- type = Float.class;
- }
- else if(type == Double.TYPE)
- {
- type = Double.class;
- }
- else if(type == Character.TYPE)
- {
- type = Character.class;
- }
- }
- String methodName = m.getName();
- String baseName;
-
- if(type == Boolean.class )
- {
- if((methodName.startsWith("get") || methodName.startsWith("has")) && methodName.length() >= 4)
- {
- baseName = methodName.substring(3);
- }
- else if(methodName.startsWith("is") && methodName.length() >= 3)
- {
- baseName = methodName.substring(2);
- }
- else
- {
- throw new IllegalArgumentException("Method name " + methodName + " does not conform to the required pattern for ManagedAttributes");
- }
- }
- else
- {
- if(methodName.startsWith("get") && methodName.length() >= 4)
- {
- baseName = methodName.substring(3);
- }
- else
- {
- throw new IllegalArgumentException("Method name " + methodName + " does not conform to the required pattern for ManagedAttributes");
- }
- }
-
- String name = baseName.length() == 1 ? baseName.toLowerCase() : baseName.substring(0,1).toLowerCase() + baseName.substring(1);
- name = name.replace('_','.');
- Attribute<X,?> newAttr = new Attribute(clazz,name,type,m);
-
- }
- }
- }
-
- public static void main(String[] args)
- {
- System.err.println(Attribute.getAttributeNames(KeyStore.class));
- System.err.println(Attribute.getAttributeNames(Binding.class));
- System.err.println(Attribute.getAttributeNames(Exchange.class));
- System.err.println(Attribute.getAttributeNames(Broker.class));
-
- }
-
-
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
index 46ccb72f40..e9244cc0b7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
@@ -57,5 +57,8 @@ public interface Binding<X extends Binding<X>> extends ConfiguredObject<X>
@ManagedAttribute
Map<String,Object> getArguments();
+ @ManagedStatistic
+ long getMatches();
+
void delete();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
index 9a309c8bcd..78b1204fe6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
@@ -177,6 +177,20 @@ public interface Broker<X extends Broker<X>> extends ConfiguredObject<X>
long getVirtualhost_storeTransactionOpenTimeoutWarn();
+
+ @ManagedStatistic
+ long getBytesIn();
+
+ @ManagedStatistic
+ long getBytesOut();
+
+ @ManagedStatistic
+ long getMessagesIn();
+
+ @ManagedStatistic
+ long getMessagesOut();
+
+
//children
Collection < VirtualHost<?> > getVirtualHosts();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
index 4bd21c737b..5535e22e83 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
@@ -20,6 +20,8 @@
*/
package org.apache.qpid.server.model;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
+
import java.security.AccessControlException;
import java.util.Collection;
import java.util.Map;
@@ -246,7 +248,7 @@ public interface ConfiguredObject<X extends ConfiguredObject<X>>
*/
Object getAttribute(String name);
- <T> T getAttribute(Attribute<? super X, T> attr);
+ <T> T getAttribute(AbstractConfiguredObject.Attribute<? super X, T> attr);
/**
* Return the map containing only explicitly set attributes
@@ -272,11 +274,11 @@ public interface ConfiguredObject<X extends ConfiguredObject<X>>
/**
- * Return the Statistics holder for the ConfiguredObject
+ * Return the statistics for the ConfiguredObject
*
- * @return the Statistics holder for the ConfiguredObject (or null if none exists)
+ * @return the current statistics for the ConfiguredObject
*/
- Statistics getStatistics();
+ Map<String,Number> getStatistics();
/**
* Return children of the ConfiguredObject of the given class
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java
index c3f75f02f0..335f4cf600 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java
@@ -20,45 +20,13 @@
*/
package org.apache.qpid.server.model;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
@ManagedObject( creatable = false )
public interface Connection<X extends Connection<X>> extends ConfiguredObject<X>
{
- // Statistics
-
- String BYTES_IN = "bytesIn";
- String BYTES_OUT = "bytesOut";
- String LAST_IO_TIME = "lastIoTime";
- String LOCAL_TRANSACTION_BEGINS = "localTransactionBegins";
- String LOCAL_TRANSACTION_ROLLBACKS = "localTransactionRollbacks";
- String MESSAGES_IN = "messagesIn";
- String MESSAGES_OUT = "messagesOut";
- String SESSION_COUNT = "sessionCount";
- String STATE_CHANGED = "stateChanged";
- String XA_TRANSACTION_BRANCH_ENDS = "xaTransactionBranchEnds";
- String XA_TRANSACTION_BRANCH_STARTS = "xaTransactionBranchStarts";
- String XA_TRANSACTION_BRANCH_SUSPENDS = "xaTransactionBranchSuspends";
-
- public static final Collection<String> AVAILABLE_STATISTICS =
- Collections.unmodifiableCollection(
- Arrays.asList(BYTES_IN,
- BYTES_OUT,
- LAST_IO_TIME,
- LOCAL_TRANSACTION_BEGINS,
- LOCAL_TRANSACTION_ROLLBACKS,
- MESSAGES_IN,
- MESSAGES_OUT,
- SESSION_COUNT,
- STATE_CHANGED,
- XA_TRANSACTION_BRANCH_ENDS,
- XA_TRANSACTION_BRANCH_STARTS,
- XA_TRANSACTION_BRANCH_SUSPENDS));
-
- // Attributes
+ // Attributes
public static final String STATE = "state";
public static final String DURABLE = "durable";
@@ -112,8 +80,28 @@ public interface Connection<X extends Connection<X>> extends ConfiguredObject<X>
@ManagedAttribute
Port getPort();
+ @ManagedStatistic
+ long getBytesIn();
+
+ @ManagedStatistic
+ long getBytesOut();
+
+ @ManagedStatistic
+ long getMessagesIn();
+
+ @ManagedStatistic
+ long getMessagesOut();
+
+ @ManagedStatistic
+ long getLastIoTime();
+
+ @ManagedStatistic
+ int getSessionCount();
+
//children
Collection<Session> getSessions();
void delete();
+
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
index 86860f5164..24711e6030 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
@@ -51,20 +51,16 @@ public interface Consumer<X extends Consumer<X>> extends ConfiguredObject<X>
@ManagedAttribute
String getSelector();
+ @ManagedStatistic
+ long getBytesOut();
+ @ManagedStatistic
+ long getMessagesOut();
- public String BYTES_OUT = "bytesOut";
- public String MESSAGES_OUT = "messagesOut";
- public String STATE_CHANGED = "stateChanged";
- public String UNACKNOWLEDGED_BYTES = "unacknowledgedBytes";
- public String UNACKNOWLEDGED_MESSAGES = "unacknowledgedMessages";
+ @ManagedStatistic
+ long getUnacknowledgedBytes();
+
+ @ManagedStatistic
+ long getUnacknowledgedMessages();
- public Collection<String> AVAILABLE_STATISTICS =
- Collections.unmodifiableCollection(
- Arrays.asList(BYTES_OUT,
- MESSAGES_OUT,
- STATE_CHANGED,
- UNACKNOWLEDGED_BYTES,
- UNACKNOWLEDGED_MESSAGES)
- );
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
index 608397dd2b..61519ca3f9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
@@ -29,24 +29,6 @@ import java.util.Map;
public interface Exchange<X extends Exchange<X>> extends ConfiguredObject<X>
{
- String BINDING_COUNT = "bindingCount";
- String BYTES_DROPPED = "bytesDropped";
- String BYTES_IN = "bytesIn";
- String MESSAGES_DROPPED = "messagesDropped";
- String MESSAGES_IN = "messagesIn";
- String PRODUCER_COUNT = "producerCount";
- String STATE_CHANGED = "stateChanged";
-
- public static final Collection<String> AVAILABLE_STATISTICS =
- Collections.unmodifiableList(
- Arrays.asList(BINDING_COUNT,
- BYTES_DROPPED,
- BYTES_IN,
- MESSAGES_DROPPED,
- MESSAGES_IN,
- PRODUCER_COUNT,
- STATE_CHANGED));
-
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
@@ -61,7 +43,23 @@ public interface Exchange<X extends Exchange<X>> extends ConfiguredObject<X>
//children
Collection<Binding> getBindings();
Collection<Publisher> getPublishers();
-
+
+ @ManagedStatistic
+ long getBindingCount();
+
+ @ManagedStatistic
+ long getBytesDropped();
+
+ @ManagedStatistic
+ long getBytesIn();
+
+ @ManagedStatistic
+ long getMessagesDropped();
+
+ @ManagedStatistic
+ long getMessagesIn();
+
+
//operations
Binding createBinding(String bindingKey,
Queue queue,
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedStatistic.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedStatistic.java
new file mode 100644
index 0000000000..2e3fc481ac
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedStatistic.java
@@ -0,0 +1,30 @@
+package org.apache.qpid.server.model;
+/*
+ *
+ * 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.
+ *
+ */
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface ManagedStatistic
+{
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java
index 41b29aad08..2b4bea82ad 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java
@@ -21,10 +21,7 @@
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.List;
public interface Port<X extends Port<X>> extends ConfiguredObject<X>
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
index cf36178022..5855408ffb 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
@@ -21,9 +21,6 @@
package org.apache.qpid.server.model;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
import java.util.Map;
import java.util.Set;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
index 9a4f9d6af1..dc7f48aa9d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
@@ -20,56 +20,13 @@
*/
package org.apache.qpid.server.model;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import org.apache.qpid.server.queue.QueueEntryVisitor;
@ManagedObject
public interface Queue<X extends Queue<X>> extends ConfiguredObject<X>
{
- public static final String BINDING_COUNT = "bindingCount";
- public static final String CONSUMER_COUNT = "consumerCount";
- public static final String CONSUMER_COUNT_WITH_CREDIT = "consumerCountWithCredit";
- public static final String DISCARDS_TTL_BYTES = "discardsTtlBytes";
- public static final String DISCARDS_TTL_MESSAGES = "discardsTtlMessages";
- public static final String PERSISTENT_DEQUEUED_BYTES = "persistentDequeuedBytes";
- public static final String PERSISTENT_DEQUEUED_MESSAGES = "persistentDequeuedMessages";
- public static final String PERSISTENT_ENQUEUED_BYTES = "persistentEnqueuedBytes";
- public static final String PERSISTENT_ENQUEUED_MESSAGES = "persistentEnqueuedMessages";
- public static final String QUEUE_DEPTH_BYTES = "queueDepthBytes";
- public static final String QUEUE_DEPTH_MESSAGES = "queueDepthMessages";
- public static final String STATE_CHANGED = "stateChanged";
- public static final String TOTAL_DEQUEUED_BYTES = "totalDequeuedBytes";
- public static final String TOTAL_DEQUEUED_MESSAGES = "totalDequeuedMessages";
- public static final String TOTAL_ENQUEUED_BYTES = "totalEnqueuedBytes";
- public static final String TOTAL_ENQUEUED_MESSAGES = "totalEnqueuedMessages";
- public static final String UNACKNOWLEDGED_BYTES = "unacknowledgedBytes";
- public static final String UNACKNOWLEDGED_MESSAGES = "unacknowledgedMessages";
-
- public static final Collection<String> AVAILABLE_STATISTICS =
- Collections.unmodifiableList(
- Arrays.asList(BINDING_COUNT,
- CONSUMER_COUNT,
- CONSUMER_COUNT_WITH_CREDIT,
- DISCARDS_TTL_BYTES,
- DISCARDS_TTL_MESSAGES,
- PERSISTENT_DEQUEUED_BYTES,
- PERSISTENT_DEQUEUED_MESSAGES,
- PERSISTENT_ENQUEUED_BYTES,
- PERSISTENT_ENQUEUED_MESSAGES,
- QUEUE_DEPTH_BYTES,
- QUEUE_DEPTH_MESSAGES,
- STATE_CHANGED,
- TOTAL_DEQUEUED_BYTES,
- TOTAL_DEQUEUED_MESSAGES,
- TOTAL_ENQUEUED_BYTES,
- TOTAL_ENQUEUED_MESSAGES,
- UNACKNOWLEDGED_BYTES,
- UNACKNOWLEDGED_MESSAGES));
-
-
public static final String STATE = "state";
public static final String DURABLE = "durable";
@@ -176,4 +133,62 @@ public interface Queue<X extends Queue<X>> extends ConfiguredObject<X>
void delete();
void setNotificationListener(QueueNotificationListener listener);
+
+ @ManagedStatistic
+ long getBytesIn();
+
+ @ManagedStatistic
+ long getBytesOut();
+
+ @ManagedStatistic
+ long getMessagesIn();
+
+ @ManagedStatistic
+ long getMessagesOut();
+
+ @ManagedStatistic
+ long getBindingCount();
+
+ @ManagedStatistic
+ long getConsumerCount();
+
+ @ManagedStatistic
+ long getConsumerCountWithCredit();
+
+ @ManagedStatistic
+ long getPersistentDequeuedBytes();
+
+ @ManagedStatistic
+ long getPersistentDequeuedMessages();
+
+ @ManagedStatistic
+ long getPersistentEnqueuedBytes();
+
+ @ManagedStatistic
+ long getPersistentEnqueuedMessages();
+
+ @ManagedStatistic
+ long getQueueDepthBytes();
+
+ @ManagedStatistic
+ long getQueueDepthMessages();
+
+ @ManagedStatistic
+ long getTotalDequeuedBytes();
+
+ @ManagedStatistic
+ long getTotalDequeuedMessages();
+
+ @ManagedStatistic
+ long getTotalEnqueuedBytes();
+
+ @ManagedStatistic
+ long getTotalEnqueuedMessages();
+
+ @ManagedStatistic
+ long getUnacknowledgedBytes();
+
+ @ManagedStatistic
+ long getUnacknowledgedMessages();
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java
index 86ab4efdce..5dbec8cdd9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java
@@ -26,31 +26,6 @@ import java.util.Collections;
public interface Session<X extends Session<X>> extends ConfiguredObject<X>
{
- // Statistics
-
- public static final String BYTES_IN = "bytesIn";
- public static final String BYTES_OUT = "bytesOut";
- public static final String CONSUMER_COUNT = "consumerCount";
- public static final String LOCAL_TRANSACTION_BEGINS = "localTransactionBegins";
- public static final String LOCAL_TRANSACTION_OPEN = "localTransactionOpen";
- public static final String LOCAL_TRANSACTION_ROLLBACKS = "localTransactionRollbacks";
- public static final String STATE_CHANGED = "stateChanged";
- public static final String UNACKNOWLEDGED_BYTES = "unacknowledgedBytes";
- public static final String UNACKNOWLEDGED_MESSAGES = "unacknowledgedMessages";
- 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.unmodifiableCollection(Arrays.asList(BYTES_IN, BYTES_OUT, CONSUMER_COUNT,
- LOCAL_TRANSACTION_BEGINS,
- LOCAL_TRANSACTION_OPEN,
- LOCAL_TRANSACTION_ROLLBACKS, STATE_CHANGED,
- UNACKNOWLEDGED_BYTES, UNACKNOWLEDGED_MESSAGES,
- XA_TRANSACTION_BRANCH_ENDS, XA_TRANSACTION_BRANCH_STARTS,
- XA_TRANSACTION_BRANCH_SUSPENDS));
-
-
public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
@@ -70,4 +45,19 @@ public interface Session<X extends Session<X>> extends ConfiguredObject<X>
Collection<Consumer> getConsumers();
Collection<Publisher> getPublishers();
+
+ @ManagedStatistic
+ long getConsumerCount();
+
+ @ManagedStatistic
+ long getLocalTransactionBegins();
+
+ @ManagedStatistic
+ int getLocalTransactionOpen();
+
+ @ManagedStatistic
+ long getLocalTransactionRollbacks();
+
+ @ManagedStatistic
+ long getUnacknowledgedMessages();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
index 46bcdf3ac1..bd3183a77a 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
@@ -25,39 +25,13 @@ import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.MessageStore;
import java.security.AccessControlException;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.Map;
@ManagedObject( managesChildren = true )
public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<X>
{
- // 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 String QUEUE_COUNT = "queueCount";
- public static final String EXCHANGE_COUNT = "exchangeCount";
- public static final String CONNECTION_COUNT = "connectionCount";
-
- 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,
- QUEUE_COUNT, EXCHANGE_COUNT, CONNECTION_COUNT));
String QUEUE_ALERT_REPEAT_GAP = "queue.alertRepeatGap";
String QUEUE_ALERT_THRESHOLD_MESSAGE_AGE = "queue.alertThresholdMessageAge";
@@ -153,6 +127,27 @@ public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<
@ManagedAttribute
String getConfigPath();
+ @ManagedStatistic
+ long getQueueCount();
+
+ @ManagedStatistic
+ long getExchangeCount();
+
+ @ManagedStatistic
+ long getConnectionCount();
+
+ @ManagedStatistic
+ long getBytesIn();
+
+ @ManagedStatistic
+ long getBytesOut();
+
+ @ManagedStatistic
+ long getMessagesIn();
+
+ @ManagedStatistic
+ long getMessagesOut();
+
//children
Collection<VirtualHostAlias> getAliases();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
index bae890ecf6..e61250b455 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java
@@ -20,18 +20,17 @@
*/
package org.apache.qpid.server.model.adapter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.qpid.server.model.Attribute;
+import java.security.AccessController;
+import java.util.*;
+
import org.apache.qpid.server.model.ConfigurationChangeListener;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.IllegalStateTransitionException;
+import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.model.ManagedStatistic;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.ChangeAttributesTask;
@@ -39,10 +38,21 @@ import org.apache.qpid.server.configuration.updater.ChangeStateTask;
import org.apache.qpid.server.configuration.updater.CreateChildTask;
import org.apache.qpid.server.configuration.updater.SetAttributeTask;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
+import org.apache.qpid.server.util.MapValueConverter;
+
+import javax.security.auth.Subject;
public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> implements ConfiguredObject<X>
{
private static final Object ID = "id";
+
+ private static final Map<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> _allAttributes =
+ Collections.synchronizedMap(new HashMap<Class<? extends ConfiguredObject>, Collection<Attribute<?, ?>>>());
+
+ private static final Map<Class<? extends ConfiguredObject>, Collection<Statistic<?,?>>> _allStatistics =
+ Collections.synchronizedMap(new HashMap<Class<? extends ConfiguredObject>, Collection<Statistic<?, ?>>>());
+
private final Map<String,Object> _attributes = new HashMap<String, Object>();
private final Map<Class<? extends ConfiguredObject>, ConfiguredObject> _parents =
new HashMap<Class<? extends ConfiguredObject>, ConfiguredObject>();
@@ -52,6 +62,8 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
private final UUID _id;
private final Map<String, Object> _defaultAttributes = new HashMap<String, Object>();
private final TaskExecutor _taskExecutor;
+ private final long _createdTime;
+ private final String _createdBy;
protected AbstractConfiguredObject(UUID id,
Map<String, Object> defaults,
@@ -70,27 +82,30 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
if (attributes != null)
{
Collection<String> names = getAttributeNames();
- if(filterAttributes)
+ if(names!=null)
{
- for (String name : names)
+ if(filterAttributes)
{
- if (attributes.containsKey(name))
+ for (String name : names)
{
- final Object value = attributes.get(name);
- if(value != null)
+ if (attributes.containsKey(name))
{
- _attributes.put(name, value);
+ final Object value = attributes.get(name);
+ if(value != null)
+ {
+ _attributes.put(name, value);
+ }
}
}
}
- }
- else
- {
- for(Map.Entry<String, Object> entry : attributes.entrySet())
+ else
{
- if(entry.getValue()!=null)
+ for(Map.Entry<String, Object> entry : attributes.entrySet())
{
- _attributes.put(entry.getKey(),entry.getValue());
+ if(entry.getValue()!=null)
+ {
+ _attributes.put(entry.getKey(),entry.getValue());
+ }
}
}
}
@@ -99,11 +114,14 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
{
_defaultAttributes.putAll(defaults);
}
+ _createdTime = MapValueConverter.getLongAttribute(CREATED_TIME, attributes, System.currentTimeMillis());
+ _createdBy = MapValueConverter.getStringAttribute(CREATED_BY, attributes, getCurrentUserName());
+
}
protected AbstractConfiguredObject(UUID id, TaskExecutor taskExecutor)
{
- this(id, null, null, taskExecutor);
+ this(id, Collections.<String,Object>emptyMap(), Collections.<String,Object>emptyMap(), taskExecutor);
}
public final UUID getId()
@@ -258,9 +276,20 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
private Object getActualAttribute(final String name)
{
- synchronized (_attributes)
+ if(CREATED_BY.equals(name))
{
- return _attributes.get(name);
+ return getCreatedBy();
+ }
+ else if(CREATED_TIME.equals(name))
+ {
+ return getCreatedTime();
+ }
+ else
+ {
+ synchronized (_attributes)
+ {
+ return _attributes.get(name);
+ }
}
}
@@ -506,13 +535,28 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
@Override
public String getCreatedBy()
{
- return null;
+ return _createdBy;
+ }
+
+ protected String getCurrentUserName()
+ {
+ Subject currentSubject = Subject.getSubject(AccessController.getContext());
+ Set<AuthenticatedPrincipal> principals =
+ currentSubject == null ? null : currentSubject.getPrincipals(AuthenticatedPrincipal.class);
+ if(principals == null || principals.isEmpty())
+ {
+ return null;
+ }
+ else
+ {
+ return principals.iterator().next().getName();
+ }
}
@Override
public long getCreatedTime()
{
- return 0;
+ return _createdTime;
}
@Override
@@ -520,4 +564,688 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
{
return (String)getAttribute(TYPE);
}
+
+
+ @Override
+ public Map<String,Number> getStatistics()
+ {
+ Collection<Statistic> stats = getStatistics(getClass());
+ Map<String,Number> map = new HashMap<String,Number>();
+ for(Statistic stat : stats)
+ {
+ map.put(stat.getName(), (Number) stat.getValue(this));
+ }
+ return map;
+ }
+
+ //=========================================================================================
+
+ private static abstract class AttributeOrStatistic<C extends ConfiguredObject, T>
+ {
+
+ protected final String _name;
+ protected final Class<T> _type;
+ protected final Converter<T> _converter;
+ protected final Method _getter;
+
+ private AttributeOrStatistic(
+ String name, final Method getter, Class<T> type)
+ {
+ _name = name;
+ _getter = getter;
+ _type = type;
+ _converter = getConverter(type);
+
+ }
+
+ public String getName()
+ {
+ return _name;
+ }
+
+ public Class<T> getType()
+ {
+ return _type;
+ }
+
+ public T getValue(C configuredObject)
+ {
+ try
+ {
+ return (T) _getter.invoke(configuredObject);
+ }
+ catch (IllegalAccessException e)
+ {
+ Object o = configuredObject.getAttribute(_name);
+ return _converter.convert(o);
+ }
+ catch (InvocationTargetException e)
+ {
+ Object o = configuredObject.getAttribute(_name);
+ return _converter.convert(o);
+ }
+
+ }
+
+ public T getValue(Map<String, Object> attributeMap)
+ {
+ Object o = attributeMap.get(_name);
+ return _converter.convert(o);
+ }
+ }
+
+ private static final class Statistic<C extends ConfiguredObject, T extends Number> extends AttributeOrStatistic<C,T>
+ {
+ private Statistic(Class<C> clazz, String name, Class<T> type, final Method getter)
+ {
+ super(name, getter, type);
+ addToStatisticsSet(clazz, this);
+ }
+ }
+
+ public static final class Attribute<C extends ConfiguredObject, T> extends AttributeOrStatistic<C,T>
+ {
+
+ private Attribute(Class<C> clazz, String name, Class<T> type, final Method getter)
+ {
+ super(name, getter, type);
+ addToAttributesSet(clazz, this);
+ }
+
+
+
+ }
+
+
+ private static interface Converter<T>
+ {
+ T convert(Object o);
+ }
+
+ private static final Converter<String> STRING_CONVERTER = new Converter<String>()
+ {
+ @Override
+ public String convert(final Object o)
+ {
+ return o == null ? null : o.toString();
+ }
+ };
+
+ private static final Converter<UUID> UUID_CONVERTER = new Converter<UUID>()
+ {
+ @Override
+ public UUID convert(final Object o)
+ {
+ if(o instanceof UUID)
+ {
+ return (UUID)o;
+ }
+ else if(o instanceof String)
+ {
+ return UUID.fromString((String)o);
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a UUID");
+ }
+ }
+ };
+
+ private static final Converter<Long> LONG_CONVERTER = new Converter<Long>()
+ {
+
+ @Override
+ public Long convert(final Object o)
+ {
+ if(o instanceof Long)
+ {
+ return (Long)o;
+ }
+ else if(o instanceof Number)
+ {
+ return ((Number)o).longValue();
+ }
+ else if(o instanceof String)
+ {
+ return Long.valueOf((String)o);
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Long");
+ }
+ }
+ };
+
+ private static final Converter<Integer> INT_CONVERTER = new Converter<Integer>()
+ {
+
+ @Override
+ public Integer convert(final Object o)
+ {
+ if(o instanceof Integer)
+ {
+ return (Integer)o;
+ }
+ else if(o instanceof Number)
+ {
+ return ((Number)o).intValue();
+ }
+ else if(o instanceof String)
+ {
+ return Integer.valueOf((String)o);
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to an Integer");
+ }
+ }
+ };
+
+ private static final Converter<Boolean> BOOLEAN_CONVERTER = new Converter<Boolean>()
+ {
+
+ @Override
+ public Boolean convert(final Object o)
+ {
+ if(o instanceof Boolean)
+ {
+ return (Boolean)o;
+ }
+ else if(o instanceof String)
+ {
+ return Boolean.valueOf((String)o);
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Boolean");
+ }
+ }
+ };
+
+ private static final Converter<List> LIST_CONVERTER = new Converter<List>()
+ {
+ @Override
+ public List convert(final Object o)
+ {
+ if(o instanceof List)
+ {
+ return (List)o;
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a List");
+ }
+ }
+ };
+
+ private static final Converter<Collection> COLLECTION_CONVERTER = new Converter<Collection>()
+ {
+ @Override
+ public Collection convert(final Object o)
+ {
+ if(o instanceof Collection)
+ {
+ return (Collection)o;
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a List");
+ }
+ }
+ };
+
+ private static final Converter<Map> MAP_CONVERTER = new Converter<Map>()
+ {
+ @Override
+ public Map convert(final Object o)
+ {
+ if(o instanceof Map)
+ {
+ return (Map)o;
+ }
+ else if(o == null)
+ {
+ return null;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Map");
+ }
+ }
+ };
+
+ private static final class EnumConverter<X extends Enum<X>> implements Converter<X>
+ {
+ private final Class<X> _klazz;
+
+ private EnumConverter(final Class<X> klazz)
+ {
+ _klazz = klazz;
+ }
+
+ @Override
+ public X convert(final Object o)
+ {
+ if(o == null)
+ {
+ return null;
+ }
+ else if(_klazz.isInstance(o))
+ {
+ return (X) o;
+ }
+ else if(o instanceof String)
+ {
+ return Enum.valueOf(_klazz,(String)o);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a " + _klazz.getName());
+ }
+ }
+ }
+
+ private static final class ConfiguredObjectConverter<X extends ConfiguredObject<X>> implements Converter<X>
+ {
+ private final Class<X> _klazz;
+
+ private ConfiguredObjectConverter(final Class<X> klazz)
+ {
+ _klazz = klazz;
+ }
+
+ @Override
+ public X convert(final Object o)
+ {
+ if(o == null)
+ {
+ return null;
+ }
+ else if(_klazz.isInstance(o))
+ {
+ return (X) o;
+ }
+ // TODO - traverse tree based on UUID
+ else
+ {
+ throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a " + _klazz.getName());
+ }
+ }
+ }
+
+ private static <X> Converter<X> getConverter(final Class<X> type)
+ {
+ if(type == String.class)
+ {
+ return (Converter<X>) STRING_CONVERTER;
+ }
+ else if(type == Integer.class)
+ {
+ return (Converter<X>) INT_CONVERTER;
+ }
+ else if(type == Long.class)
+ {
+ return (Converter<X>) LONG_CONVERTER;
+ }
+ else if(type == Boolean.class)
+ {
+ return (Converter<X>) BOOLEAN_CONVERTER;
+ }
+ else if(type == UUID.class)
+ {
+ return (Converter<X>) UUID_CONVERTER;
+ }
+ else if(Enum.class.isAssignableFrom(type))
+ {
+ return (Converter<X>) new EnumConverter((Class<? extends Enum>)type);
+ }
+ else if(List.class.isAssignableFrom(type))
+ {
+ return (Converter<X>) LIST_CONVERTER;
+ }
+ else if(Map.class.isAssignableFrom(type))
+ {
+ return (Converter<X>) MAP_CONVERTER;
+ }
+ else if(Collection.class.isAssignableFrom(type))
+ {
+ return (Converter<X>) COLLECTION_CONVERTER;
+ }
+ else if(ConfiguredObject.class.isAssignableFrom(type))
+ {
+ return (Converter<X>) new ConfiguredObjectConverter(type);
+ }
+ throw new IllegalArgumentException("Cannot create attributes of type " + type.getName());
+ }
+
+ private static void addToAttributesSet(final Class<? extends ConfiguredObject> clazz, final Attribute<?, ?> attribute)
+ {
+ synchronized (_allAttributes)
+ {
+ Collection<Attribute<?,?>> classAttributes = _allAttributes.get(clazz);
+ if(classAttributes == null)
+ {
+ classAttributes = new ArrayList<Attribute<?, ?>>();
+ for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> entry : _allAttributes.entrySet())
+ {
+ if(entry.getKey().isAssignableFrom(clazz))
+ {
+ classAttributes.addAll(entry.getValue());
+ }
+ }
+ _allAttributes.put(clazz, classAttributes);
+
+ }
+ for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> entry : _allAttributes.entrySet())
+ {
+ if(clazz.isAssignableFrom(entry.getKey()))
+ {
+ entry.getValue().add(attribute);
+ }
+ }
+
+ }
+ }
+ private static void addToStatisticsSet(final Class<? extends ConfiguredObject> clazz, final Statistic<?, ?> statistic)
+ {
+ synchronized (_allStatistics)
+ {
+ Collection<Statistic<?,?>> classAttributes = _allStatistics.get(clazz);
+ if(classAttributes == null)
+ {
+ classAttributes = new ArrayList<Statistic<?, ?>>();
+ for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Statistic<?,?>>> entry : _allStatistics.entrySet())
+ {
+ if(entry.getKey().isAssignableFrom(clazz))
+ {
+ classAttributes.addAll(entry.getValue());
+ }
+ }
+ _allStatistics.put(clazz, classAttributes);
+
+ }
+ for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Statistic<?,?>>> entry : _allStatistics.entrySet())
+ {
+ if(clazz.isAssignableFrom(entry.getKey()))
+ {
+ entry.getValue().add(statistic);
+ }
+ }
+
+ }
+ }
+
+
+ private static <X extends ConfiguredObject> void processAttributes(final Class<X> clazz)
+ {
+ if(_allAttributes.containsKey(clazz))
+ {
+ return;
+ }
+
+
+ for(Class<?> parent : clazz.getInterfaces())
+ {
+ if(ConfiguredObject.class.isAssignableFrom(parent))
+ {
+ processAttributes((Class<? extends ConfiguredObject>)parent);
+ }
+ }
+ final Class<? super X> superclass = clazz.getSuperclass();
+ if(superclass != null && ConfiguredObject.class.isAssignableFrom(superclass))
+ {
+ processAttributes((Class<? extends ConfiguredObject>) superclass);
+ }
+
+ final ArrayList<Attribute<?, ?>> attributeList = new ArrayList<Attribute<?, ?>>();
+ final ArrayList<Statistic<?, ?>> statisticList = new ArrayList<Statistic<?, ?>>();
+
+ _allAttributes.put(clazz, attributeList);
+ _allStatistics.put(clazz, statisticList);
+
+ for(Class<?> parent : clazz.getInterfaces())
+ {
+ if(ConfiguredObject.class.isAssignableFrom(parent))
+ {
+ Collection<Attribute<?, ?>> attrs = _allAttributes.get(parent);
+ for(Attribute<?,?> attr : attrs)
+ {
+ if(!attributeList.contains(attr))
+ {
+ attributeList.add(attr);
+ }
+ }
+ Collection<Statistic<?, ?>> stats = _allStatistics.get(parent);
+ for(Statistic<?,?> stat : stats)
+ {
+ if(!statisticList.contains(stat))
+ {
+ statisticList.add(stat);
+ }
+ }
+ }
+ }
+ if(superclass != null && ConfiguredObject.class.isAssignableFrom(superclass))
+ {
+ Collection<Attribute<?, ?>> attrs = _allAttributes.get(superclass);
+ Collection<Statistic<?, ?>> stats = _allStatistics.get(superclass);
+ for(Attribute<?,?> attr : attrs)
+ {
+ if(!attributeList.contains(attr))
+ {
+ attributeList.add(attr);
+ }
+ }
+ for(Statistic<?,?> stat : stats)
+ {
+ if(!statisticList.contains(stat))
+ {
+ statisticList.add(stat);
+ }
+ }
+ }
+
+
+ for(Method m : clazz.getDeclaredMethods())
+ {
+ ManagedAttribute annotation = m.getAnnotation(ManagedAttribute.class);
+ if(annotation != null)
+ {
+ if(m.getParameterTypes().length != 0)
+ {
+ throw new IllegalArgumentException("ManagedAttribute annotation should only be added to no-arg getters");
+ }
+ Class<?> type = getType(m);
+ String name = getName(m, type);
+ Attribute<X,?> newAttr = new Attribute(clazz,name,type,m);
+
+ }
+ else
+ {
+ ManagedStatistic statAnnotation = m.getAnnotation(ManagedStatistic.class);
+ if(statAnnotation != null)
+ {
+ if(m.getParameterTypes().length != 0)
+ {
+ throw new IllegalArgumentException("ManagedStatistic annotation should only be added to no-arg getters");
+ }
+ Class<?> type = getType(m);
+ if(!Number.class.isAssignableFrom(type))
+ {
+ throw new IllegalArgumentException("ManagedStatistic annotation should only be added to getters returning a Number type");
+ }
+ String name = getName(m, type);
+ Statistic<X,?> newStat = new Statistic(clazz,name,type,m);
+ }
+ }
+ }
+ }
+
+ private static String getName(final Method m, final Class<?> type)
+ {
+ String methodName = m.getName();
+ String baseName;
+
+ if(type == Boolean.class )
+ {
+ if((methodName.startsWith("get") || methodName.startsWith("has")) && methodName.length() >= 4)
+ {
+ baseName = methodName.substring(3);
+ }
+ else if(methodName.startsWith("is") && methodName.length() >= 3)
+ {
+ baseName = methodName.substring(2);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Method name " + methodName + " does not conform to the required pattern for ManagedAttributes");
+ }
+ }
+ else
+ {
+ if(methodName.startsWith("get") && methodName.length() >= 4)
+ {
+ baseName = methodName.substring(3);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Method name " + methodName + " does not conform to the required pattern for ManagedAttributes");
+ }
+ }
+
+ String name = baseName.length() == 1 ? baseName.toLowerCase() : baseName.substring(0,1).toLowerCase() + baseName.substring(1);
+ name = name.replace('_','.');
+ return name;
+ }
+
+ private static Class<?> getType(final Method m)
+ {
+ Class<?> type = m.getReturnType();
+ if(type.isPrimitive())
+ {
+ if(type == Boolean.TYPE)
+ {
+ type = Boolean.class;
+ }
+ else if(type == Byte.TYPE)
+ {
+ type = Byte.class;
+ }
+ else if(type == Short.TYPE)
+ {
+ type = Short.class;
+ }
+ else if(type == Integer.TYPE)
+ {
+ type = Integer.class;
+ }
+ else if(type == Long.TYPE)
+ {
+ type = Long.class;
+ }
+ else if(type == Float.TYPE)
+ {
+ type = Float.class;
+ }
+ else if(type == Double.TYPE)
+ {
+ type = Double.class;
+ }
+ else if(type == Character.TYPE)
+ {
+ type = Character.class;
+ }
+ }
+ return type;
+ }
+
+ public static <X extends ConfiguredObject> Collection<String> getAttributeNames(Class<X> clazz)
+ {
+ final Collection<Attribute<? super X, ?>> attrs = getAttributes(clazz);
+
+ return new AbstractCollection<String>()
+ {
+ @Override
+ public Iterator<String> iterator()
+ {
+ final Iterator<Attribute<? super X, ?>> underlyingIterator = attrs.iterator();
+ return new Iterator<String>()
+ {
+ @Override
+ public boolean hasNext()
+ {
+ return underlyingIterator.hasNext();
+ }
+
+ @Override
+ public String next()
+ {
+ return underlyingIterator.next().getName();
+ }
+
+ @Override
+ public void remove()
+ {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+
+ @Override
+ public int size()
+ {
+ return attrs.size();
+ }
+ };
+
+ }
+
+ protected static <X extends ConfiguredObject> Collection<Attribute<? super X, ?>> getAttributes(final Class<X> clazz)
+ {
+ if(!_allAttributes.containsKey(clazz))
+ {
+ processAttributes(clazz);
+ }
+ final Collection<Attribute<? super X, ?>> attributes = (Collection) _allAttributes.get(clazz);
+ return attributes;
+ }
+
+
+ protected static Collection<Statistic> getStatistics(final Class<? extends ConfiguredObject> clazz)
+ {
+ if(!_allStatistics.containsKey(clazz))
+ {
+ processAttributes(clazz);
+ }
+ final Collection<Statistic> statistics = (Collection) _allStatistics.get(clazz);
+ return statistics;
+ }
+
+
+
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java
index 51a5344c00..0b8d3e8e1d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java
@@ -32,9 +32,7 @@ import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.KeyStore;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
import org.apache.qpid.server.model.TrustStore;
-import org.apache.qpid.server.security.*;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.util.MapValueConverter;
@@ -115,12 +113,6 @@ public abstract class AbstractKeyStoreAdapter<X extends ConfiguredObject<X>> ext
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
index 269c615743..b70f93c1e3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
@@ -26,13 +26,11 @@ import java.util.Collections;
import java.util.Map;
import java.util.UUID;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Plugin;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
import org.apache.qpid.server.security.access.Operation;
public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends AbstractConfiguredObject<X> implements Plugin<X>
@@ -96,11 +94,6 @@ public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends Abstrac
throw new UnsupportedOperationException();
}
- @Override
- public Statistics getStatistics()
- {
- return null;
- }
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
@@ -111,7 +104,7 @@ public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends Abstrac
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Plugin.class);
+ return getAttributeNames(Plugin.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java
index 8bc8f2bc72..11128b45d3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java
@@ -49,7 +49,7 @@ public class AccessControlProviderAdapter extends AbstractConfiguredObject<Acces
public AccessControlProviderAdapter(UUID id, Broker broker, AccessControl accessControl, Map<String, Object> attributes, Collection<String> attributeNames)
{
- super(id, null, null, broker.getTaskExecutor());
+ super(id, Collections.<String,Object>emptyMap(), Collections.<String,Object>emptyMap(), broker.getTaskExecutor());
if (accessControl == null)
{
@@ -79,7 +79,7 @@ public class AccessControlProviderAdapter extends AbstractConfiguredObject<Acces
protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes)
{
- List<String> attributesNames = new ArrayList<String>(Attribute.getAttributeNames(AccessControlProvider.class));
+ List<String> attributesNames = new ArrayList<String>(getAttributeNames(AccessControlProvider.class));
if (factoryAttributes != null)
{
attributesNames.addAll(factoryAttributes);
@@ -145,12 +145,6 @@ public class AccessControlProviderAdapter extends AbstractConfiguredObject<Acces
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public Collection<String> getAttributeNames()
{
return _supportedAttributes;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
index f77db240a1..fe11b88ef5 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
@@ -66,7 +66,7 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
private AuthenticationProviderAdapter(UUID id, Broker broker, final T authManager, Map<String, Object> attributes, Collection<String> attributeNames)
{
- super(id, null, null, broker.getTaskExecutor());
+ super(id, Collections.<String,Object>emptyMap(), Collections.<String,Object>emptyMap(), broker.getTaskExecutor());
_authManager = authManager;
_broker = broker;
_supportedAttributes = createSupportedAttributes(attributeNames);
@@ -157,12 +157,6 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public Collection<String> getAttributeNames()
{
return _supportedAttributes;
@@ -331,7 +325,7 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes)
{
- List<String> attributesNames = new ArrayList<String>(Attribute.getAttributeNames(AuthenticationProvider.class));
+ List<String> attributesNames = new ArrayList<String>(getAttributeNames(AuthenticationProvider.class));
if (factoryAttributes != null)
{
attributesNames.addAll(factoryAttributes);
@@ -663,12 +657,6 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return null;
@@ -685,7 +673,7 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(User.class);
+ return getAttributeNames(User.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
index 813f4e63df..df9f4330cd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
@@ -31,7 +31,6 @@ import org.apache.qpid.server.model.*;
final class BindingAdapter extends AbstractConfiguredObject<BindingAdapter> implements Binding<BindingAdapter>
{
private final org.apache.qpid.server.binding.Binding _binding;
- private Statistics _statistics = NoStatistics.getInstance();
private final ExchangeAdapter _exchange;
private QueueAdapter _queue;
@@ -107,11 +106,6 @@ final class BindingAdapter extends AbstractConfiguredObject<BindingAdapter> impl
return 0; //TODO
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
-
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
@@ -129,6 +123,12 @@ final class BindingAdapter extends AbstractConfiguredObject<BindingAdapter> impl
return new HashMap<String, Object> (_binding.getArguments());
}
+ @Override
+ public long getMatches()
+ {
+ return _binding.getMatches();
+ }
+
public void delete()
{
_binding.delete();
@@ -180,7 +180,7 @@ final class BindingAdapter extends AbstractConfiguredObject<BindingAdapter> impl
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Binding.class);
+ return getAttributeNames(Binding.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
index c4b21bb067..74a7230d03 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
@@ -153,7 +153,6 @@ public class BrokerAdapter<X extends Broker<X>> extends AbstractConfiguredObject
private final VirtualHostRegistry _virtualHostRegistry;
private final LogRecorder _logRecorder;
private final RootMessageLogger _rootMessageLogger;
- private StatisticsAdapter _statistics;
private final Map<String, VirtualHost<?>> _vhostAdapters = new HashMap<String, VirtualHost<?>>();
private final Map<UUID, Port<?>> _portAdapters = new HashMap<UUID, Port<?>>();
@@ -188,7 +187,6 @@ public class BrokerAdapter<X extends Broker<X>> extends AbstractConfiguredObject
_virtualHostRegistry = virtualHostRegistry;
_logRecorder = logRecorder;
_rootMessageLogger = rootMessageLogger;
- _statistics = new StatisticsAdapter(statisticsGatherer);
_authenticationProviderFactory = authenticationProviderFactory;
_groupProviderFactory = groupProviderFactory;
_accessControlProviderFactory = accessControlProviderFactory;
@@ -552,11 +550,30 @@ public class BrokerAdapter<X extends Broker<X>> extends AbstractConfiguredObject
throw new IllegalStateException();
}
- public Statistics getStatistics()
+
+ @Override
+ public long getBytesIn()
{
- return _statistics;
+ return _statisticsGatherer.getDataReceiptStatistics().getTotal();
}
+ @Override
+ public long getBytesOut()
+ {
+ return _statisticsGatherer.getDataDeliveryStatistics().getTotal();
+ }
+
+ @Override
+ public long getMessagesIn()
+ {
+ return _statisticsGatherer.getMessageReceiptStatistics().getTotal();
+ }
+
+ @Override
+ public long getMessagesOut()
+ {
+ return _statisticsGatherer.getMessageDeliveryStatistics().getTotal();
+ }
@SuppressWarnings("unchecked")
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
@@ -889,7 +906,7 @@ public class BrokerAdapter<X extends Broker<X>> extends AbstractConfiguredObject
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Broker.class);
+ return getAttributeNames(Broker.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
index 41510836db..f51fb30584 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
@@ -44,13 +44,11 @@ final class ConnectionAdapter extends AbstractConfiguredObject<ConnectionAdapter
private final Map<AMQSessionModel, SessionAdapter> _sessionAdapters =
new HashMap<AMQSessionModel, SessionAdapter>();
- private final Statistics _statistics;
public ConnectionAdapter(final AMQConnectionModel conn, TaskExecutor taskExecutor)
{
super(UUIDGenerator.generateRandomUUID(), taskExecutor);
_connection = conn;
- _statistics = new ConnectionStatisticsAdapter(conn);
}
@Override
@@ -290,15 +288,11 @@ final class ConnectionAdapter extends AbstractConfiguredObject<ConnectionAdapter
@Override
public Collection<String> getAttributeNames()
{
- final HashSet<String> attrNames = new HashSet<String>(Attribute.getAttributeNames(Connection.class));
+ final HashSet<String> attrNames = new HashSet<String>(getAttributeNames(Connection.class));
return Collections.unmodifiableCollection(attrNames);
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
@@ -327,34 +321,6 @@ final class ConnectionAdapter extends AbstractConfiguredObject<ConnectionAdapter
}
- private class ConnectionStatisticsAdapter extends StatisticsAdapter
- {
- public ConnectionStatisticsAdapter(StatisticsGatherer applicationRegistry)
- {
- super(applicationRegistry);
- }
-
- @Override
- public Collection<String> getStatisticNames()
- {
- return Connection.AVAILABLE_STATISTICS;
- }
-
- @Override
- public Object getStatistic(String name)
- {
- if(LAST_IO_TIME.equals(name))
- {
- return _connection.getLastIoTime();
- }
- else if(SESSION_COUNT.equals(name))
- {
- return _connection.getSessionModels().size();
- }
- return super.getStatistic(name);
- }
- }
-
@Override
protected boolean setState(State currentState, State desiredState)
{
@@ -375,4 +341,40 @@ final class ConnectionAdapter extends AbstractConfiguredObject<ConnectionAdapter
{
throw new UnsupportedOperationException("Changing attributes on connection is not supported.");
}
+
+ @Override
+ public long getBytesIn()
+ {
+ return _connection.getDataReceiptStatistics().getTotal();
+ }
+
+ @Override
+ public long getBytesOut()
+ {
+ return _connection.getDataDeliveryStatistics().getTotal();
+ }
+
+ @Override
+ public long getMessagesIn()
+ {
+ return _connection.getMessageReceiptStatistics().getTotal();
+ }
+
+ @Override
+ public long getMessagesOut()
+ {
+ return _connection.getMessageDeliveryStatistics().getTotal();
+ }
+
+ @Override
+ public long getLastIoTime()
+ {
+ return _connection.getLastIoTime();
+ }
+
+ @Override
+ public int getSessionCount()
+ {
+ return _connection.getSessionModels().size();
+ }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
index 5150154c0a..a931624f30 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
@@ -22,11 +22,9 @@ package org.apache.qpid.server.model.adapter;
import java.util.Map;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.consumer.Consumer;
@@ -39,7 +37,6 @@ public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> i
private final Consumer _consumer;
private final QueueAdapter _queue;
private final SessionAdapter _session;
- private final ConsumerStatistics _statistics;
public ConsumerAdapter(final QueueAdapter queueAdapter, final SessionAdapter sessionAdapter,
final Consumer consumer)
@@ -52,7 +49,6 @@ public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> i
_consumer = consumer;
_queue = queueAdapter;
_session = sessionAdapter;
- _statistics = new ConsumerStatistics();
//TODO
}
@@ -108,7 +104,7 @@ public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> i
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(org.apache.qpid.server.model.Consumer.class);
+ return getAttributeNames(org.apache.qpid.server.model.Consumer.class);
}
@Override
@@ -161,11 +157,6 @@ public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> i
return super.getAttribute(name); //TODO
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
-
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
@@ -208,38 +199,28 @@ public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> i
return null;
}
- private class ConsumerStatistics implements Statistics
+ @Override
+ public long getBytesOut()
{
+ return _consumer.getBytesOut();
+ }
- public Collection<String> getStatisticNames()
- {
- return AVAILABLE_STATISTICS;
- }
+ @Override
+ public long getMessagesOut()
+ {
+ return _consumer.getMessagesOut();
+ }
- public Object getStatistic(String name)
- {
- if(name.equals(BYTES_OUT))
- {
- return _consumer.getBytesOut();
- }
- else if(name.equals(MESSAGES_OUT))
- {
- return _consumer.getMessagesOut();
- }
- else if(name.equals(STATE_CHANGED))
- {
-
- }
- else if(name.equals(UNACKNOWLEDGED_BYTES))
- {
- return _consumer.getUnacknowledgedBytes();
- }
- else if(name.equals(UNACKNOWLEDGED_MESSAGES))
- {
- return _consumer.getUnacknowledgedMessages();
- }
- return null; // TODO - Implement
- }
+ @Override
+ public long getUnacknowledgedBytes()
+ {
+ return _consumer.getUnacknowledgedBytes();
+ }
+
+ @Override
+ public long getUnacknowledgedMessages()
+ {
+ return _consumer.getUnacknowledgedMessages();
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
index 50a28678e8..b1f97a213b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
@@ -41,13 +41,11 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
private final Map<Binding, BindingAdapter> _bindingAdapters =
new HashMap<Binding, BindingAdapter>();
private VirtualHostAdapter _vhost;
- private final ExchangeStatistics _statistics;
public ExchangeAdapter(final VirtualHostAdapter virtualHostAdapter,
final org.apache.qpid.server.exchange.Exchange exchange)
{
super(exchange.getId(), virtualHostAdapter.getTaskExecutor());
- _statistics = new ExchangeStatistics();
_vhost = virtualHostAdapter;
_exchange = exchange;
addParent(org.apache.qpid.server.model.VirtualHost.class, virtualHostAdapter);
@@ -65,7 +63,7 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
{
if(!_bindingAdapters.containsKey(binding))
{
- QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getQueue());
+ QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getAMQQueue());
BindingAdapter adapter = new BindingAdapter(binding, this, queueAdapter);
_bindingAdapters.put(binding, adapter);
@@ -203,11 +201,6 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
return 0; //TODO
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
-
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
@@ -256,7 +249,7 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
{
if(!_bindingAdapters.containsKey(binding))
{
- QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getQueue());
+ QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getAMQQueue());
adapter = new BindingAdapter(binding, this, queueAdapter);
_bindingAdapters.put(binding,adapter);
queueAdapter.bindingRegistered(binding,adapter);
@@ -277,7 +270,7 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
}
if(adapter != null)
{
- QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getQueue());
+ QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getAMQQueue());
if(queueAdapter != null)
{
queueAdapter.bindingUnregistered(binding);
@@ -335,7 +328,7 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Exchange.class);
+ return getAttributeNames(Exchange.class);
}
@Override
@@ -367,46 +360,34 @@ final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> im
_vhost.getSecurityManager().authoriseUpdate(_exchange);
}
- private class ExchangeStatistics implements Statistics
+ @Override
+ public long getBindingCount()
{
+ return _exchange.getBindingCount();
+ }
- public Collection<String> getStatisticNames()
- {
- return AVAILABLE_STATISTICS;
- }
+ @Override
+ public long getBytesDropped()
+ {
+ return _exchange.getByteDrops();
+ }
- public Object getStatistic(String name)
- {
- if(BINDING_COUNT.equals(name))
- {
- return _exchange.getBindingCount();
- }
- else if(BYTES_DROPPED.equals(name))
- {
- return _exchange.getByteDrops();
- }
- else if(BYTES_IN.equals(name))
- {
- return _exchange.getByteReceives();
- }
- else if(MESSAGES_DROPPED.equals(name))
- {
- return _exchange.getMsgDrops();
- }
- else if(MESSAGES_IN.equals(name))
- {
- return _exchange.getMsgReceives();
- }
- else if(PRODUCER_COUNT.equals(name))
- {
+ @Override
+ public long getBytesIn()
+ {
+ return _exchange.getByteReceives();
+ }
- }
- else if(STATE_CHANGED.equals(name))
- {
+ @Override
+ public long getMessagesDropped()
+ {
+ return _exchange.getMsgDrops();
+ }
- }
- return null; // TODO - Implement
- }
+ @Override
+ public long getMessagesIn()
+ {
+ return _exchange.getMsgReceives();
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
index b0aae6af77..b6af07dea4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
@@ -31,7 +31,6 @@ import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.channels.OverlappingFileLockException;
import java.security.AccessControlException;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -93,7 +92,7 @@ public class FileSystemPreferencesProvider extends AbstractConfiguredObject<File
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(FileSystemPreferencesProvider.class);
+ return getAttributeNames(FileSystemPreferencesProvider.class);
}
@Override
@@ -159,12 +158,6 @@ public class FileSystemPreferencesProvider extends AbstractConfiguredObject<File
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
index 587840c00f..120e9a5123 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
@@ -49,7 +49,7 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
public GroupProviderAdapter(UUID id, Broker broker, GroupManager groupManager, Map<String, Object> attributes, Collection<String> attributeNames)
{
- super(id, null, null, broker.getTaskExecutor());
+ super(id, Collections.<String,Object>emptyMap(), Collections.<String,Object>emptyMap(), broker.getTaskExecutor());
if (groupManager == null)
{
@@ -77,7 +77,7 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes)
{
- List<String> attributesNames = new ArrayList<String>(Attribute.getAttributeNames(GroupProvider.class));
+ List<String> attributesNames = new ArrayList<String>(getAttributeNames(GroupProvider.class));
if (factoryAttributes != null)
{
attributesNames.addAll(factoryAttributes);
@@ -146,12 +146,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public Collection<String> getAttributeNames()
{
return _supportedAttributes;
@@ -427,12 +421,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(
Class<C> clazz)
{
@@ -479,7 +467,7 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Group.class);
+ return getAttributeNames(Group.class);
}
@Override
@@ -538,7 +526,7 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(GroupMember.class);
+ return getAttributeNames(GroupMember.class);
}
@Override
@@ -616,12 +604,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(
Class<C> clazz)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java
index 9a00e4db37..5b9e9c89f6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java
@@ -40,13 +40,11 @@ import javax.net.ssl.KeyManagerFactory;
import javax.security.auth.Subject;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.IntegrityViolationException;
import org.apache.qpid.server.model.KeyStore;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.security.*;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.util.MapValueConverter;
@@ -105,7 +103,7 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter<KeyStoreAdapter> im
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(KeyStore.class);
+ return getAttributeNames(KeyStore.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NoStatistics.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NoStatistics.java
deleted file mode 100644
index 03fdbd1e85..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NoStatistics.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.server.model.adapter;
-
-import org.apache.qpid.server.model.Statistics;
-
-import java.util.Collection;
-import java.util.Collections;
-
-public class NoStatistics implements Statistics
-{
- private static final NoStatistics INSTANCE = new NoStatistics();
-
- private NoStatistics()
- {
- }
-
- public Collection<String> getStatisticNames()
- {
- return Collections.emptyList();
- }
-
- public Object getStatistic(String name)
- {
- return null;
- }
-
- public static NoStatistics getInstance()
- {
- return INSTANCE;
- }
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
index c1d501b5ad..6e97d735ea 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
@@ -226,12 +226,6 @@ abstract public class PortAdapter<X extends PortAdapter<X>> extends AbstractConf
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
if(clazz == Connection.class)
@@ -279,7 +273,7 @@ abstract public class PortAdapter<X extends PortAdapter<X>> extends AbstractConf
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Port.class);
+ return getAttributeNames(Port.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
index 80da77fe5f..c08ccd0839 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
@@ -65,7 +65,6 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredOb
private final VirtualHostAdapter _vhost;
- private QueueStatisticsAdapter _statistics;
private QueueNotificationListener _queueNotificationListener;
public QueueAdapter(final VirtualHostAdapter virtualHostAdapter, final AMQQueue<?,Q,?> queue)
@@ -77,7 +76,6 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredOb
_queue = queue;
_queue.addConsumerRegistrationListener(this);
populateConsumers();
- _statistics = new QueueStatisticsAdapter(queue);
_queue.setNotificationListener(this);
}
@@ -333,7 +331,7 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredOb
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Queue.class);
+ return getAttributeNames(Queue.class);
}
@Override
@@ -608,10 +606,6 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredOb
return super.getAttribute(name);
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
@@ -748,101 +742,121 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredOb
}
- private static class QueueStatisticsAdapter implements Statistics
+ @Override
+ public long getBytesIn()
{
+ return _queue.getTotalEnqueueSize();
+ }
- private final AMQQueue _queue;
+ @Override
+ public long getBytesOut()
+ {
+ return _queue.getTotalDequeueSize();
+ }
- public QueueStatisticsAdapter(AMQQueue queue)
- {
- _queue = queue;
- }
+ @Override
+ public long getMessagesIn()
+ {
+ return _queue.getTotalEnqueueCount();
+ }
- public Collection<String> getStatisticNames()
- {
- return Queue.AVAILABLE_STATISTICS;
- }
+ @Override
+ public long getMessagesOut()
+ {
+ return _queue.getTotalDequeueCount();
+ }
+ @Override
+ public long getBindingCount()
+ {
+ return _queue.getBindingCount();
+ }
- public Object getStatistic(String name)
- {
- if(BINDING_COUNT.equals(name))
- {
- return _queue.getBindingCount();
- }
- else if(CONSUMER_COUNT.equals(name))
- {
- return _queue.getConsumerCount();
- }
- else if(CONSUMER_COUNT_WITH_CREDIT.equals(name))
- {
- return _queue.getActiveConsumerCount();
- }
- else if(DISCARDS_TTL_BYTES.equals(name))
- {
- return null; // TODO
- }
- else if(DISCARDS_TTL_MESSAGES.equals(name))
- {
- return null; // TODO
- }
- else if(PERSISTENT_DEQUEUED_BYTES.equals(name))
- {
- return _queue.getPersistentByteDequeues();
- }
- else if(PERSISTENT_DEQUEUED_MESSAGES.equals(name))
- {
- return _queue.getPersistentMsgDequeues();
- }
- else if(PERSISTENT_ENQUEUED_BYTES.equals(name))
- {
- return _queue.getPersistentByteEnqueues();
- }
- else if(PERSISTENT_ENQUEUED_MESSAGES.equals(name))
- {
- return _queue.getPersistentMsgEnqueues();
- }
- else if(QUEUE_DEPTH_BYTES.equals(name))
- {
- return _queue.getQueueDepth();
- }
- else if(QUEUE_DEPTH_MESSAGES.equals(name))
- {
- return _queue.getMessageCount();
- }
- else if(STATE_CHANGED.equals(name))
- {
- return null; // TODO
- }
- else if(TOTAL_DEQUEUED_BYTES.equals(name))
- {
- return _queue.getTotalDequeueSize();
- }
- else if(TOTAL_DEQUEUED_MESSAGES.equals(name))
- {
- return _queue.getTotalDequeueCount();
- }
- else if(TOTAL_ENQUEUED_BYTES.equals(name))
- {
- return _queue.getTotalEnqueueSize();
- }
- else if(TOTAL_ENQUEUED_MESSAGES.equals(name))
- {
- return _queue.getTotalEnqueueCount();
- }
- else if(UNACKNOWLEDGED_BYTES.equals(name))
- {
- return _queue.getUnackedMessageBytes();
- }
- else if(UNACKNOWLEDGED_MESSAGES.equals(name))
- {
- return _queue.getUnackedMessageCount();
- }
+ @Override
+ public long getConsumerCount()
+ {
+ return _queue.getConsumerCount();
+ }
- return null;
- }
+ @Override
+ public long getConsumerCountWithCredit()
+ {
+ return _queue.getActiveConsumerCount();
+ }
+
+ @Override
+ public long getPersistentDequeuedBytes()
+ {
+ return _queue.getPersistentByteDequeues();
+ }
+
+ @Override
+ public long getPersistentDequeuedMessages()
+ {
+ return _queue.getPersistentMsgDequeues();
+ }
+
+ @Override
+ public long getPersistentEnqueuedBytes()
+ {
+ return _queue.getPersistentByteEnqueues();
+ }
+
+ @Override
+ public long getPersistentEnqueuedMessages()
+ {
+ return _queue.getPersistentMsgEnqueues();
+ }
+
+ @Override
+ public long getQueueDepthBytes()
+ {
+ return _queue.getQueueDepth();
+ }
+
+ @Override
+ public long getQueueDepthMessages()
+ {
+ return _queue.getMessageCount();
+ }
+
+ @Override
+ public long getTotalDequeuedBytes()
+ {
+ return _queue.getTotalDequeueSize();
+ }
+
+ @Override
+ public long getTotalDequeuedMessages()
+ {
+ return _queue.getTotalDequeueCount();
+ }
+
+ @Override
+ public long getTotalEnqueuedBytes()
+ {
+ return _queue.getTotalEnqueueSize();
+ }
+
+ @Override
+ public long getTotalEnqueuedMessages()
+ {
+ return _queue.getTotalEnqueueCount();
+ }
+
+ @Override
+ public long getUnacknowledgedBytes()
+ {
+ return _queue.getUnackedMessageBytes();
}
@Override
+ public long getUnacknowledgedMessages()
+ {
+ return _queue.getUnackedMessageCount();
+ }
+
+
+ @Override
public void setNotificationListener(QueueNotificationListener listener)
{
_queueNotificationListener = listener;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
index 0e14709b83..7ddcb047f5 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
@@ -25,7 +25,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
@@ -40,14 +39,12 @@ final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> impl
private AMQSessionModel _session;
- private SessionStatistics _statistics;
private Map<Consumer, ConsumerAdapter> _consumerAdapters = new HashMap<Consumer, ConsumerAdapter>();
public SessionAdapter(final AMQSessionModel session, TaskExecutor taskExecutor)
{
super(UUIDGenerator.generateRandomUUID(), taskExecutor);
_session = session;
- _statistics = new SessionStatistics();
}
@Override
@@ -158,7 +155,7 @@ final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> impl
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(Session.class);
+ return getAttributeNames(Session.class);
}
@Override
@@ -183,11 +180,6 @@ final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> impl
return super.getAttribute(name); //TODO - Implement
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
-
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
@@ -211,68 +203,38 @@ final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> impl
throw new UnsupportedOperationException();
}
- private class SessionStatistics implements Statistics
+ @Override
+ public long getConsumerCount()
{
+ return _session.getConsumerCount();
+ }
- public SessionStatistics()
- {
- }
+ @Override
+ public long getLocalTransactionBegins()
+ {
+ return _session.getTxnStart();
+ }
- public Collection<String> getStatisticNames()
- {
- return AVAILABLE_STATISTICS;
- }
+ @Override
+ public int getLocalTransactionOpen()
+ {
+ long open = _session.getTxnStart() - (_session.getTxnCommits() + _session.getTxnRejects());
+ return (open > 0l) ? 1 : 0;
+ }
- public Object getStatistic(String name)
- {
- if(name.equals(BYTES_IN))
- {
- }
- else if(name.equals(BYTES_OUT))
- {
- }
- else if(name.equals(CONSUMER_COUNT))
- {
- return _session.getConsumerCount();
- }
- else if(name.equals(LOCAL_TRANSACTION_BEGINS))
- {
- return _session.getTxnStart();
- }
- else if(name.equals(LOCAL_TRANSACTION_OPEN))
- {
- long open = _session.getTxnStart() - (_session.getTxnCommits() + _session.getTxnRejects());
- return (Boolean) (open > 0l);
- }
- else if(name.equals(LOCAL_TRANSACTION_ROLLBACKS))
- {
- return _session.getTxnRejects();
- }
- else if(name.equals(STATE_CHANGED))
- {
- }
- else if(name.equals(UNACKNOWLEDGED_BYTES))
- {
- }
- else if(name.equals(UNACKNOWLEDGED_MESSAGES))
- {
- return _session.getUnacknowledgedMessageCount();
- }
- else if(name.equals(XA_TRANSACTION_BRANCH_ENDS))
- {
- }
- else if(name.equals(XA_TRANSACTION_BRANCH_STARTS))
- {
- }
- else if(name.equals(XA_TRANSACTION_BRANCH_SUSPENDS))
- {
-
- }
-
- return null; // TODO - Implement
- }
+ @Override
+ public long getLocalTransactionRollbacks()
+ {
+ return _session.getTxnRejects();
+ }
+
+ @Override
+ public long getUnacknowledgedMessages()
+ {
+ return _session.getUnacknowledgedMessageCount();
}
+
@Override
protected boolean setState(State currentState, State desiredState)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java
deleted file mode 100644
index 28c46a0339..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StatisticsAdapter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.server.model.adapter;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.qpid.server.model.Statistics;
-import org.apache.qpid.server.stats.StatisticsCounter;
-import org.apache.qpid.server.stats.StatisticsGatherer;
-
-class StatisticsAdapter implements Statistics
-{
-
- private final Map<String, StatisticsCounter> _statistics =
- new HashMap<String, StatisticsCounter>();
-
-
- 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 statGatherer)
- {
- _statistics.put(BYTES_OUT, statGatherer.getDataDeliveryStatistics());
- _statistics.put(BYTES_IN, statGatherer.getDataReceiptStatistics());
- _statistics.put(MESSAGES_OUT, statGatherer.getMessageDeliveryStatistics());
- _statistics.put(MESSAGES_IN, statGatherer.getMessageReceiptStatistics());
- }
-
-
- public Collection<String> getStatisticNames()
- {
- return STATISTIC_NAMES;
- }
-
- public Object getStatistic(String name)
- {
- StatisticsCounter counter = _statistics.get(name);
- return counter == null ? null : counter.getTotal();
-
- }
-
-
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java
index 5b03ab051a..c1e9c1de0e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java
@@ -41,14 +41,12 @@ import javax.net.ssl.X509TrustManager;
import javax.security.auth.Subject;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.IntegrityViolationException;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.TrustStore;
-import org.apache.qpid.server.security.*;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.security.auth.manager.SimpleLDAPAuthenticationManagerFactory;
@@ -102,7 +100,7 @@ public class TrustStoreAdapter extends AbstractKeyStoreAdapter<TrustStoreAdapter
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(TrustStore.class);
+ return getAttributeNames(TrustStore.class);
}
@Override
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
index 6f51f0c2cc..0761e31935 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
@@ -91,7 +91,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
private final Map<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter> _exchangeAdapters =
new HashMap<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter>();
- private StatisticsAdapter _statistics;
private final Broker<?> _broker;
private final List<VirtualHostAlias> _aliases = new ArrayList<VirtualHostAlias>();
private StatisticsGatherer _brokerStatisticsGatherer;
@@ -511,11 +510,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
throw new IllegalStateException();
}
- public Statistics getStatistics()
- {
- return _statistics;
- }
-
@Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
@@ -909,7 +903,7 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(VirtualHost.class);
+ return getAttributeNames(VirtualHost.class);
}
private void checkVHostStateIsActive()
@@ -1053,49 +1047,46 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
return (String) getAttribute(CONFIG_PATH);
}
- private static class VirtualHostStatisticsAdapter extends StatisticsAdapter
+ @Override
+ public long getQueueCount()
{
- private final org.apache.qpid.server.virtualhost.VirtualHost _vhost;
+ return _virtualHost.getQueues().size();
+ }
- private static final Collection<String> VHOST_STATS = Arrays.asList(
- VirtualHost.QUEUE_COUNT,
- VirtualHost.EXCHANGE_COUNT,
- VirtualHost.CONNECTION_COUNT);
+ @Override
+ public long getExchangeCount()
+ {
+ return _virtualHost.getExchanges().size();
+ }
- public VirtualHostStatisticsAdapter(org.apache.qpid.server.virtualhost.VirtualHost virtualHost)
- {
- super(virtualHost);
- _vhost = virtualHost;
- }
+ @Override
+ public long getConnectionCount()
+ {
+ return _virtualHost.getConnectionRegistry().getConnections().size();
+ }
- @Override
- public Collection<String> getStatisticNames()
- {
- Set<String> stats = new HashSet<String>(super.getStatisticNames());
- stats.addAll(VHOST_STATS);
- return stats;
- }
+ @Override
+ public long getBytesIn()
+ {
+ return _virtualHost.getDataReceiptStatistics().getTotal();
+ }
- @Override
- public Object getStatistic(String name)
- {
- if(VirtualHost.QUEUE_COUNT.equals(name))
- {
- return _vhost.getQueues().size();
- }
- else if(VirtualHost.EXCHANGE_COUNT.equals(name))
- {
- return _vhost.getExchanges().size();
- }
- else if(VirtualHost.CONNECTION_COUNT.equals(name))
- {
- return _vhost.getConnectionRegistry().getConnections().size();
- }
- else
- {
- return super.getStatistic(name);
- }
- }
+ @Override
+ public long getBytesOut()
+ {
+ return _virtualHost.getDataDeliveryStatistics().getTotal();
+ }
+
+ @Override
+ public long getMessagesIn()
+ {
+ return _virtualHost.getMessageReceiptStatistics().getTotal();
+ }
+
+ @Override
+ public long getMessagesOut()
+ {
+ return _virtualHost.getMessageDeliveryStatistics().getTotal();
}
@@ -1202,7 +1193,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
virtualHostRegistry.registerVirtualHost(_virtualHost);
- _statistics = new VirtualHostStatisticsAdapter(_virtualHost);
_virtualHost.addVirtualHostListener(this);
populateQueues();
populateExchanges();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
index 43ae1d0c44..61e64d4ca3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
@@ -27,7 +27,6 @@ import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostAlias;
@@ -124,12 +123,6 @@ public class VirtualHostAliasAdapter extends AbstractConfiguredObject<VirtualHos
}
@Override
- public Statistics getStatistics()
- {
- return NoStatistics.getInstance();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
index 5dc8bb9077..1ee726c455 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
@@ -254,8 +254,8 @@ public class SecurityManager implements ConfigurationChangeListener
public void authoriseCreateBinding(Binding binding)
{
- final Exchange exch = binding.getExchange();
- final AMQQueue queue = binding.getQueue();
+ final Exchange exch = binding.getExchangeImpl();
+ final AMQQueue queue = binding.getAMQQueue();
final String bindingKey = binding.getBindingKey();
boolean allowed =
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
index 096734ff73..c4ee5819ac 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
@@ -34,7 +34,6 @@ import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.util.ServerScopedRuntimeException;
public class DurableConfigurationStoreHelper
{
@@ -111,8 +110,8 @@ public class DurableConfigurationStoreHelper
{
Map<String, Object> attributesMap = new HashMap<String, Object>();
attributesMap.put(Binding.NAME, binding.getBindingKey());
- attributesMap.put(Binding.EXCHANGE, binding.getExchange().getId());
- attributesMap.put(Binding.QUEUE, binding.getQueue().getId());
+ attributesMap.put(Binding.EXCHANGE, binding.getExchangeImpl().getId());
+ attributesMap.put(Binding.QUEUE, binding.getAMQQueue().getId());
Map<String, Object> arguments = binding.getArguments();
if (arguments != null)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java
index 60c7b2c7d9..77ca1b1d4e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java
@@ -113,6 +113,7 @@ public class QueueRecoverer extends AbstractDurableConfiguredObjectRecoverer<AMQ
{
Map<String, Object> attributes = new LinkedHashMap<String, Object>(_attributes);
attributes.put(Queue.ID, _id);
+ attributes.put(Queue.DURABLE, true);
_queue = _queueFactory.restoreQueue(attributes);
}
return _queue;
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
index 5a4db7a2bf..5b4950c5ba 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
@@ -141,7 +141,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
assertEquals("Wrong exchange bound", _routingKey,
_queue.getBindings().get(0).getBindingKey());
assertEquals("Wrong exchange bound", _exchange,
- _queue.getBindings().get(0).getExchange());
+ _queue.getBindings().get(0).getExchangeImpl());
_exchange.getBinding(_routingKey, _queue).delete();
assertFalse("Routing key was still bound",
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
index 9dfd8833aa..5a808c87d8 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
@@ -216,7 +216,7 @@ public class StandardVirtualHostTest extends QpidTestCase
boolean foundPing = false;
for (Binding binding : bindings)
{
- String qn = binding.getQueue().getName();
+ String qn = binding.getAMQQueue().getName();
assertEquals("Unexpected queue name", getName(), qn);
Map<String, Object> arguments = binding.getArguments();
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
index be6eba3a72..94120371fb 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
@@ -224,8 +224,8 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
List<Binding> bindingsToRemove = new ArrayList<Binding>();
for(Binding existingBinding : bindings)
{
- if(existingBinding.getExchange() != _vhost.getDefaultExchange()
- && existingBinding.getExchange() != exchange)
+ if(existingBinding.getExchangeImpl() != _vhost.getDefaultExchange()
+ && existingBinding.getExchangeImpl() != exchange)
{
bindingsToRemove.add(existingBinding);
}
diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
index 9c9e2a011f..c163bfa238 100644
--- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
+++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
@@ -33,11 +33,11 @@ import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.message.internal.InternalMessage;
import org.apache.qpid.server.message.internal.InternalMessageHeader;
import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.ConfigurationChangeListener;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.plugin.MessageConverter;
import org.apache.qpid.server.plugin.SystemNodeCreator;
import org.apache.qpid.server.protocol.AMQSessionModel;
@@ -215,7 +215,8 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
}
}
managedEntityType = new ManagedEntityType(clazz.getName(), parentSet.toArray(new ManagedEntityType[parentSet.size()]),
- (String[])(Attribute.getAttributeNames(clazz).toArray(new String[0])),
+ (String[])(AbstractConfiguredObject.getAttributeNames(
+ clazz).toArray(new String[0])),
opsList.toArray(new String[opsList.size()]));
_entityTypes.put(clazz.getName(),managedEntityType);
_entities.put(managedEntityType, Collections.synchronizedMap(new LinkedHashMap<String, ConfiguredObject>()));
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
index 14196310a5..047cdfc29b 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
@@ -430,7 +430,7 @@ public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implem
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(HttpManagement.class);
+ return getAttributeNames(HttpManagement.class);
}
@Override
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
index 0d5d868af2..2cf7f3f80c 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
@@ -21,14 +21,12 @@ package org.apache.qpid.server.management.plugin.servlet.rest;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
-import org.apache.qpid.server.model.Statistics;
public class ConfiguredObjectToMapConverter
{
@@ -81,25 +79,14 @@ public class ConfiguredObjectToMapConverter
private void incorporateStatisticsIntoMap(
final ConfiguredObject confObject, Map<String, Object> object)
{
- Statistics statistics = confObject.getStatistics();
- Map<String, Object> statMap = new HashMap<String, Object>();
- if (statistics != null)
- {
- for(String name : statistics.getStatisticNames())
- {
- Object value = statistics.getStatistic(name);
- if(value != null)
- {
- statMap.put(name, value);
- }
- }
+ Map<String, Object> statMap = confObject.getStatistics();
- if(!statMap.isEmpty())
- {
- object.put(STATISTICS_MAP_KEY, statMap);
- }
+ if(!statMap.isEmpty())
+ {
+ object.put(STATISTICS_MAP_KEY, statMap);
}
+
}
private void incorporateChildrenIntoMap(
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
index fa7fb06077..d28338b354 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
@@ -106,7 +106,7 @@ public class MessageServlet extends AbstractServlet
response.setContentType("application/json");
final List<Map<String, Object>> messages = messageCollector.getMessages();
- int queueSize = ((Number) queue.getStatistics().getStatistic(Queue.QUEUE_DEPTH_MESSAGES)).intValue();
+ int queueSize = (int) queue.getQueueDepthMessages();
String min = messages.isEmpty() ? "0" : messages.get(0).get("position").toString();
String max = messages.isEmpty() ? "0" : messages.get(messages.size()-1).get("position").toString();
response.setHeader("Content-Range", (min + "-" + max + "/" + queueSize));
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java
index 8e5c5e1c10..0c2b6a5385 100644
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java
+++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java
@@ -25,6 +25,7 @@ import static org.apache.qpid.server.management.plugin.servlet.rest.ConfiguredOb
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -32,7 +33,6 @@ import junit.framework.TestCase;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
-import org.apache.qpid.server.model.Statistics;
public class ConfiguredObjectToMapConverterTest extends TestCase
{
@@ -50,8 +50,7 @@ public class ConfiguredObjectToMapConverterTest extends TestCase
final String statisticName = "statisticName";
final int statisticValue = 10;
- Statistics mockStatistics = createMockStatistics(statisticName, statisticValue);
- when(_configuredObject.getStatistics()).thenReturn(mockStatistics);
+ when(_configuredObject.getStatistics()).thenReturn(Collections.singletonMap(statisticName, (Number) statisticValue));
Map<String, Object> resultMap = _converter.convertObjectToMap(_configuredObject, ConfiguredObject.class, 0);
Map<String, Object> statsAsMap = (Map<String, Object>) resultMap.get(STATISTICS_MAP_KEY);
@@ -127,14 +126,6 @@ public class ConfiguredObjectToMapConverterTest extends TestCase
when(mockConfiguredObject.getAttribute(attributeName)).thenReturn(attributeValue);
}
- private Statistics createMockStatistics(String statName, int statValue)
- {
- Statistics mockStatistics = mock(Statistics.class);
- when(mockStatistics.getStatisticNames()).thenReturn(Arrays.asList(statName));
- when(mockStatistics.getStatistic(statName)).thenReturn(statValue);
- return mockStatistics;
- }
-
private static interface TestChild extends ConfiguredObject
{
}
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java
index cb3cde8259..b1999b1292 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java
@@ -24,9 +24,7 @@ package org.apache.qpid.server.jmx;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.UUID;
@@ -320,7 +318,7 @@ public class JMXManagement extends AbstractPluginAdapter<JMXManagement> implemen
@Override
public Collection<String> getAttributeNames()
{
- return Attribute.getAttributeNames(JMXManagement.class);
+ return getAttributeNames(JMXManagement.class);
}
@Override
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
index 6ab7db3629..6223d9d906 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/AbstractStatisticsGatheringMBean.java
@@ -66,10 +66,10 @@ abstract class AbstractStatisticsGatheringMBean<T extends ConfiguredObject> exte
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);
+ long messagesReceived = getMessagesIn();
+ long messagesSent = getMessagesOut();
+ long bytesReceived = getBytesIn();
+ long bytesSent = getBytesOut();
double messageReceivedRate = (double)(messagesReceived - _lastMessagesReceived) / (double)period;
double messageSentRate = (double)(messagesSent - _lastMessagesSent) / (double)period;
@@ -109,10 +109,13 @@ abstract class AbstractStatisticsGatheringMBean<T extends ConfiguredObject> exte
}
}
- private long getStatistic(String name)
- {
- return (Long) getConfiguredObject().getStatistics().getStatistic(name);
- }
+ protected abstract long getBytesOut();
+
+ protected abstract long getBytesIn();
+
+ protected abstract long getMessagesOut();
+
+ protected abstract long getMessagesIn();
public synchronized void resetStatistics() throws Exception
{
@@ -147,13 +150,13 @@ abstract class AbstractStatisticsGatheringMBean<T extends ConfiguredObject> exte
public synchronized long getTotalMessagesDelivered()
{
updateStats();
- return getStatistic(Connection.MESSAGES_OUT);
+ return getMessagesOut();
}
public synchronized long getTotalDataDelivered()
{
updateStats();
- return getStatistic(Connection.BYTES_OUT);
+ return getBytesOut();
}
protected final T getConfiguredObject()
@@ -188,13 +191,13 @@ abstract class AbstractStatisticsGatheringMBean<T extends ConfiguredObject> exte
public synchronized long getTotalMessagesReceived()
{
updateStats();
- return getStatistic(Connection.MESSAGES_IN);
+ return getMessagesIn();
}
public synchronized long getTotalDataReceived()
{
updateStats();
- return getStatistic(Connection.BYTES_IN);
+ return getBytesIn();
}
}
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
index 34366a196c..a016ff9d9d 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBean.java
@@ -39,7 +39,6 @@ import org.apache.qpid.management.common.mbeans.ManagedConnection;
import org.apache.qpid.server.jmx.ManagedObject;
import org.apache.qpid.server.model.Connection;
import org.apache.qpid.server.model.Session;
-import org.apache.qpid.server.model.Statistics;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
public class ConnectionMBean extends AbstractStatisticsGatheringMBean<Connection> implements ManagedConnection
@@ -75,6 +74,30 @@ public class ConnectionMBean extends AbstractStatisticsGatheringMBean<Connection
register();
}
+ @Override
+ protected long getBytesOut()
+ {
+ return getConfiguredObject().getBytesOut();
+ }
+
+ @Override
+ protected long getBytesIn()
+ {
+ return getConfiguredObject().getBytesIn();
+ }
+
+ @Override
+ protected long getMessagesOut()
+ {
+ return getConfiguredObject().getMessagesOut();
+ }
+
+ @Override
+ protected long getMessagesIn()
+ {
+ return getConfiguredObject().getMessagesIn();
+ }
+
public String getObjectInstanceName()
{
return ObjectName.quote(getRemoteAddress());
@@ -108,8 +131,7 @@ public class ConnectionMBean extends AbstractStatisticsGatheringMBean<Connection
public Date getLastIoTime()
{
- Long lastIo = (Long) getConfiguredObject().getStatistics().getStatistic(Connection.LAST_IO_TIME);
- return new Date(lastIo);
+ return new Date(getConfiguredObject().getLastIoTime());
}
public Long getMaximumNumberOfChannels()
@@ -124,10 +146,10 @@ public class ConnectionMBean extends AbstractStatisticsGatheringMBean<Connection
for (Session session : list)
{
- Statistics statistics = session.getStatistics();
- Long txnBegins = (Long) statistics.getStatistic(Session.LOCAL_TRANSACTION_BEGINS);
+
+ Long txnBegins = session.getLocalTransactionBegins();
Integer channelId = (Integer) session.getAttribute(Session.CHANNEL_ID);
- int unacknowledgedSize = ((Number) statistics.getStatistic(Session.UNACKNOWLEDGED_MESSAGES)).intValue();
+ int unacknowledgedSize = (int) session.getUnacknowledgedMessages();
boolean blocked = (Boolean) session.getAttribute(Session.PRODUCER_FLOW_BLOCKED);
boolean isTransactional = (txnBegins>0l);
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java
index 67abe77e1f..4775650954 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java
@@ -149,7 +149,7 @@ public class QueueMBean extends AMQManagedObject implements ManagedQueue, QueueN
public Integer getMessageCount()
{
- return getStatisticValue(Queue.QUEUE_DEPTH_MESSAGES).intValue();
+ return (int) _queue.getQueueDepthMessages();
}
public Integer getMaximumDeliveryCount()
@@ -159,22 +159,22 @@ public class QueueMBean extends AMQManagedObject implements ManagedQueue, QueueN
public Long getReceivedMessageCount()
{
- return getStatisticValue(Queue.TOTAL_ENQUEUED_MESSAGES).longValue();
+ return _queue.getTotalEnqueuedMessages();
}
public Long getQueueDepth()
{
- return getStatisticValue(Queue.QUEUE_DEPTH_BYTES).longValue();
+ return _queue.getQueueDepthBytes();
}
public Integer getActiveConsumerCount()
{
- return getStatisticValue(Queue.CONSUMER_COUNT_WITH_CREDIT).intValue();
+ return (int) _queue.getConsumerCountWithCredit();
}
public Integer getConsumerCount()
{
- return getStatisticValue(Queue.CONSUMER_COUNT).intValue();
+ return (int) _queue.getConsumerCount();
}
public String getOwner()
@@ -676,12 +676,6 @@ public class QueueMBean extends AMQManagedObject implements ManagedQueue, QueueN
_queue.setAttribute(Queue.DESCRIPTION, getDescription(), description);
}
- private Number getStatisticValue(String name)
- {
- final Number statistic = (Number) _queue.getStatistics().getStatistic(name);
- return statistic == null ? Integer.valueOf(0) : statistic;
- }
-
@Override
public String getMessageGroupKey()
{
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBean.java
index 67d5861dec..75a395bef5 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBean.java
@@ -45,6 +45,30 @@ public class ServerInformationMBean extends AbstractStatisticsGatheringMBean<Bro
}
@Override
+ protected long getBytesOut()
+ {
+ return getConfiguredObject().getBytesOut();
+ }
+
+ @Override
+ protected long getBytesIn()
+ {
+ return getConfiguredObject().getBytesIn();
+ }
+
+ @Override
+ protected long getMessagesOut()
+ {
+ return getConfiguredObject().getMessagesOut();
+ }
+
+ @Override
+ protected long getMessagesIn()
+ {
+ return getConfiguredObject().getMessagesIn();
+ }
+
+ @Override
public String getObjectInstanceName()
{
return ServerInformation.TYPE;
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
index c39c3f74e9..88d68cff9a 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
@@ -67,6 +67,29 @@ public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean<Vi
register();
}
+ @Override
+ protected long getBytesOut()
+ {
+ return getConfiguredObject().getBytesOut();
+ }
+
+ @Override
+ protected long getBytesIn()
+ {
+ return getConfiguredObject().getBytesIn();
+ }
+
+ @Override
+ protected long getMessagesOut()
+ {
+ return getConfiguredObject().getMessagesOut();
+ }
+
+ @Override
+ protected long getMessagesIn()
+ {
+ return getConfiguredObject().getMessagesIn();
+ }
@Override
public String getObjectInstanceName()
diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBeanTest.java
index 0c5fb0bf1f..8754f9a465 100644
--- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBeanTest.java
+++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ConnectionMBeanTest.java
@@ -36,7 +36,6 @@ import org.apache.qpid.server.jmx.ManagedObject;
import org.apache.qpid.server.jmx.ManagedObjectRegistry;
import org.apache.qpid.server.model.Connection;
import org.apache.qpid.server.model.Session;
-import org.apache.qpid.server.model.Statistics;
public class ConnectionMBeanTest extends TestCase
{
@@ -189,9 +188,8 @@ public class ConnectionMBeanTest extends TestCase
public void testGetLastIoTime()
{
- Statistics mockStatistics = mock(Statistics.class);
- when(_mockConnection.getStatistics()).thenReturn(mockStatistics);
- when(mockStatistics.getStatistic(Connection.LAST_IO_TIME)).thenReturn(1L);
+ when(_mockConnection.getLastIoTime()).thenReturn(1l);
+
Object actualValue = _connectionMBean.getLastIoTime();
assertEquals("Unexpected lastIoTime", new Date(1L), actualValue);
@@ -225,11 +223,10 @@ public class ConnectionMBeanTest extends TestCase
private Session createMockedSession(int channelId, int unacknowledgedMessages, long localTransactionBegins, boolean blocked)
{
Session mockSession = mock(Session.class);
- Statistics mockSessionStatistics = mock(Statistics.class);
- when(mockSessionStatistics.getStatistic(Session.LOCAL_TRANSACTION_BEGINS)).thenReturn(localTransactionBegins);
- when(mockSessionStatistics.getStatistic(Session.UNACKNOWLEDGED_MESSAGES)).thenReturn(unacknowledgedMessages);
+ when(mockSession.getLocalTransactionBegins()).thenReturn(localTransactionBegins);
+ when(mockSession.getUnacknowledgedMessages()).thenReturn((long)unacknowledgedMessages);
- when(mockSession.getStatistics()).thenReturn(mockSessionStatistics);
+ when(mockSession.getStatistics()).thenReturn(Collections.emptyMap());
when(mockSession.getAttribute(Session.CHANNEL_ID)).thenReturn(channelId);
when(mockSession.getAttribute(Session.PRODUCER_FLOW_BLOCKED)).thenReturn(blocked);
return mockSession;
diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
index 2874168ddf..4a88884bf8 100644
--- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
+++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
@@ -43,7 +43,6 @@ import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.model.Statistics;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.queue.NotificationCheck;
import org.apache.qpid.server.queue.QueueEntry;
@@ -61,7 +60,6 @@ public class QueueMBeanTest extends QpidTestCase
private static final String QUEUE_ALTERNATE_EXCHANGE = "QUEUE_ALTERNATE_EXCHANGE";
private Queue _mockQueue;
- private Statistics _mockQueueStatistics;
private VirtualHostMBean _mockVirtualHostMBean;
private ManagedObjectRegistry _mockManagedObjectRegistry;
private QueueMBean _queueMBean;
@@ -71,9 +69,7 @@ public class QueueMBeanTest extends QpidTestCase
{
super.setUp();
_mockQueue = mock(Queue.class);
- _mockQueueStatistics = mock(Statistics.class);
when(_mockQueue.getName()).thenReturn(QUEUE_NAME);
- when(_mockQueue.getStatistics()).thenReturn(_mockQueueStatistics);
_mockVirtualHostMBean = mock(VirtualHostMBean.class);
_mockManagedObjectRegistry = mock(ManagedObjectRegistry.class);
@@ -91,27 +87,32 @@ public class QueueMBeanTest extends QpidTestCase
public void testGetMessageCount() throws Exception
{
- assertStatistic("messageCount", 1000, Queue.QUEUE_DEPTH_MESSAGES);
+ when(_mockQueue.getQueueDepthMessages()).thenReturn(1000l);
+ assertStatistic("messageCount", 1000);
}
public void testGetReceivedMessageCount() throws Exception
{
- assertStatistic("receivedMessageCount", 1000l, Queue.TOTAL_ENQUEUED_MESSAGES);
+ when(_mockQueue.getTotalEnqueuedMessages()).thenReturn(1000l);
+ assertStatistic("receivedMessageCount", 1000l);
}
public void testQueueDepth() throws Exception
{
- assertStatistic("queueDepth", 4096l, Queue.QUEUE_DEPTH_BYTES);
+ when(_mockQueue.getQueueDepthBytes()).thenReturn(4096l);
+ assertStatistic("queueDepth", 4096l);
}
public void testActiveConsumerCount() throws Exception
{
- assertStatistic("activeConsumerCount", 3, Queue.CONSUMER_COUNT_WITH_CREDIT);
+ when(_mockQueue.getConsumerCountWithCredit()).thenReturn(3l);
+ assertStatistic("activeConsumerCount", 3);
}
public void testConsumerCount() throws Exception
{
- assertStatistic("consumerCount", 3, Queue.CONSUMER_COUNT);
+ when(_mockQueue.getConsumerCount()).thenReturn(3l);
+ assertStatistic("consumerCount", 3);
}
/********** Simple Attributes **********/
@@ -364,9 +365,8 @@ public class QueueMBeanTest extends QpidTestCase
});
}
- private void assertStatistic(String jmxAttributeName, Object expectedValue, String underlyingAttributeName) throws Exception
+ private void assertStatistic(String jmxAttributeName, Object expectedValue) throws Exception
{
- when(_mockQueueStatistics.getStatistic(underlyingAttributeName)).thenReturn(expectedValue);
MBeanTestUtils.assertMBeanAttribute(_queueMBean, jmxAttributeName, expectedValue);
}
diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBeanTest.java
index 86eab0245e..d83f2b98b5 100644
--- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBeanTest.java
+++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ServerInformationMBeanTest.java
@@ -25,8 +25,6 @@ import static org.mockito.Mockito.when;
import org.apache.qpid.server.jmx.ManagedObjectRegistry;
import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.Connection;
-import org.apache.qpid.server.model.Statistics;
import junit.framework.TestCase;
@@ -34,7 +32,6 @@ public class ServerInformationMBeanTest extends TestCase
{
private ManagedObjectRegistry _mockManagedObjectRegistry;
private Broker _mockBroker;
- private Statistics _mockBrokerStatistics;
private ServerInformationMBean _mbean;
@Override
@@ -42,8 +39,6 @@ public class ServerInformationMBeanTest extends TestCase
{
_mockManagedObjectRegistry = mock(ManagedObjectRegistry.class);
_mockBroker = mock(Broker.class);
- _mockBrokerStatistics = mock(Statistics.class);
- when(_mockBroker.getStatistics()).thenReturn(_mockBrokerStatistics);
_mbean = new ServerInformationMBean(_mockManagedObjectRegistry, _mockBroker);
}
@@ -58,7 +53,8 @@ public class ServerInformationMBeanTest extends TestCase
public void testGetMessageCount() throws Exception
{
- assertStatistic("totalDataDelivered", 16384l, Connection.BYTES_OUT);
+ when(_mockBroker.getBytesOut()).thenReturn(16384l);
+ assertStatistic("totalDataDelivered", 16384l);
}
/********** Attributes **********/
@@ -80,9 +76,8 @@ public class ServerInformationMBeanTest extends TestCase
assertTrue("isStatisticsEnabled", _mbean.isStatisticsEnabled());
}
- private void assertStatistic(String jmxAttributeName, Object expectedValue, String underlyingAttributeName) throws Exception
+ private void assertStatistic(String jmxAttributeName, Object expectedValue) throws Exception
{
- when(_mockBrokerStatistics.getStatistic(underlyingAttributeName)).thenReturn(expectedValue);
MBeanTestUtils.assertMBeanAttribute(_mbean, jmxAttributeName, expectedValue);
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
index a5e30be1a3..3bd21f8b77 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
@@ -32,6 +32,7 @@ import javax.jms.JMSException;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.server.model.*;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
public class Asserts
@@ -42,7 +43,7 @@ public class Asserts
{
assertNotNull("Virtualhost " + virtualHostName + " data are not found", virtualHost);
assertAttributesPresent(virtualHost,
- Attribute.getAttributeNames(VirtualHost.class),
+ AbstractConfiguredObject.getAttributeNames(VirtualHost.class),
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
ConfiguredObject.LAST_UPDATED_BY,
@@ -78,15 +79,7 @@ public class Asserts
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) virtualHost.get(STATISTICS_ATTRIBUTE);
Asserts.assertAttributesPresent(statistics,
- VirtualHost.AVAILABLE_STATISTICS,
- VirtualHost.BYTES_RETAINED,
- VirtualHost.LOCAL_TRANSACTION_BEGINS,
- VirtualHost.LOCAL_TRANSACTION_ROLLBACKS,
- VirtualHost.MESSAGES_RETAINED,
- VirtualHost.STATE_CHANGED,
- VirtualHost.XA_TRANSACTION_BRANCH_ENDS,
- VirtualHost.XA_TRANSACTION_BRANCH_STARTS,
- VirtualHost.XA_TRANSACTION_BRANCH_SUSPENDS);
+ "queueCount","exchangeCount","bytesIn","bytesOut","messagesIn", "messagesOut");
}
@@ -102,7 +95,7 @@ public class Asserts
{
assertNotNull("Queue " + queueName + " is not found!", queueData);
Asserts.assertAttributesPresent(queueData,
- Attribute.getAttributeNames(Queue.class),
+ AbstractConfiguredObject.getAttributeNames(Queue.class),
Queue.CREATED_BY,
Queue.CREATED_TIME,
Queue.LAST_UPDATED_BY,
@@ -154,8 +147,23 @@ public class Asserts
assertNotNull("Unexpected value of queue attribute statistics", queueData.get(Asserts.STATISTICS_ATTRIBUTE));
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) queueData.get(Asserts.STATISTICS_ATTRIBUTE);
- Asserts.assertAttributesPresent(statistics, Queue.AVAILABLE_STATISTICS, Queue.DISCARDS_TTL_BYTES,
- Queue.DISCARDS_TTL_MESSAGES, Queue.STATE_CHANGED);
+
+ Asserts.assertAttributesPresent(statistics,
+ "bindingCount",
+ "consumerCount",
+ "consumerCountWithCredit",
+ "persistentDequeuedBytes",
+ "persistentDequeuedMessages",
+ "persistentEnqueuedBytes",
+ "persistentEnqueuedMessages",
+ "queueDepthBytes",
+ "queueDepthMessages",
+ "totalDequeuedBytes",
+ "totalDequeuedMessages",
+ "totalEnqueuedBytes",
+ "totalEnqueuedMessages",
+ "unacknowledgedBytes",
+ "unacknowledgedMessages");
}
public static void assertAttributesPresent(Map<String, Object> data, String... attributes)
@@ -193,7 +201,7 @@ public class Asserts
{
assertNotNull("Unexpected connection data", connectionData);
assertAttributesPresent(connectionData,
- Attribute.getAttributeNames(Connection.class),
+ AbstractConfiguredObject.getAttributeNames(Connection.class),
Connection.STATE,
Connection.DURABLE,
Connection.LIFETIME_POLICY,
@@ -221,16 +229,17 @@ public class Asserts
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) connectionData.get(STATISTICS_ATTRIBUTE);
+
+
assertAttributesPresent(statistics,
- Connection.AVAILABLE_STATISTICS,
- Connection.LOCAL_TRANSACTION_BEGINS,
- Connection.LOCAL_TRANSACTION_ROLLBACKS,
- Connection.STATE_CHANGED,
- Connection.XA_TRANSACTION_BRANCH_ENDS,
- Connection.XA_TRANSACTION_BRANCH_STARTS,
- Connection.XA_TRANSACTION_BRANCH_SUSPENDS);
- assertEquals("Unexpected value of connection statistics attribute " + Connection.SESSION_COUNT, 1,
- statistics.get(Connection.SESSION_COUNT));
+ "bytesIn",
+ "bytesOut",
+ "lastIoTime",
+ "messagesIn",
+ "messagesOut",
+ "sessionCount");
+ assertEquals("Unexpected value of connection statistics attribute sessionCount ", 1,
+ statistics.get("sessionCount"));
}
public static void assertPortAttributes(Map<String, Object> port)
@@ -262,7 +271,7 @@ public class Asserts
if (isAMQPPort)
{
assertAttributesPresent(port,
- Attribute.getAttributeNames(Port.class),
+ AbstractConfiguredObject.getAttributeNames(Port.class),
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
@@ -277,7 +286,7 @@ public class Asserts
else
{
assertAttributesPresent(port,
- Attribute.getAttributeNames(Port.class),
+ AbstractConfiguredObject.getAttributeNames(Port.class),
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
@@ -312,7 +321,7 @@ public class Asserts
public static void assertExchange(String exchangeName, String type, Map<String, Object> exchangeData)
{
assertNotNull("Exchange " + exchangeName + " is not found!", exchangeData);
- assertAttributesPresent(exchangeData, Attribute.getAttributeNames(Exchange.class),
+ assertAttributesPresent(exchangeData, AbstractConfiguredObject.getAttributeNames(Exchange.class),
Exchange.ALTERNATE_EXCHANGE, Exchange.TIME_TO_LIVE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
@@ -334,17 +343,19 @@ public class Asserts
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) exchangeData.get(STATISTICS_ATTRIBUTE);
- assertAttributesPresent(statistics,
- Exchange.AVAILABLE_STATISTICS,
- Exchange.STATE_CHANGED,
- Exchange.PRODUCER_COUNT);
+
+ assertAttributesPresent(statistics,"bindingCount",
+ "bytesDropped",
+ "bytesIn",
+ "messagesDropped",
+ "messagesIn");
}
public static void assertBinding(String bindingName, String queueName, String exchange, Map<String, Object> binding)
{
assertNotNull("Binding map should not be null", binding);
assertAttributesPresent(binding,
- Attribute.getAttributeNames(Binding.class),
+ AbstractConfiguredObject.getAttributeNames(Binding.class),
Binding.STATE,
Binding.TIME_TO_LIVE,
ConfiguredObject.TYPE,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
index e73e8767ac..5e1489a640 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
@@ -27,13 +27,13 @@ import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.BrokerOptions;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.User;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory;
import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
@@ -304,7 +304,8 @@ public class AuthenticationProviderRestTest extends QpidRestTestCase
private void assertProvider(boolean managesPrincipals, String type, Map<String, Object> provider)
{
- Asserts.assertAttributesPresent(provider, Attribute.getAttributeNames(AuthenticationProvider.class),
+ Asserts.assertAttributesPresent(provider, AbstractConfiguredObject.getAttributeNames(
+ AuthenticationProvider.class),
AuthenticationProvider.DESCRIPTION, AuthenticationProvider.TIME_TO_LIVE, ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME, ConfiguredObject.LAST_UPDATED_BY, ConfiguredObject.LAST_UPDATED_TIME);
assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.STATE, State.ACTIVE.name(),
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java
index 6c6ce940de..a9705f73d5 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java
@@ -29,12 +29,12 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.commons.configuration.ConfigurationException;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
public class BrokerRestHttpsTest extends QpidRestTestCase
@@ -64,7 +64,7 @@ public class BrokerRestHttpsTest extends QpidRestTestCase
{
Map<String, Object> brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker");
- Asserts.assertAttributesPresent(brokerDetails, Attribute.getAttributeNames(Broker.class),
+ Asserts.assertAttributesPresent(brokerDetails, AbstractConfiguredObject.getAttributeNames(Broker.class),
Broker.PROCESS_PID, Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES, Broker.TIME_TO_LIVE,
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
index ab4f358b42..178f365fa5 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
@@ -34,13 +34,13 @@ import javax.jms.TextMessage;
import org.apache.qpid.common.QpidProperties;
import org.apache.qpid.server.configuration.BrokerConfigurationStoreCreator;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.test.client.UnroutableMessageTestExceptionListener;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
@@ -234,7 +234,7 @@ public class BrokerRestTest extends QpidRestTestCase
protected void assertBrokerAttributes(Map<String, Object> brokerDetails)
{
- Asserts.assertAttributesPresent(brokerDetails, Attribute.getAttributeNames(Broker.class),
+ Asserts.assertAttributesPresent(brokerDetails, AbstractConfiguredObject.getAttributeNames(Broker.class),
Broker.PROCESS_PID,
Broker.TIME_TO_LIVE,
ConfiguredObject.TYPE,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java
index 89c53b1e0a..07f1627d94 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java
@@ -33,10 +33,10 @@ import javax.jms.MessageProducer;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQSession;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Connection;
import org.apache.qpid.server.model.Session;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
public class ConnectionRestTest extends QpidRestTestCase
{
@@ -155,14 +155,14 @@ public class ConnectionRestTest extends QpidRestTestCase
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) connectionDetails.get(Asserts.STATISTICS_ATTRIBUTE);
- assertEquals("Unexpected value of connection statistics attribute " + Connection.BYTES_IN, MESSAGE_NUMBER
- * MESSAGE_SIZE, statistics.get(Connection.BYTES_IN));
- assertEquals("Unexpected value of connection statistics attribute " + Connection.BYTES_OUT, MESSAGE_SIZE
- + ((MESSAGE_NUMBER - 1) * MESSAGE_SIZE) * 2, statistics.get(Connection.BYTES_OUT));
- assertEquals("Unexpected value of connection statistics attribute " + Connection.MESSAGES_IN, MESSAGE_NUMBER,
- statistics.get(Connection.MESSAGES_IN));
- assertEquals("Unexpected value of connection statistics attribute " + Connection.MESSAGES_OUT,
- MESSAGE_NUMBER * 2 - 1, statistics.get(Connection.MESSAGES_OUT));
+ assertEquals("Unexpected value of connection statistics attribute " + "bytesIn", MESSAGE_NUMBER
+ * MESSAGE_SIZE, statistics.get("bytesIn"));
+ assertEquals("Unexpected value of connection statistics attribute " + "bytesOut", MESSAGE_SIZE
+ + ((MESSAGE_NUMBER - 1) * MESSAGE_SIZE) * 2, statistics.get("bytesOut"));
+ assertEquals("Unexpected value of connection statistics attribute " + "messagesIn", MESSAGE_NUMBER,
+ statistics.get("messagesIn"));
+ assertEquals("Unexpected value of connection statistics attribute " + "messagesOut",
+ MESSAGE_NUMBER * 2 - 1, statistics.get("messagesOut"));
@SuppressWarnings("unchecked")
List<Map<String, Object>> sessions = (List<Map<String, Object>>) connectionDetails.get(SESSIONS_ATTRIBUTE);
@@ -174,7 +174,7 @@ public class ConnectionRestTest extends QpidRestTestCase
private void assertSession(Map<String, Object> sessionData, AMQSession<?, ?> session)
{
assertNotNull("Session map cannot be null", sessionData);
- Asserts.assertAttributesPresent(sessionData, Attribute.getAttributeNames(Session.class),
+ Asserts.assertAttributesPresent(sessionData, AbstractConfiguredObject.getAttributeNames(Session.class),
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
@@ -193,19 +193,18 @@ public class ConnectionRestTest extends QpidRestTestCase
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) sessionData.get(Asserts.STATISTICS_ATTRIBUTE);
- Asserts.assertAttributesPresent(statistics, Session.AVAILABLE_STATISTICS, Session.BYTES_IN, Session.BYTES_OUT,
- Session.STATE_CHANGED, Session.UNACKNOWLEDGED_BYTES, Session.LOCAL_TRANSACTION_OPEN,
- Session.XA_TRANSACTION_BRANCH_ENDS, Session.XA_TRANSACTION_BRANCH_STARTS,
- Session.XA_TRANSACTION_BRANCH_SUSPENDS);
-
- assertEquals("Unexpecte value of statistic attribute " + Session.UNACKNOWLEDGED_MESSAGES, MESSAGE_NUMBER - 1,
- statistics.get(Session.UNACKNOWLEDGED_MESSAGES));
- assertEquals("Unexpecte value of statistic attribute " + Session.LOCAL_TRANSACTION_BEGINS, 4,
- statistics.get(Session.LOCAL_TRANSACTION_BEGINS));
- assertEquals("Unexpecte value of statistic attribute " + Session.LOCAL_TRANSACTION_ROLLBACKS, 1,
- statistics.get(Session.LOCAL_TRANSACTION_ROLLBACKS));
- assertEquals("Unexpecte value of statistic attribute " + Session.CONSUMER_COUNT, 1,
- statistics.get(Session.CONSUMER_COUNT));
+ Asserts.assertAttributesPresent(statistics, "consumerCount",
+ "localTransactionBegins", "localTransactionOpen",
+ "localTransactionRollbacks", "unacknowledgedMessages");
+
+ assertEquals("Unexpecte value of statistic attribute " + "unacknowledgedMessages", MESSAGE_NUMBER - 1,
+ statistics.get("unacknowledgedMessages"));
+ assertEquals("Unexpecte value of statistic attribute " + "localTransactionBegins", 4,
+ statistics.get("localTransactionBegins"));
+ assertEquals("Unexpecte value of statistic attribute " + "localTransactionRollbacks", 1,
+ statistics.get("localTransactionRollbacks"));
+ assertEquals("Unexpecte value of statistic attribute " + "consumerCount", 1,
+ statistics.get("consumerCount"));
}
private String getConnectionName() throws IOException
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
index 85d8d31758..11c0b7bc4a 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
@@ -29,13 +29,13 @@ import java.util.Properties;
import java.util.UUID;
import org.apache.qpid.server.BrokerOptions;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Group;
import org.apache.qpid.server.model.GroupProvider;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.UUIDGenerator;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.security.group.FileGroupManagerFactory;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.test.utils.TestFileUtils;
@@ -322,7 +322,7 @@ public class GroupProviderRestTest extends QpidRestTestCase
private void assertProvider(String name, String type, Map<String, Object> provider)
{
- Asserts.assertAttributesPresent(provider, Attribute.getAttributeNames(GroupProvider.class),
+ Asserts.assertAttributesPresent(provider, AbstractConfiguredObject.getAttributeNames(GroupProvider.class),
GroupProvider.TIME_TO_LIVE,
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
index 9a657b0019..d9ff53a351 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
@@ -28,12 +28,12 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.configuration.ConfigurationException;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.PreferencesProvider;
import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.model.adapter.FileSystemPreferencesProvider;
import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory;
@@ -164,7 +164,7 @@ public class PreferencesProviderRestTest extends QpidRestTestCase
public void assertProviderCommonAttributes(Map<String, Object> provider)
{
Asserts.assertAttributesPresent(provider,
- Attribute.getAttributeNames(PreferencesProvider.class),
+ AbstractConfiguredObject.getAttributeNames(PreferencesProvider.class),
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
ConfiguredObject.LAST_UPDATED_BY,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java
index a95c0a082f..fba319e907 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java
@@ -34,12 +34,12 @@ import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
-import org.apache.qpid.server.model.Attribute;
import org.apache.qpid.server.model.Binding;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Consumer;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
public class QueueRestTest extends QpidRestTestCase
{
@@ -212,7 +212,7 @@ public class QueueRestTest extends QpidRestTestCase
{
assertNotNull("Consumer map should not be null", consumer);
Asserts.assertAttributesPresent(consumer,
- Attribute.getAttributeNames(Consumer.class), Consumer.STATE, Consumer.TIME_TO_LIVE,
+ AbstractConfiguredObject.getAttributeNames(Consumer.class), Consumer.STATE, Consumer.TIME_TO_LIVE,
Consumer.SETTLEMENT_MODE, Consumer.EXCLUSIVE, Consumer.SELECTOR,
Consumer.NO_LOCAL,
ConfiguredObject.TYPE,
@@ -232,35 +232,35 @@ public class QueueRestTest extends QpidRestTestCase
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) consumer.get(Asserts.STATISTICS_ATTRIBUTE);
assertNotNull("Consumer statistics is not present", statistics);
- Asserts.assertAttributesPresent(statistics, Consumer.AVAILABLE_STATISTICS, Consumer.STATE_CHANGED);
+ Asserts.assertAttributesPresent(statistics, "bytesOut", "messagesOut", "unacknowledgedBytes", "unacknowledgedMessages");
}
private void assertStatistics(Map<String, Object> queueDetails)
{
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) queueDetails.get(Asserts.STATISTICS_ATTRIBUTE);
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_DEQUEUED_MESSAGES, DEQUEUED_MESSAGES,
- statistics.get(Queue.PERSISTENT_DEQUEUED_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.QUEUE_DEPTH_MESSAGES, ENQUEUED_MESSAGES,
- statistics.get(Queue.QUEUE_DEPTH_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.CONSUMER_COUNT, 1,
- statistics.get(Queue.CONSUMER_COUNT));
- assertEquals("Unexpected queue statistics attribute " + Queue.CONSUMER_COUNT_WITH_CREDIT, 1,
- statistics.get(Queue.CONSUMER_COUNT_WITH_CREDIT));
- assertEquals("Unexpected queue statistics attribute " + Queue.BINDING_COUNT, 1, statistics.get(Queue.BINDING_COUNT));
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_DEQUEUED_MESSAGES, DEQUEUED_MESSAGES,
- statistics.get(Queue.PERSISTENT_DEQUEUED_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.TOTAL_DEQUEUED_MESSAGES, DEQUEUED_MESSAGES,
- statistics.get(Queue.TOTAL_DEQUEUED_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.TOTAL_DEQUEUED_BYTES, DEQUEUED_BYTES,
- statistics.get(Queue.TOTAL_DEQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_DEQUEUED_BYTES, DEQUEUED_BYTES,
- statistics.get(Queue.TOTAL_DEQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_ENQUEUED_BYTES, ENQUEUED_BYTES
- + DEQUEUED_BYTES, statistics.get(Queue.PERSISTENT_ENQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.TOTAL_ENQUEUED_BYTES, ENQUEUED_BYTES + DEQUEUED_BYTES,
- statistics.get(Queue.TOTAL_ENQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.QUEUE_DEPTH_BYTES, ENQUEUED_BYTES,
- statistics.get(Queue.QUEUE_DEPTH_BYTES));
+ assertEquals("Unexpected queue statistics attribute " + "persistentDequeuedMessages", DEQUEUED_MESSAGES,
+ statistics.get("persistentDequeuedMessages"));
+ assertEquals("Unexpected queue statistics attribute " + "queueDepthMessages", ENQUEUED_MESSAGES,
+ statistics.get("queueDepthMessages"));
+ assertEquals("Unexpected queue statistics attribute " + "consumerCount", 1,
+ statistics.get("consumerCount"));
+ assertEquals("Unexpected queue statistics attribute " + "consumerCountWithCredit", 1,
+ statistics.get("consumerCountWithCredit"));
+ assertEquals("Unexpected queue statistics attribute " + "bindingCount", 1, statistics.get("bindingCount"));
+ assertEquals("Unexpected queue statistics attribute " + "persistentDequeuedMessages", DEQUEUED_MESSAGES,
+ statistics.get("persistentDequeuedMessages"));
+ assertEquals("Unexpected queue statistics attribute " + "totalDequeuedMessages", DEQUEUED_MESSAGES,
+ statistics.get("totalDequeuedMessages"));
+ assertEquals("Unexpected queue statistics attribute " + "totalDequeuedBytes", DEQUEUED_BYTES,
+ statistics.get("totalDequeuedBytes"));
+ assertEquals("Unexpected queue statistics attribute " + "persistentDequeuedBytes", DEQUEUED_BYTES,
+ statistics.get("totalDequeuedBytes"));
+ assertEquals("Unexpected queue statistics attribute " + "persistentEnqueuedBytes", ENQUEUED_BYTES
+ + DEQUEUED_BYTES, statistics.get("persistentEnqueuedBytes"));
+ assertEquals("Unexpected queue statistics attribute " + "totalEnqueuedBytes", ENQUEUED_BYTES + DEQUEUED_BYTES,
+ statistics.get("totalEnqueuedBytes"));
+ assertEquals("Unexpected queue statistics attribute " + "queueDepthBytes", ENQUEUED_BYTES,
+ statistics.get("queueDepthBytes"));
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
index d7b17fda8a..eac43e70a4 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
@@ -74,9 +74,10 @@ public class VirtualHostRestTest extends QpidRestTestCase
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) hostDetails.get(Asserts.STATISTICS_ATTRIBUTE);
- assertEquals("Unexpected number of exchanges in statistics", EXPECTED_EXCHANGES.length, statistics.get(VirtualHost.EXCHANGE_COUNT));
- assertEquals("Unexpected number of queues in statistics", EXPECTED_QUEUES.length, statistics.get(VirtualHost.QUEUE_COUNT));
- assertEquals("Unexpected number of connections in statistics", 1, statistics.get(VirtualHost.CONNECTION_COUNT));
+ assertEquals("Unexpected number of exchanges in statistics", EXPECTED_EXCHANGES.length, statistics.get(
+ "exchangeCount"));
+ assertEquals("Unexpected number of queues in statistics", EXPECTED_QUEUES.length, statistics.get("queueCount"));
+ assertEquals("Unexpected number of connections in statistics", 1, statistics.get("connectionCount"));
@SuppressWarnings("unchecked")
List<Map<String, Object>> exchanges = (List<Map<String, Object>>) hostDetails.get(VIRTUALHOST_EXCHANGES_ATTRIBUTE);
@@ -589,9 +590,9 @@ public class VirtualHostRestTest extends QpidRestTestCase
@SuppressWarnings("unchecked")
Map<String, Object> statistics = (Map<String, Object>) hostDetails.get(Asserts.STATISTICS_ATTRIBUTE);
assertEquals("Unexpected number of exchanges in statistics", EXPECTED_EXCHANGES.length,
- statistics.get(VirtualHost.EXCHANGE_COUNT));
- assertEquals("Unexpected number of queues in statistics", 0, statistics.get(VirtualHost.QUEUE_COUNT));
- assertEquals("Unexpected number of connections in statistics", 0, statistics.get(VirtualHost.CONNECTION_COUNT));
+ statistics.get("exchangeCount"));
+ assertEquals("Unexpected number of queues in statistics", 0, statistics.get("queueCount"));
+ assertEquals("Unexpected number of connections in statistics", 0, statistics.get("connectionCount"));
@SuppressWarnings("unchecked")
List<Map<String, Object>> exchanges = (List<Map<String, Object>>) hostDetails.get(VIRTUALHOST_EXCHANGES_ATTRIBUTE);