You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2017/12/12 13:17:37 UTC

[1/4] activemq-artemis git commit: This closes #1696 NO-JIRA fixed minor regression and broken tests in ActiveMQServerControlImpl

Repository: activemq-artemis
Updated Branches:
  refs/heads/master c1bc7a30e -> 70d5e3149


This closes #1696 NO-JIRA fixed minor regression and broken tests in ActiveMQServerControlImpl


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/70d5e314
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/70d5e314
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/70d5e314

Branch: refs/heads/master
Commit: 70d5e31490a23a10e8af696c6d5412dcf7047190
Parents: c1bc7a3 d7b464c
Author: Michael Pearce <mi...@me.com>
Authored: Tue Dec 12 13:17:02 2017 +0000
Committer: Michael Pearce <mi...@me.com>
Committed: Tue Dec 12 13:17:02 2017 +0000

----------------------------------------------------------------------
 .../src/main/webapp/plugin/js/connections.js    |  12 +-
 .../src/main/webapp/plugin/js/consumers.js      |  28 +-
 .../src/main/webapp/plugin/js/producers.js      |   8 +-
 .../src/main/webapp/plugin/js/queues.js         |   8 +-
 .../src/main/webapp/plugin/js/sessions.js       |  10 +-
 .../impl/ActiveMQServerControlImpl.java         |   8 +-
 .../impl/view/ActiveMQAbstractView.java         |  40 +-
 .../core/management/impl/view/AddressView.java  |  24 +
 .../management/impl/view/ConnectionView.java    |  45 +-
 .../core/management/impl/view/ConsumerView.java |  53 +-
 .../core/management/impl/view/ProducerView.java |  49 +-
 .../core/management/impl/view/QueueView.java    |  68 ++-
 .../core/management/impl/view/SessionView.java  |  29 +-
 .../ActiveMQServerControlMultiThreadTest.java   |   4 +-
 .../management/ActiveMQServerControlTest.java   | 483 +++++++++++++++++++
 .../ActiveMQServerControlUsingCoreTest.java     |   2 +-
 16 files changed, 785 insertions(+), 86 deletions(-)
----------------------------------------------------------------------



[3/4] activemq-artemis git commit: NO-JIRA fixed checkstyle issues and added tests

Posted by mi...@apache.org.
NO-JIRA fixed checkstyle issues and added tests


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/d7b464cf
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/d7b464cf
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/d7b464cf

Branch: refs/heads/master
Commit: d7b464cff3bdd805260507066357d4f636ed705a
Parents: f08da81
Author: Pat Fox <pa...@gmail.com>
Authored: Mon Dec 11 22:08:43 2017 +0100
Committer: Michael Pearce <mi...@me.com>
Committed: Tue Dec 12 13:17:02 2017 +0000

----------------------------------------------------------------------
 .../impl/view/ActiveMQAbstractView.java         |   5 +-
 .../core/management/impl/view/AddressView.java  |   8 +-
 .../management/impl/view/ConnectionView.java    |   2 +-
 .../core/management/impl/view/ConsumerView.java |   2 +-
 .../core/management/impl/view/ProducerView.java |   1 +
 .../core/management/impl/view/QueueView.java    |   5 +-
 .../core/management/impl/view/SessionView.java  |   2 +-
 .../management/ActiveMQServerControlTest.java   | 363 ++++++++++++++++++-
 8 files changed, 357 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
index 29f5fcf..7a2d347 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
@@ -19,7 +19,6 @@ package org.apache.activemq.artemis.core.management.impl.view;
 import javax.json.JsonArrayBuilder;
 import javax.json.JsonObject;
 import javax.json.JsonObjectBuilder;
-import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 
@@ -101,8 +100,8 @@ public abstract class ActiveMQAbstractView<T> {
          @Override
          public int compare(T left, T right) {
             try {
-               Object leftValue = getField(left, sortColumn);;
-               Object rightValue = getField(right, sortColumn);;
+               Object leftValue = getField(left, sortColumn);
+               Object rightValue = getField(right, sortColumn);
                if (leftValue instanceof Comparable && rightValue instanceof Comparable) {
                   if (sortOrder.equals("desc")) {
                      return ((Comparable) rightValue).compareTo(leftValue);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
index 58bf52d..c5e0629 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
@@ -17,16 +17,9 @@
 package org.apache.activemq.artemis.core.management.impl.view;
 
 import javax.json.JsonObjectBuilder;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.activemq.artemis.core.management.impl.view.predicate.AddressFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.core.server.impl.AddressInfo;
-import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class AddressView extends ActiveMQAbstractView<AddressInfo> {
@@ -63,6 +56,7 @@ public class AddressView extends ActiveMQAbstractView<AddressInfo> {
       return obj;
    }
 
+   @Override
    public Object getField(AddressInfo address, String fieldName) {
       if (address == null) {
          return null;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
index 1baf039..b8ed6e3 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
@@ -24,7 +24,6 @@ import java.util.Set;
 
 import org.apache.activemq.artemis.core.management.impl.view.predicate.ConnectionFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.core.server.ServerConsumer;
 import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
 import org.apache.activemq.artemis.utils.JsonLoader;
@@ -69,6 +68,7 @@ public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
          .add("sessionCount", server.getSessions(connection.getID().toString()).size());
    }
 
+   @Override
    public Object getField(RemotingConnection connection, String fieldName) {
       List<ServerSession> sessions = server.getSessions(connection.getID().toString());
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
index 1eac72f..52604a8 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
@@ -22,7 +22,6 @@ import java.util.Date;
 import org.apache.activemq.artemis.core.management.impl.view.predicate.ConsumerFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.ServerConsumer;
-import org.apache.activemq.artemis.core.server.ServerProducer;
 import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
@@ -66,6 +65,7 @@ public class ConsumerView extends ActiveMQAbstractView<ServerConsumer> {
       return obj;
    }
 
+   @Override
    public Object getField(ServerConsumer consumer, String fieldName) {
       ServerSession session = server.getSessionByID(consumer.getSessionID());
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
index af19d74..977aec8 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
@@ -62,6 +62,7 @@ public class ProducerView extends ActiveMQAbstractView<ServerProducer> {
       return obj;
    }
 
+   @Override
    public Object getField(ServerProducer producer, String fieldName) {
       ServerSession session = server.getSessionByID(producer.getSessionID());
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
index 1f8ac0a..eb0f1a4 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
@@ -17,15 +17,11 @@
 package org.apache.activemq.artemis.core.management.impl.view;
 
 import javax.json.JsonObjectBuilder;
-
-import java.util.Date;
-
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.management.QueueControl;
 import org.apache.activemq.artemis.core.management.impl.view.predicate.QueueFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.Queue;
-import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class QueueView extends ActiveMQAbstractView<QueueControl> {
@@ -68,6 +64,7 @@ public class QueueView extends ActiveMQAbstractView<QueueControl> {
       return obj;
    }
 
+   @Override
    public Object getField(QueueControl queue, String fieldName) {
       Queue q = server.locateQueue(new SimpleString(queue.getName()));
       switch (fieldName) {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
index 35fc8b8..a1d85d8 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
@@ -21,7 +21,6 @@ import java.util.Date;
 
 import org.apache.activemq.artemis.core.management.impl.view.predicate.SessionFilterPredicate;
 import org.apache.activemq.artemis.core.server.ServerSession;
-import org.apache.activemq.artemis.core.server.impl.AddressInfo;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class SessionView extends ActiveMQAbstractView<ServerSession> {
@@ -49,6 +48,7 @@ public class SessionView extends ActiveMQAbstractView<ServerSession> {
       return obj;
    }
 
+   @Override
    public Object getField(ServerSession session, String fieldName) {
       switch (fieldName) {
          case "id":

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d7b464cf/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 55d7254..2185e07 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -53,6 +53,7 @@ import org.apache.activemq.artemis.api.core.management.QueueControl;
 import org.apache.activemq.artemis.api.core.management.RoleInfo;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
 import org.apache.activemq.artemis.api.jms.JMSFactoryType;
+import org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl;
 import org.apache.activemq.artemis.core.client.impl.ClientSessionImpl;
 import org.apache.activemq.artemis.core.config.Configuration;
 import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration;
@@ -1543,6 +1544,119 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
    }
 
    @Test
+   public void testListQueuesOrder() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_1");
+      SimpleString queueName2 = new SimpleString("my_queue_2");
+      SimpleString queueName3 = new SimpleString("my_queue_3");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(queueName1, RoutingType.ANYCAST));
+      server.createQueue(queueName1, RoutingType.ANYCAST, queueName1, new SimpleString("filter1"),null,true,
+                         false, false,20,false,false);
+      Thread.sleep(500);
+      server.addAddressInfo(new AddressInfo(queueName2, RoutingType.ANYCAST));
+      server.createQueue(queueName2, RoutingType.ANYCAST, queueName2, new SimpleString("filter3"), null,true,
+                         false, true,40,false,false);
+      Thread.sleep(500);
+      server.addAddressInfo(new AddressInfo(queueName3, RoutingType.ANYCAST));
+      server.createQueue(queueName3, RoutingType.ANYCAST, queueName3,  new SimpleString("filter0"),null,true,
+                         false, false,10,false,false);
+
+      //test default order
+      String filterString = createJsonFilter("name", "CONTAINS", "my_queue");
+      String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+      JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      JsonArray array = (JsonArray) queuesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of queues returned from query", 3, array.size());
+      Assert.assertEquals("queue1 default Order", queueName1.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("queue2 default Order", queueName2.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("queue3 default Order", queueName3.toString(), array.getJsonObject(2).getString("name"));
+
+      //test ordered by id desc
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "id", "desc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of queues returned from query", 3, array.size());
+      Assert.assertEquals("queue3 ordered by id", queueName3.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("queue2 ordered by id", queueName2.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("queue1 ordered by id", queueName1.toString(), array.getJsonObject(2).getString("name"));
+
+      //ordered by address desc
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of queues returned from query", 3, array.size());
+      Assert.assertEquals("queue3 ordered by address", queueName3.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("queue2 ordered by address", queueName2.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("queue1 ordered by address", queueName1.toString(), array.getJsonObject(2).getString("name"));
+
+      //ordered by auto create desc
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "autoCreated", "asc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of queues returned from query", 3, array.size());
+      Assert.assertEquals("pos1 ordered by autocreate", "false", array.getJsonObject(0).getString("autoCreated"));
+      Assert.assertEquals("pos2 ordered by autocreate", "false", array.getJsonObject(1).getString("autoCreated"));
+      Assert.assertEquals("pos3 ordered by autocreate", "true", array.getJsonObject(2).getString("autoCreated"));
+
+      //ordered by filter desc
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "filter", "desc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of queues returned from query", 3, array.size());
+      Assert.assertEquals("queue2 ordered by filter", queueName2.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("queue1 ordered by filter", queueName1.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("queue3 ordered by filter", queueName3.toString(), array.getJsonObject(2).getString("name"));
+
+      //ordered by max consumers asc
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "maxConsumers", "asc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of queues returned from query", 3, array.size());
+      Assert.assertEquals("queue3 ordered by filter", queueName3.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("queue1 ordered by filter", queueName1.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("queue2 ordered by filter", queueName2.toString(), array.getJsonObject(2).getString("name"));
+
+      //ordering between the pages
+      //page 1
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 1, 1);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+      Assert.assertEquals("number of queues returned from query", 1, array.size());
+      Assert.assertEquals("queue3 ordered by page", queueName3.toString(), array.getJsonObject(0).getString("name"));
+
+      //page 2
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 2, 1);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+      Assert.assertEquals("number of queues returned from query", 1, array.size());
+      Assert.assertEquals("queue2 ordered by page", queueName2.toString(), array.getJsonObject(0).getString("name"));
+
+      //page 3
+      filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+      queuesAsJsonString = serverControl.listQueues(filterString, 3, 1);
+      queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+      array = (JsonArray) queuesAsJsonObject.get("data");
+      Assert.assertEquals("number of queues returned from query", 1, array.size());
+      Assert.assertEquals("queue1 ordered by page", queueName1.toString(), array.getJsonObject(0).getString("name"));
+
+   }
+
+   @Test
    public void testListQueuesNumericFilter() throws Exception {
       SimpleString queueName1 = new SimpleString("my_queue_one");
       SimpleString queueName2 = new SimpleString("my_queue_two");
@@ -1855,6 +1969,61 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
    }
 
    @Test
+   public void testListAddressOrder() throws Exception {
+
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString queueName2 = new SimpleString("my_queue_two");
+      SimpleString queueName3 = new SimpleString("other_queue_three");
+      SimpleString queueName4 = new SimpleString("other_queue_four");
+
+      SimpleString addressName1 = new SimpleString("my_address_1");
+      SimpleString addressName2 = new SimpleString("my_address_2");
+      SimpleString addressName3 = new SimpleString("my_address_3");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
+      server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
+      server.addAddressInfo(new AddressInfo(addressName2, RoutingType.ANYCAST));
+      server.addAddressInfo(new AddressInfo(addressName3, RoutingType.ANYCAST));
+      server.createQueue(addressName3, RoutingType.ANYCAST, queueName3, null, false, false);
+      server.createQueue(addressName3, RoutingType.ANYCAST, queueName4, null, false, false);
+
+      //test default order
+      String filterString = createJsonFilter("name", "CONTAINS", "my");
+      String addressesAsJsonString = serverControl.listAddresses(filterString, 1, 50);
+      JsonObject addressesAsJsonObject = JsonUtil.readJsonObject(addressesAsJsonString);
+      JsonArray array = (JsonArray) addressesAsJsonObject.get("data");
+
+      Assert.assertEquals("number addresses returned", 3, array.size());
+      Assert.assertEquals("address1 default order", addressName1.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("address2 default order", addressName2.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("address3 default order", addressName3.toString(), array.getJsonObject(2).getString("name"));
+
+      //test  ordered by name desc
+      filterString = createJsonFilter("name", "CONTAINS", "my", "name", "desc");
+      addressesAsJsonString = serverControl.listAddresses(filterString, 1, 50);
+      addressesAsJsonObject = JsonUtil.readJsonObject(addressesAsJsonString);
+      array = (JsonArray) addressesAsJsonObject.get("data");
+
+      Assert.assertEquals("number addresses returned", 3, array.size());
+      Assert.assertEquals("address3 ordered by name", addressName3.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("address2 ordered by name", addressName2.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("address1 ordered by name", addressName1.toString(), array.getJsonObject(2).getString("name"));
+
+      //test  ordered by queue count asc
+      filterString = createJsonFilter("name", "CONTAINS", "my", "queueCount", "asc");
+      addressesAsJsonString = serverControl.listAddresses(filterString, 1, 50);
+      addressesAsJsonObject = JsonUtil.readJsonObject(addressesAsJsonString);
+      array = (JsonArray) addressesAsJsonObject.get("data");
+
+      Assert.assertEquals("number addresses returned", 3, array.size());
+      Assert.assertEquals("address2 ordered by queue count", addressName2.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertEquals("address1 ordered by queue count", addressName1.toString(), array.getJsonObject(1).getString("name"));
+      Assert.assertEquals("address3 ordered by queue count", addressName3.toString(), array.getJsonObject(2).getString("name"));
+   }
+
+   @Test
    public void testListConsumers() throws Exception {
       SimpleString queueName1 = new SimpleString("my_queue_one");
       SimpleString queueName2 = new SimpleString("my_queue_two");
@@ -1946,6 +2115,54 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
    }
 
    @Test
+   public void testListConsumersOrder() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString addressName1 = new SimpleString("my_address_one");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
+      server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
+
+      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator);) {
+
+         ClientSessionImpl session1 = (ClientSessionImpl) csf.createSession();
+         ClientSessionImpl session2 = (ClientSessionImpl) csf.createSession();
+         ClientSessionImpl session3 = (ClientSessionImpl) csf.createSession();
+
+         //sleep - test compares creationTimes
+         ClientConsumer consumer_s1 = session1.createConsumer(queueName1);
+         Thread.sleep(500);
+         ClientConsumer consumer_s2 = session2.createConsumer(queueName1);
+         Thread.sleep(500);
+         ClientConsumer consumer_s3 = session3.createConsumer(queueName1);
+
+         //test default Order
+         String filterString = createJsonFilter("queue", "EQUALS", queueName1.toString());
+         String consumersAsJsonString = serverControl.listConsumers(filterString, 1, 50);
+         JsonObject consumersAsJsonObject = JsonUtil.readJsonObject(consumersAsJsonString);
+         JsonArray array = (JsonArray) consumersAsJsonObject.get("data");
+         Assert.assertEquals("number of consumers returned from query", 3, array.size());
+
+         Assert.assertEquals("Consumer1 default order", session1.getName(), array.getJsonObject(0).getString("session"));
+         Assert.assertEquals("Consumer2 default order", session2.getName(), array.getJsonObject(1).getString("session"));
+         Assert.assertEquals("Consumer3 default order", session3.getName(), array.getJsonObject(2).getString("session"));
+
+         //test ordered by creationTime
+         filterString = createJsonFilter("queue", "EQUALS", queueName1.toString(), "creationTime", "desc");
+         consumersAsJsonString = serverControl.listConsumers(filterString, 1, 50);
+         consumersAsJsonObject = JsonUtil.readJsonObject(consumersAsJsonString);
+         array = (JsonArray) consumersAsJsonObject.get("data");
+         Assert.assertEquals("number of consumers returned from query", 3, array.size());
+
+         Assert.assertEquals("Consumer3 creation time", session3.getName(), array.getJsonObject(0).getString("session"));
+         Assert.assertEquals("Consumer2 creation time", session2.getName(), array.getJsonObject(1).getString("session"));
+         Assert.assertEquals("Consumer1 creation time", session1.getName(), array.getJsonObject(2).getString("session"));
+
+      }
+   }
+
+   @Test
    public void testListSessions() throws Exception {
       SimpleString queueName1 = new SimpleString("my_queue_one");
       SimpleString addressName1 = new SimpleString("my_address_one");
@@ -1958,28 +2175,78 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       // create some consumers
       try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator);) {
 
-         ClientSession session1 = csf.createSession();
-         ClientSession session2 = csf.createSession();
+         ClientSessionImpl session1 = (ClientSessionImpl) csf.createSession();
+         Thread.sleep(500);
+         ClientSessionImpl session2 = (ClientSessionImpl) csf.createSession();
+         Thread.sleep(500);
+         ClientSessionImpl session3 = (ClientSessionImpl) csf.createSession();
+         ClientConsumer consumer1_s1 = session1.createConsumer(queueName1);
+         ClientConsumer consumer2_s1 = session1.createConsumer(queueName1);
 
-         ClientConsumer consumer1_q1 = session1.createConsumer(queueName1);
-         ClientConsumer consumer2_q1 = session2.createConsumer(queueName1);
+         ClientConsumer consumer1_s2 = session2.createConsumer(queueName1);
+         ClientConsumer consumer2_s2 = session2.createConsumer(queueName1);
+         ClientConsumer consumer3_s2 = session2.createConsumer(queueName1);
+         ClientConsumer consumer4_s2 = session2.createConsumer(queueName1);
 
-         //bring back all sessions
-         String filterString = createJsonFilter("", "", "");
+         ClientConsumer consumer1_s3 = session3.createConsumer(queueName1);
+         ClientConsumer consumer2_s3 = session3.createConsumer(queueName1);
+         ClientConsumer consumer3_s3 = session3.createConsumer(queueName1);
+
+         String filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "1");
          String sessionsAsJsonString = serverControl.listSessions(filterString, 1, 50);
          JsonObject sessionsAsJsonObject = JsonUtil.readJsonObject(sessionsAsJsonString);
          JsonArray array = (JsonArray) sessionsAsJsonObject.get("data");
 
-         Assert.assertTrue("number of sessions returned from query", 2 <= array.size());
+
+         Assert.assertEquals("number of sessions returned from query", 3, array.size());
          JsonObject jsonSession = array.getJsonObject(0);
 
          //check all fields
          Assert.assertNotEquals("id", "", jsonSession.getString("id"));
          Assert.assertEquals("user", "", jsonSession.getString("user"));
          Assert.assertNotEquals("creationTime", "", jsonSession.getString("creationTime"));
-         Assert.assertEquals("consumerCount", 1, jsonSession.getInt("consumerCount"));
+         Assert.assertEquals("consumerCount", 2, jsonSession.getInt("consumerCount"));
          Assert.assertTrue("producerCount", 0 <= jsonSession.getInt("producerCount"));
          Assert.assertNotEquals("connectionID", "", jsonSession.getString("connectionID"));
+
+         //check default order
+         Assert.assertEquals("session1 location", session1.getName(), array.getJsonObject(0).getString("id"));
+         Assert.assertEquals("session2 location", session2.getName(), array.getJsonObject(1).getString("id"));
+         Assert.assertEquals("session3 location", session3.getName(), array.getJsonObject(2).getString("id"));
+
+         //bring back session ordered by consumer count
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "1", "consumerCount", "asc");
+         sessionsAsJsonString = serverControl.listSessions(filterString, 1, 50);
+         sessionsAsJsonObject = JsonUtil.readJsonObject(sessionsAsJsonString);
+         array = (JsonArray) sessionsAsJsonObject.get("data");
+
+         Assert.assertTrue("number of sessions returned from query", 3 == array.size());
+         Assert.assertEquals("session1 ordered by consumer", session1.getName(), array.getJsonObject(0).getString("id"));
+         Assert.assertEquals("session3 ordered by consumer", session3.getName(), array.getJsonObject(1).getString("id"));
+         Assert.assertEquals("session2 ordered by consumer", session2.getName(), array.getJsonObject(2).getString("id"));
+
+         //bring back session ordered by consumer Count
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "1", "consumerCount", "asc");
+         sessionsAsJsonString = serverControl.listSessions(filterString, 1, 50);
+         sessionsAsJsonObject = JsonUtil.readJsonObject(sessionsAsJsonString);
+         array = (JsonArray) sessionsAsJsonObject.get("data");
+
+         Assert.assertTrue("number of sessions returned from query", 3 == array.size());
+         Assert.assertEquals("session1 ordered by consumer", session1.getName(), array.getJsonObject(0).getString("id"));
+         Assert.assertEquals("session3 ordered by consumer", session3.getName(), array.getJsonObject(1).getString("id"));
+         Assert.assertEquals("session2 ordered by consumer", session2.getName(), array.getJsonObject(2).getString("id"));
+
+         //bring back session ordered by creation time (desc)
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "1", "creationTime", "desc");
+         sessionsAsJsonString = serverControl.listSessions(filterString, 1, 50);
+         sessionsAsJsonObject = JsonUtil.readJsonObject(sessionsAsJsonString);
+         array = (JsonArray) sessionsAsJsonObject.get("data");
+
+         Assert.assertTrue("number of sessions returned from query", 3 == array.size());
+         Assert.assertEquals("session3 ordered by creationTime", session3.getName(), array.getJsonObject(0).getString("id"));
+         Assert.assertEquals("session2 ordered by creationTime", session2.getName(), array.getJsonObject(1).getString("id"));
+         Assert.assertEquals("session1 ordered by creationTime", session1.getName(), array.getJsonObject(2).getString("id"));
+
       }
    }
 
@@ -1993,18 +2260,38 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
       server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
 
+      ClientSessionFactoryImpl csf = null;
+      ClientSessionFactoryImpl csf2 = null;
+      ClientSessionFactoryImpl csf3 = null;
+
       // create some consumers
-      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator);) {
+      try (ServerLocator locator = createInVMNonHALocator()) {
 
-         ClientSession session1 = csf.createSession();
+         //sleep as test compares creationTime
+         csf = (ClientSessionFactoryImpl) createSessionFactory(locator);
+         Thread.sleep(500);
+         csf2 = (ClientSessionFactoryImpl) createSessionFactory(locator);
+         Thread.sleep(500);
+         csf3 = (ClientSessionFactoryImpl) createSessionFactory(locator);
 
-         //bring back all connection
-         String filterString = createJsonFilter("", "", "");
+         ClientSession session1_c1 = csf.createSession();
+         ClientSession session2_c1 = csf.createSession();
+
+         ClientSession session1_c2 = csf2.createSession();
+         ClientSession session2_c2 = csf2.createSession();
+         ClientSession session3_c2 = csf2.createSession();
+         ClientSession session4_c2 = csf2.createSession();
+
+         ClientSession session1_c4 = csf3.createSession();
+         ClientSession session2_c4 = csf3.createSession();
+         ClientSession session3_c4 = csf3.createSession();
+
+         String filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1");
          String connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
          JsonObject connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
          JsonArray array = (JsonArray) connectionsAsJsonObject.get("data");
 
-         Assert.assertTrue("number of connections returned from query", 1 <= array.size());
+         Assert.assertEquals("number of connections returned from query", 3, array.size());
          JsonObject jsonConnection = array.getJsonObject(0);
 
          //check all fields
@@ -2016,7 +2303,44 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
          Assert.assertNotEquals("protocol", "", jsonConnection.getString("protocol"));
          Assert.assertEquals("clientID", "", jsonConnection.getString("clientID"));
          Assert.assertNotEquals("localAddress", "", jsonConnection.getString("localAddress"));
-         Assert.assertEquals("sessionCount", 1, jsonConnection.getInt("sessionCount"));
+         Assert.assertEquals("sessionCount", 2, jsonConnection.getInt("sessionCount"));
+
+         //check default order
+         Assert.assertEquals("connection1 default Order", csf.getConnection().getID(), array.getJsonObject(0).getString("connectionID"));
+         Assert.assertEquals("connection2 default Order", csf2.getConnection().getID(), array.getJsonObject(1).getString("connectionID"));
+         Assert.assertEquals("connection3 session Order", csf3.getConnection().getID(), array.getJsonObject(2).getString("connectionID"));
+
+         //check order by session count desc
+         filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1", "sessionCount", "desc");
+         connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
+         connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
+         array = (JsonArray) connectionsAsJsonObject.get("data");
+
+         Assert.assertEquals("number of connections returned from query", 3, array.size());
+         Assert.assertEquals("connection2 session Order", csf2.getConnection().getID(), array.getJsonObject(0).getString("connectionID"));
+         Assert.assertEquals("connection3 session Order", csf3.getConnection().getID(), array.getJsonObject(1).getString("connectionID"));
+         Assert.assertEquals("connection1 session Order", csf.getConnection().getID(), array.getJsonObject(2).getString("connectionID"));
+
+         //check order by creationTime desc
+         filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1", "creationTime", "desc");
+         connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
+         connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
+         array = (JsonArray) connectionsAsJsonObject.get("data");
+
+         Assert.assertEquals("number of connections returned from query", 3, array.size());
+         Assert.assertEquals("connection3 creationTime Order", csf3.getConnection().getID(), array.getJsonObject(0).getString("connectionID"));
+         Assert.assertEquals("connection2 creationTime Order", csf2.getConnection().getID(), array.getJsonObject(1).getString("connectionID"));
+         Assert.assertEquals("connection1 creationTime Order", csf.getConnection().getID(), array.getJsonObject(2).getString("connectionID"));
+      } finally {
+         if (csf != null) {
+            csf.close();
+         }
+         if (csf2 != null) {
+            csf.close();
+         }
+         if (csf3 != null) {
+            csf.close();
+         }
       }
    }
 
@@ -2278,6 +2602,17 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       return jsonFilterObject.toString();
    }
 
+   private String createJsonFilter(String fieldName, String operationName, String value,String sortColumn, String sortOrder) {
+      HashMap<String, Object> filterMap = new HashMap<>();
+      filterMap.put("field", fieldName);
+      filterMap.put("operation", operationName);
+      filterMap.put("value", value);
+      filterMap.put("sortColumn", sortColumn);
+      filterMap.put("sortOrder", sortOrder);
+      JsonObject jsonFilterObject = JsonUtil.toJsonObject(filterMap);
+      return jsonFilterObject.toString();
+   }
+
    private void sendMessagesWithPredefinedSize(int numberOfMessages,
                                                ClientSession session,
                                                ClientProducer producer,


[4/4] activemq-artemis git commit: NO-JIRA fixed minor regression(reverted JSON field names) and NullPointer in ActiveMQServerControlImpl

Posted by mi...@apache.org.
NO-JIRA fixed minor regression(reverted JSON field names) and NullPointer in ActiveMQServerControlImpl


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b39c5567
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b39c5567
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b39c5567

Branch: refs/heads/master
Commit: b39c5567849b2da44f56b2b300b54f5394451082
Parents: c1bc7a3
Author: Pat Fox <pa...@gmail.com>
Authored: Thu Dec 7 20:49:25 2017 +0100
Committer: Michael Pearce <mi...@me.com>
Committed: Tue Dec 12 13:17:02 2017 +0000

----------------------------------------------------------------------
 .../src/main/webapp/plugin/js/connections.js    |  12 +-
 .../src/main/webapp/plugin/js/consumers.js      |  28 ++--
 .../src/main/webapp/plugin/js/producers.js      |   8 +-
 .../src/main/webapp/plugin/js/queues.js         |   8 +-
 .../src/main/webapp/plugin/js/sessions.js       |  10 +-
 .../impl/ActiveMQServerControlImpl.java         |   8 +-
 .../management/impl/view/ConnectionView.java    |  12 +-
 .../core/management/impl/view/ConsumerView.java |  18 +--
 .../core/management/impl/view/ProducerView.java |  10 +-
 .../core/management/impl/view/QueueView.java    |  18 ++-
 .../core/management/impl/view/SessionView.java  |   9 +-
 .../ActiveMQServerControlMultiThreadTest.java   |   4 +-
 .../management/ActiveMQServerControlTest.java   | 148 +++++++++++++++++++
 .../ActiveMQServerControlUsingCoreTest.java     |   2 +-
 14 files changed, 242 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/connections.js
----------------------------------------------------------------------
diff --git a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/connections.js b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/connections.js
index 2329552..b6041c2 100644
--- a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/connections.js
+++ b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/connections.js
@@ -31,7 +31,7 @@ var ARTEMIS = (function(ARTEMIS) {
         var method = 'listConnections(java.lang.String, int, int)';
         var attributes = [
             {
-                field: 'iD',
+                field: 'connectionID',
                 displayName: 'ID',
                 width: '*'
             },
@@ -46,7 +46,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 width: '*'
             },
             {
-                field: 'protocolName',
+                field: 'protocol',
                 displayName: 'Protocol',
                 width: '*'
             },
@@ -63,7 +63,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 width: '*'
             },
             {
-                field: 'transportLocalAddress',
+                field: 'localAddress',
                 displayName: 'Local Address',
                 width: '*'
             },
@@ -95,7 +95,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 operation: "",
                 value: "",
                 sortOrder: "asc",
-                sortBy: "iD"
+                sortBy: "connectionID"
             }
         };
 
@@ -142,8 +142,8 @@ var ARTEMIS = (function(ARTEMIS) {
             currentPage: 1
         };
         $scope.sortOptions = {
-            fields: ["iD"],
-            columns: ["iD"],
+            fields: ["connectionID"],
+            columns: ["connectionID"],
             directions: ["asc"]
         };
         var refreshed = false;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/consumers.js
----------------------------------------------------------------------
diff --git a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/consumers.js b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/consumers.js
index ccc17a5..c0e27a2 100644
--- a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/consumers.js
+++ b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/consumers.js
@@ -31,31 +31,31 @@ var ARTEMIS = (function(ARTEMIS) {
         var method = 'listConsumers(java.lang.String, int, int)';
         var attributes = [
             {
-                field: 'sequentialID',
+                field: 'id',
                 displayName: 'ID',
                 width: '*'
             },
             {
-                field: 'sessionName',
+                field: 'session',
                 displayName: 'Session',
                 width: '*',
-                cellTemplate: '<div class="ngCellText"><a ng-click="selectSession(row)">{{row.entity.sessionName}}</a></div>'
+                cellTemplate: '<div class="ngCellText"><a ng-click="selectSession(row)">{{row.entity.session}}</a></div>'
             },
             {
-                field: 'connectionClientID',
+                field: 'clientID',
                 displayName: 'Client ID',
                 width: '*'
             },
             {
-                field: 'connectionProtocolName',
+                field: 'protocol',
                 displayName: 'Protocol',
                 width: '*'
             },
             {
-                field: 'queueName',
+                field: 'queue',
                 displayName: 'Queue',
                 width: '*',
-                cellTemplate: '<div class="ngCellText"><a ng-click="selectQueue(row)">{{row.entity.queueName}}</a></div>'
+                cellTemplate: '<div class="ngCellText"><a ng-click="selectQueue(row)">{{row.entity.queue}}</a></div>'
             },
             {
                 field: 'queueType',
@@ -63,18 +63,18 @@ var ARTEMIS = (function(ARTEMIS) {
                 width: '*'
             },
             {
-                field: 'queueAddress',
+                field: 'address',
                 displayName: 'Address',
                 width: '*',
-                cellTemplate: '<div class="ngCellText"><a ng-click="selectAddress(row)">{{row.entity.queueAddress}}</a></div>'
+                cellTemplate: '<div class="ngCellText"><a ng-click="selectAddress(row)">{{row.entity.address}}</a></div>'
             },
             {
-                field: 'connectionRemoteAddress',
+                field: 'remoteAddress',
                 displayName: 'Remote Address',
                 width: '*'
             },
             {
-                field: 'connectionLocalAddress',
+                field: 'localAddress',
                 displayName: 'Local Address',
                 width: '*'
             },
@@ -105,7 +105,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 operation: "",
                 value: "",
                 sortOrder: "asc",
-                sortBy: "sequentialID"
+                sortBy: "id"
             }
         };
 
@@ -166,8 +166,8 @@ var ARTEMIS = (function(ARTEMIS) {
             currentPage: 1
         };
         $scope.sortOptions = {
-            fields: ["sequentialID"],
-            columns: ["sequentialID"],
+            fields: ["id"],
+            columns: ["id"],
             directions: ["asc"]
         };
         var refreshed = false;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/producers.js
----------------------------------------------------------------------
diff --git a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/producers.js b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/producers.js
index 4f3a316..33f8e3e 100644
--- a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/producers.js
+++ b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/producers.js
@@ -31,7 +31,7 @@ var ARTEMIS = (function(ARTEMIS) {
         var method = 'listProducers(java.lang.String, int, int)';
         var attributes = [
             {
-                field: 'iD',
+                field: 'id',
                 displayName: 'ID',
                 width: '*'
             },
@@ -99,7 +99,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 operation: "",
                 value: "",
                 sortOrder: "asc",
-                sortBy: "iD"
+                sortBy: "id"
             }
         };
 
@@ -136,8 +136,8 @@ var ARTEMIS = (function(ARTEMIS) {
             currentPage: 1
         };
         $scope.sortOptions = {
-            fields: ["iD"],
-            columns: ["iD"],
+            fields: ["id"],
+            columns: ["id"],
             directions: ["asc"]
         };
         var refreshed = false;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/queues.js
----------------------------------------------------------------------
diff --git a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/queues.js b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/queues.js
index 7cd22ec..241e0d7 100644
--- a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/queues.js
+++ b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/queues.js
@@ -37,7 +37,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 cellTemplate: '<div class="ngCellText"><a ng-click="navigateToQueueAtts(row)">attributes</a>&nbsp;<a ng-click="navigateToQueueOps(row)">operations</a></div>'
             },
             {
-                field: 'iD',
+                field: 'id',
                 displayName: 'ID',
                 width: '*'
             },
@@ -178,7 +178,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 operation: "",
                 value: "",
                 sortOrder: "asc",
-                sortBy: "iD"
+                sortBy: "id"
             }
         };
 
@@ -210,8 +210,8 @@ var ARTEMIS = (function(ARTEMIS) {
             currentPage: 1
         };
         $scope.sortOptions = {
-                fields: ["iD"],
-                columns: ["iD"],
+                fields: ["id"],
+                columns: ["id"],
                 directions: ["asc"]
             };
         var refreshed = false;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/sessions.js
----------------------------------------------------------------------
diff --git a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/sessions.js b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/sessions.js
index 14b84bf..20aa752 100644
--- a/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/sessions.js
+++ b/artemis-hawtio/artemis-plugin/src/main/webapp/plugin/js/sessions.js
@@ -31,7 +31,7 @@ var ARTEMIS = (function(ARTEMIS) {
         var method = 'listSessions(java.lang.String, int, int)';
         var attributes = [
             {
-                field: 'name',
+                field: 'id',
                 displayName: 'ID',
                 width: '*'
             },
@@ -42,7 +42,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 cellTemplate: '<div class="ngCellText"><a ng-click="selectConnection(row)">{{row.entity.connectionID}}</a></div>'
             },
             {
-                field: 'username',
+                field: 'user',
                 displayName: 'User',
                 width: '*'
             },
@@ -86,7 +86,7 @@ var ARTEMIS = (function(ARTEMIS) {
                 operation: "",
                 value: "",
                 sortOrder: "asc",
-                sortBy: "name"
+                sortBy: "id"
             }
         };
         // Configure Parent/Child click through relationships
@@ -161,8 +161,8 @@ var ARTEMIS = (function(ARTEMIS) {
             currentPage: 1
         };
         $scope.sortOptions = {
-            fields: ["name"],
-            columns: ["name"],
+            fields: ["id"],
+            columns: ["id"],
             directions: ["asc"]
         };
         var refreshed = false;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
index 753d01b..6e12766 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
@@ -1737,8 +1737,12 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
       try {
          final Set<SimpleString> addresses = server.getPostOffice().getAddresses();
          List<AddressInfo> addressInfo = new ArrayList<>();
-         for (SimpleString address:addresses) {
-            addressInfo.add(server.getPostOffice().getAddressInfo(address));
+         for (SimpleString address : addresses) {
+            AddressInfo info = server.getPostOffice().getAddressInfo(address);
+            //ignore if no longer available
+            if (info != null) {
+               addressInfo.add(info);
+            }
          }
          AddressView view = new AddressView(server);
          view.setCollection(addressInfo);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
index ac7c4a4..94ee487 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
@@ -31,7 +31,7 @@ import org.apache.activemq.artemis.utils.StringUtil;
 
 public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
 
-   private static final String defaultSortColumn = "iD";
+   private static final String defaultSortColumn = "connectionID";
 
    private final ActiveMQServer server;
 
@@ -57,7 +57,15 @@ public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
          users.add(username);
       }
 
-      return JsonLoader.createObjectBuilder().add("iD", toString(connection.getID())).add("remoteAddress", toString(connection.getRemoteAddress())).add("users", StringUtil.joinStringList(users, ",")).add("creationTime", new Date(connection.getCreationTime()).toString()).add("implementation", toString(toString(connection.getClass().getSimpleName()))).add("protocolName", toString(connection.getProtocolName())).add("clientID", toString(connection.getClientID())).add("transportLocalAddress", toString(connection.getTransportLocalAddress())).add("sessionCount", server.getSessions(connection.getID().toString()).size());
+      return JsonLoader.createObjectBuilder().add("connectionID", toString(connection.getID()))
+         .add("remoteAddress", toString(connection.getRemoteAddress()))
+         .add("users", StringUtil.joinStringList(users, ","))
+         .add("creationTime", new Date(connection.getCreationTime()).toString())
+         .add("implementation", toString(toString(connection.getClass().getSimpleName())))
+         .add("protocol", toString(connection.getProtocolName()))
+         .add("clientID", toString(connection.getClientID()))
+         .add("localAddress", toString(connection.getTransportLocalAddress()))
+         .add("sessionCount", server.getSessions(connection.getID().toString()).size());
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
index 386425a..4b1feb3 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
@@ -27,7 +27,7 @@ import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class ConsumerView extends ActiveMQAbstractView<ServerConsumer> {
 
-   private static final String defaultSortColumn = "sequentialID";
+   private static final String defaultSortColumn = "id";
 
    private final ActiveMQServer server;
 
@@ -51,16 +51,16 @@ public class ConsumerView extends ActiveMQAbstractView<ServerConsumer> {
          return null;
       }
 
-      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("sequentialID", toString(consumer.getSequentialID()))
-         .add("sessionName", toString(consumer.getSessionName()))
-         .add("connectionClientID", toString(consumer.getConnectionClientID()))
+      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(consumer.getSequentialID()))
+         .add("session", toString(consumer.getSessionName()))
+         .add("clientID", toString(consumer.getConnectionClientID()))
          .add("user", toString(session.getUsername()))
-         .add("connectionProtocolName", toString(consumer.getConnectionProtocolName()))
-         .add("queueName", toString(consumer.getQueueName()))
+         .add("protocol", toString(consumer.getConnectionProtocolName()))
+         .add("queue", toString(consumer.getQueueName()))
          .add("queueType", toString(consumer.getQueueType()).toLowerCase())
-         .add("queueAddress", toString(consumer.getQueueAddress().toString()))
-         .add("connectionLocalAddress", toString(consumer.getConnectionLocalAddress()))
-         .add("connectionRemoteAddress", toString(consumer.getConnectionRemoteAddress()))
+         .add("address", toString(consumer.getQueueAddress().toString()))
+         .add("localAddress", toString(consumer.getConnectionLocalAddress()))
+         .add("remoteAddress", toString(consumer.getConnectionRemoteAddress()))
          .add("creationTime", new Date(consumer.getCreationTime()).toString());
       return obj;
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
index 9787229..e14ab6d 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
@@ -44,7 +44,15 @@ public class ProducerView extends ActiveMQAbstractView<ServerProducer> {
    @Override
    public JsonObjectBuilder toJson(ServerProducer producer) {
       ServerSession session = server.getSessionByID(producer.getSessionID());
-      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("iD", toString(producer.getID())).add("session", toString(session.getName())).add("clientID", toString(session.getRemotingConnection().getClientID())).add("user", toString(session.getUsername())).add("protocol", toString(session.getRemotingConnection().getProtocolName())).add("address", toString(producer.getAddress() != null ? producer.getAddress() : session.getDefaultAddress())).add("localAddress", toString(session.getRemotingConnection().getTransportConnection().getLocalAddress())).add("remoteAddress", toString(session.getRemotingConnection().getTransportConnection().getRemoteAddress())).add("creationTime", toString(producer.getCreationTime()));
+      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(producer.getID()))
+         .add("session", toString(session.getName()))
+         .add("clientID", toString(session.getRemotingConnection().getClientID()))
+         .add("user", toString(session.getUsername()))
+         .add("protocol", toString(session.getRemotingConnection().getProtocolName()))
+         .add("address", toString(producer.getAddress() != null ? producer.getAddress() : session.getDefaultAddress()))
+         .add("localAddress", toString(session.getRemotingConnection().getTransportConnection().getLocalAddress()))
+         .add("remoteAddress", toString(session.getRemotingConnection().getTransportConnection().getRemoteAddress()))
+         .add("creationTime", toString(producer.getCreationTime()));
       return obj;
    }
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
index cb80cc9..539ded9 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
@@ -45,7 +45,23 @@ public class QueueView extends ActiveMQAbstractView<QueueControl> {
    @Override
    public JsonObjectBuilder toJson(QueueControl queue) {
       Queue q = server.locateQueue(new SimpleString(queue.getName()));
-      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("iD", toString(queue.getID())).add("name", toString(queue.getName())).add("address", toString(queue.getAddress())).add("filter", toString(queue.getFilter())).add("rate", toString(q.getRate())).add("durable", toString(queue.isDurable())).add("paused", toString(q.isPaused())).add("temporary", toString(queue.isTemporary())).add("purgeOnNoConsumers", toString(queue.isPurgeOnNoConsumers())).add("consumerCount", toString(queue.getConsumerCount())).add("maxConsumers", toString(queue.getMaxConsumers())).add("autoCreated", toString(q.isAutoCreated())).add("user", toString(q.getUser())).add("routingType", toString(queue.getRoutingType())).add("messagesAdded", toString(queue.getMessagesAdded())).add("messageCount", toString(queue.getMessageCount())).add("messagesAcked", toString(queue.getMessagesAcknowledged())).add("deliveringCount", toString(queue.getDeliveringCount())).add("messagesKilled", toString(queue.getMessagesKilled()
 )).add("deliverDeliver", toString(q.isDirectDeliver()));
+      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(queue.getID()))
+         .add("name", toString(queue.getName())).add("address", toString(queue.getAddress()))
+         .add("filter", toString(queue.getFilter())).add("rate", toString(q.getRate()))
+         .add("durable", toString(queue.isDurable())).add("paused", toString(q.isPaused()))
+         .add("temporary", toString(queue.isTemporary()))
+         .add("purgeOnNoConsumers", toString(queue.isPurgeOnNoConsumers()))
+         .add("consumerCount", toString(queue.getConsumerCount()))
+         .add("maxConsumers", toString(queue.getMaxConsumers()))
+         .add("autoCreated", toString(q.isAutoCreated()))
+         .add("user", toString(q.getUser()))
+         .add("routingType", toString(queue.getRoutingType()))
+         .add("messagesAdded", toString(queue.getMessagesAdded()))
+         .add("messageCount", toString(queue.getMessageCount()))
+         .add("messagesAcked", toString(queue.getMessagesAcknowledged()))
+         .add("deliveringCount", toString(queue.getDeliveringCount()))
+         .add("messagesKilled", toString(queue.getMessagesKilled()))
+         .add("deliverDeliver", toString(q.isDirectDeliver()));
       return obj;
    }
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
index c294993..6a93864 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
@@ -25,7 +25,7 @@ import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class SessionView extends ActiveMQAbstractView<ServerSession> {
 
-   private static final String defaultSortColumn = "name";
+   private static final String defaultSortColumn = "id";
 
    public SessionView() {
       super();
@@ -39,7 +39,12 @@ public class SessionView extends ActiveMQAbstractView<ServerSession> {
 
    @Override
    public JsonObjectBuilder toJson(ServerSession session) {
-      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("name", toString(session.getName())).add("username", toString(session.getUsername())).add("creationTime", new Date(session.getCreationTime()).toString()).add("consumerCount", session.getConsumerCount()).add("producerCount", session.getProducerCount()).add("connectionID", session.getConnectionID().toString());
+      JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(session.getName()))
+         .add("user", toString(session.getUsername()))
+         .add("creationTime", new Date(session.getCreationTime()).toString())
+         .add("consumerCount", session.getConsumerCount())
+         .add("producerCount", session.getProducerCount())
+         .add("connectionID", session.getConnectionID().toString());
       return obj;
    }
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ActiveMQServerControlMultiThreadTest.java
----------------------------------------------------------------------
diff --git a/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ActiveMQServerControlMultiThreadTest.java b/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ActiveMQServerControlMultiThreadTest.java
index 6f4b886..609103a 100644
--- a/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ActiveMQServerControlMultiThreadTest.java
+++ b/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ActiveMQServerControlMultiThreadTest.java
@@ -64,8 +64,8 @@ public class ActiveMQServerControlMultiThreadTest extends ManagementTestBase {
 
    @Test
    @BMRules(rules = {@BMRule(name = "Delay listAddress() by 2 secs ",
-      targetClass = "org.apache.activemq.artemis.core.management.impl.view.AddressView ",
-      targetMethod = "<init>(org.apache.activemq.artemis.core.server.ActiveMQServer)",
+      targetClass = "org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl",
+      targetMethod = "getAddressInfo(org.apache.activemq.artemis.api.core.SimpleString)",
       targetLocation = "ENTRY",
       action = "org.apache.activemq.artemis.tests.extras.byteman.ActiveMQServerControlMultiThreadTest.delay(2)")})
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 8c2b6c2..55d7254 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -1518,6 +1518,27 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       array = (JsonArray) queuesAsJsonObject.get("data");
 
       Assert.assertEquals("number of queues returned from query", 1, array.size());
+      //check all field names are available
+      Assert.assertNotEquals("name", "", array.getJsonObject(0).getString("name"));
+      Assert.assertNotEquals("id", "", array.getJsonObject(0).getString("id"));
+      Assert.assertNotEquals("address", "", array.getJsonObject(0).getString("address"));
+      Assert.assertEquals("filter", "", array.getJsonObject(0).getString("filter"));
+      Assert.assertNotEquals("rate", "", array.getJsonObject(0).getString("rate"));
+      Assert.assertEquals("durable", "false", array.getJsonObject(0).getString("durable"));
+      Assert.assertEquals("paused", "false", array.getJsonObject(0).getString("paused"));
+      Assert.assertNotEquals("temporary", "", array.getJsonObject(0).getString("temporary"));
+      Assert.assertEquals("purgeOnNoConsumers", "false", array.getJsonObject(0).getString("purgeOnNoConsumers"));
+      Assert.assertNotEquals("consumerCount", "", array.getJsonObject(0).getString("consumerCount"));
+      Assert.assertEquals("maxConsumers", "-1", array.getJsonObject(0).getString("maxConsumers"));
+      Assert.assertEquals("autoCreated", "false", array.getJsonObject(0).getString("autoCreated"));
+      Assert.assertEquals("user", "", array.getJsonObject(0).getString("user"));
+      Assert.assertNotEquals("routingType", "", array.getJsonObject(0).getString("routingType"));
+      Assert.assertEquals("messagesAdded", "0", array.getJsonObject(0).getString("messagesAdded"));
+      Assert.assertEquals("messageCount", "0", array.getJsonObject(0).getString("messageCount"));
+      Assert.assertEquals("messagesAcked", "0", array.getJsonObject(0).getString("messagesAcked"));
+      Assert.assertEquals("deliveringCount", "0", array.getJsonObject(0).getString("deliveringCount"));
+      Assert.assertEquals("messagesKilled", "0", array.getJsonObject(0).getString("messagesKilled"));
+      Assert.assertEquals("deliverDeliver", "true", array.getJsonObject(0).getString("deliverDeliver"));
 
    }
 
@@ -1793,7 +1814,11 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       array = (JsonArray) addressesAsJsonObject.get("data");
 
       Assert.assertEquals("number of addresses returned from query", 1, array.size());
+      //check all field names
       Assert.assertEquals("address name check", addressName1.toString(), array.getJsonObject(0).getString("name"));
+      Assert.assertNotEquals("id", "", array.getJsonObject(0).getString("id"));
+      Assert.assertTrue("routingTypes", array.getJsonObject(0).getString("routingTypes").contains(RoutingType.ANYCAST.name()));
+      Assert.assertEquals("queueCount", "1", array.getJsonObject(0).getString("queueCount"));
 
       //test with empty filter - all addresses should be returned
       filterString = createJsonFilter("", "", "");
@@ -1909,9 +1934,132 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
          Assert.assertEquals("address name in consumer", addressName2.toString(), jsonConsumer.getString("address"));
          Assert.assertEquals("consumer protocol ", "CORE", jsonConsumer.getString("protocol"));
          Assert.assertEquals("queue type", "anycast", jsonConsumer.getString("queueType"));
+         Assert.assertNotEquals("id", "", jsonConsumer.getString("id"));
+         Assert.assertNotEquals("session", "", jsonConsumer.getString("session"));
+         Assert.assertEquals("clientID", "", jsonConsumer.getString("clientID"));
+         Assert.assertEquals("user", "", jsonConsumer.getString("user"));
+         Assert.assertNotEquals("localAddress", "", jsonConsumer.getString("localAddress"));
+         Assert.assertNotEquals("remoteAddress", "", jsonConsumer.getString("remoteAddress"));
+         Assert.assertNotEquals("creationTime", "", jsonConsumer.getString("creationTime"));
+      }
+
+   }
+
+   @Test
+   public void testListSessions() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString addressName1 = new SimpleString("my_address_one");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
+      server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
 
+      // create some consumers
+      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator);) {
+
+         ClientSession session1 = csf.createSession();
+         ClientSession session2 = csf.createSession();
+
+         ClientConsumer consumer1_q1 = session1.createConsumer(queueName1);
+         ClientConsumer consumer2_q1 = session2.createConsumer(queueName1);
+
+         //bring back all sessions
+         String filterString = createJsonFilter("", "", "");
+         String sessionsAsJsonString = serverControl.listSessions(filterString, 1, 50);
+         JsonObject sessionsAsJsonObject = JsonUtil.readJsonObject(sessionsAsJsonString);
+         JsonArray array = (JsonArray) sessionsAsJsonObject.get("data");
+
+         Assert.assertTrue("number of sessions returned from query", 2 <= array.size());
+         JsonObject jsonSession = array.getJsonObject(0);
+
+         //check all fields
+         Assert.assertNotEquals("id", "", jsonSession.getString("id"));
+         Assert.assertEquals("user", "", jsonSession.getString("user"));
+         Assert.assertNotEquals("creationTime", "", jsonSession.getString("creationTime"));
+         Assert.assertEquals("consumerCount", 1, jsonSession.getInt("consumerCount"));
+         Assert.assertTrue("producerCount", 0 <= jsonSession.getInt("producerCount"));
+         Assert.assertNotEquals("connectionID", "", jsonSession.getString("connectionID"));
       }
+   }
+
+   @Test
+   public void testListConnections() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString addressName1 = new SimpleString("my_address_one");
+
+      ActiveMQServerControl serverControl = createManagementControl();
 
+      server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
+      server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
+
+      // create some consumers
+      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator);) {
+
+         ClientSession session1 = csf.createSession();
+
+         //bring back all connection
+         String filterString = createJsonFilter("", "", "");
+         String connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
+         JsonObject connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
+         JsonArray array = (JsonArray) connectionsAsJsonObject.get("data");
+
+         Assert.assertTrue("number of connections returned from query", 1 <= array.size());
+         JsonObject jsonConnection = array.getJsonObject(0);
+
+         //check all fields
+         Assert.assertNotEquals("connectionID", "", jsonConnection.getString("connectionID"));
+         Assert.assertNotEquals("remoteAddress", "", jsonConnection.getString("remoteAddress"));
+         Assert.assertEquals("users", "", jsonConnection.getString("users"));
+         Assert.assertNotEquals("creationTime", "", jsonConnection.getString("creationTime"));
+         Assert.assertNotEquals("implementation", "", jsonConnection.getString("implementation"));
+         Assert.assertNotEquals("protocol", "", jsonConnection.getString("protocol"));
+         Assert.assertEquals("clientID", "", jsonConnection.getString("clientID"));
+         Assert.assertNotEquals("localAddress", "", jsonConnection.getString("localAddress"));
+         Assert.assertEquals("sessionCount", 1, jsonConnection.getInt("sessionCount"));
+      }
+   }
+
+   @Test
+   public void testListProducers() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString addressName1 = new SimpleString("my_address_one");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
+      server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
+
+      // create some consumers
+      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator);) {
+
+         ClientSession session1 = csf.createSession();
+         ClientSession session2 = csf.createSession();
+
+         ClientProducer producer1 = session1.createProducer(addressName1);
+         ClientProducer producer2 = session1.createProducer(addressName1);
+
+         //bring back all producers
+         String filterString = createJsonFilter("", "", "");
+         String producersAsJsonString = serverControl.listProducers(filterString, 1, 50);
+         JsonObject producersAsJsonObject = JsonUtil.readJsonObject(producersAsJsonString);
+         JsonArray array = (JsonArray) producersAsJsonObject.get("data");
+
+         Assert.assertTrue("number of producers returned from query", 2 <= array.size());
+         JsonObject jsonSession = array.getJsonObject(0);
+
+         //check all fields
+         Assert.assertNotEquals("id", "", jsonSession.getString("id"));
+         Assert.assertNotEquals("session", "", jsonSession.getString("session"));
+         Assert.assertEquals("clientID", "", jsonSession.getString("clientID"));
+         Assert.assertEquals("user", "", jsonSession.getString("user"));
+         Assert.assertNotEquals("protocol", "", jsonSession.getString("protocol"));
+         Assert.assertEquals("address", "", jsonSession.getString("address"));
+         Assert.assertNotEquals("localAddress", "", jsonSession.getString("localAddress"));
+         Assert.assertNotEquals("remoteAddress", "", jsonSession.getString("remoteAddress"));
+         Assert.assertNotEquals("creationTime", "", jsonSession.getString("creationTime"));
+
+      }
    }
 
    @Test

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b39c5567/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
index 4a9f861..9351fee 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
@@ -994,7 +994,7 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
 
          @Override
          public String listConnections(String filter, int page, int pageSize) throws Exception {
-            return (String) proxy.invokeOperation("listAddresses", filter, page, pageSize);
+            return (String) proxy.invokeOperation("listConnections", filter, page, pageSize);
          }
 
          @Override


[2/4] activemq-artemis git commit: NO-JIRA fix fieldname regression

Posted by mi...@apache.org.
NO-JIRA fix fieldname regression

Fix field name regression, but ensure predicate and sorting still works.
Remove reflection introduced by new sorting, and rely on field mapping.

Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/f08da813
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/f08da813
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/f08da813

Branch: refs/heads/master
Commit: f08da813a18d5152fd7e4e98037c127e77f15ca4
Parents: b39c556
Author: Michael André Pearce <mi...@me.com>
Authored: Mon Dec 11 06:47:08 2017 +0000
Committer: Michael Pearce <mi...@me.com>
Committed: Tue Dec 12 13:17:02 2017 +0000

----------------------------------------------------------------------
 .../impl/view/ActiveMQAbstractView.java         | 39 +++------------
 .../core/management/impl/view/AddressView.java  | 30 ++++++++++++
 .../management/impl/view/ConnectionView.java    | 35 +++++++++++++-
 .../core/management/impl/view/ConsumerView.java | 37 +++++++++++++-
 .../core/management/impl/view/ProducerView.java | 38 +++++++++++++++
 .../core/management/impl/view/QueueView.java    | 51 ++++++++++++++++++++
 .../core/management/impl/view/SessionView.java  | 20 ++++++++
 7 files changed, 217 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
index f4e44f7..29f5fcf 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
@@ -53,8 +53,6 @@ public abstract class ActiveMQAbstractView<T> {
 
    protected String options;
 
-   private Method getter;
-
    public ActiveMQAbstractView() {
       this.sortColumn = getDefaultOrderColumn();
       this.sortOrder = "asc";
@@ -98,29 +96,18 @@ public abstract class ActiveMQAbstractView<T> {
       return predicate;
    }
 
-   private Method getGetter() {
-      if (getter == null) {
-         getter = findGetterMethod(getClassT(), sortColumn);
-      }
-      return getter;
-   }
-
    public Ordering<T> getOrdering() {
       return new Ordering<T>() {
-
          @Override
          public int compare(T left, T right) {
-            Method getter = getGetter();
             try {
-               if (getter != null) {
-                  Object leftValue = getter.invoke(left);
-                  Object rightValue = getter.invoke(right);
-                  if (leftValue instanceof Comparable && rightValue instanceof Comparable) {
-                     if (sortOrder.equals("desc")) {
-                        return ((Comparable) rightValue).compareTo(leftValue);
-                     } else {
-                        return ((Comparable) leftValue).compareTo(rightValue);
-                     }
+               Object leftValue = getField(left, sortColumn);;
+               Object rightValue = getField(right, sortColumn);;
+               if (leftValue instanceof Comparable && rightValue instanceof Comparable) {
+                  if (sortOrder.equals("desc")) {
+                     return ((Comparable) rightValue).compareTo(leftValue);
+                  } else {
+                     return ((Comparable) leftValue).compareTo(rightValue);
                   }
                }
                return 0;
@@ -132,17 +119,7 @@ public abstract class ActiveMQAbstractView<T> {
       };
    }
 
-   public static Method findGetterMethod(Class clazz, String sortColumn) {
-      String name = "get" + Character.toUpperCase(sortColumn.charAt(0)) + sortColumn.substring(1);
-      Method[] methods = clazz.getMethods();
-      for (Method method : methods) {
-         Class<?>[] params = method.getParameterTypes();
-         if (method.getName().equals(name) && params.length == 0) {
-            return method;
-         }
-      }
-      return null;
-   }
+   abstract Object getField(T t, String fieldName);
 
    public void setOptions(String options) {
       JsonObject json = JsonUtil.readJsonObject(options);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
index ea24e78..58bf52d 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
@@ -17,9 +17,16 @@
 package org.apache.activemq.artemis.core.management.impl.view;
 
 import javax.json.JsonObjectBuilder;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 import org.apache.activemq.artemis.core.management.impl.view.predicate.AddressFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.core.server.impl.AddressInfo;
+import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class AddressView extends ActiveMQAbstractView<AddressInfo> {
@@ -56,6 +63,29 @@ public class AddressView extends ActiveMQAbstractView<AddressInfo> {
       return obj;
    }
 
+   public Object getField(AddressInfo address, String fieldName) {
+      if (address == null) {
+         return null;
+      }
+
+      switch (fieldName) {
+         case "id":
+            return address.getId();
+         case "name":
+            return address.getName();
+         case "routingTypes":
+            return address.getRoutingTypes();
+         case "queueCount":
+            try {
+               return server.bindingQuery(address.getName()).getQueueNames().size();
+            } catch (Exception e) {
+               return 0;
+            }
+         default:
+            throw new IllegalArgumentException("Unsupported field, " + fieldName);
+      }
+   }
+
    @Override
    public String getDefaultOrderColumn() {
       return defaultSortColumn;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
index 94ee487..1baf039 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
@@ -24,6 +24,7 @@ import java.util.Set;
 
 import org.apache.activemq.artemis.core.management.impl.view.predicate.ConnectionFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.ServerConsumer;
 import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
 import org.apache.activemq.artemis.utils.JsonLoader;
@@ -61,13 +62,45 @@ public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
          .add("remoteAddress", toString(connection.getRemoteAddress()))
          .add("users", StringUtil.joinStringList(users, ","))
          .add("creationTime", new Date(connection.getCreationTime()).toString())
-         .add("implementation", toString(toString(connection.getClass().getSimpleName())))
+         .add("implementation", toString(connection.getClass().getSimpleName()))
          .add("protocol", toString(connection.getProtocolName()))
          .add("clientID", toString(connection.getClientID()))
          .add("localAddress", toString(connection.getTransportLocalAddress()))
          .add("sessionCount", server.getSessions(connection.getID().toString()).size());
    }
 
+   public Object getField(RemotingConnection connection, String fieldName) {
+      List<ServerSession> sessions = server.getSessions(connection.getID().toString());
+
+      switch (fieldName) {
+         case "connectionID":
+            return connection.getID();
+         case "remoteAddress":
+            return connection.getRemoteAddress();
+         case "users":
+            Set<String> users = new HashSet<>();
+            for (ServerSession session : sessions) {
+               String username = session.getUsername() == null ? "" : session.getUsername();
+               users.add(username);
+            }
+            return users;
+         case "creationTime":
+            return new Date(connection.getCreationTime());
+         case "implementation":
+            return connection.getClass().getSimpleName();
+         case "protocol":
+            return connection.getProtocolName();
+         case "clientID":
+            return connection.getClientID();
+         case "localAddress":
+            return connection.getTransportLocalAddress();
+         case "sessionCount":
+            return sessions.size();
+         default:
+            throw new IllegalArgumentException("Unsupported field, " + fieldName);
+      }
+   }
+
    @Override
    public String getDefaultOrderColumn() {
       return defaultSortColumn;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
index 4b1feb3..1eac72f 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
@@ -22,6 +22,7 @@ import java.util.Date;
 import org.apache.activemq.artemis.core.management.impl.view.predicate.ConsumerFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.ServerConsumer;
+import org.apache.activemq.artemis.core.server.ServerProducer;
 import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
@@ -58,13 +59,47 @@ public class ConsumerView extends ActiveMQAbstractView<ServerConsumer> {
          .add("protocol", toString(consumer.getConnectionProtocolName()))
          .add("queue", toString(consumer.getQueueName()))
          .add("queueType", toString(consumer.getQueueType()).toLowerCase())
-         .add("address", toString(consumer.getQueueAddress().toString()))
+         .add("address", toString(consumer.getQueueAddress()))
          .add("localAddress", toString(consumer.getConnectionLocalAddress()))
          .add("remoteAddress", toString(consumer.getConnectionRemoteAddress()))
          .add("creationTime", new Date(consumer.getCreationTime()).toString());
       return obj;
    }
 
+   public Object getField(ServerConsumer consumer, String fieldName) {
+      ServerSession session = server.getSessionByID(consumer.getSessionID());
+
+      //if session is not available then consumer is not in valid state - ignore
+      if (session == null) {
+         return null;
+      }
+
+      switch (fieldName) {
+         case "id":
+            return consumer.getSequentialID();
+         case "session":
+            return consumer.getSessionName();
+         case "user":
+            return session.getUsername();
+         case "clientID":
+            return consumer.getConnectionClientID();
+         case "protocol":
+            return consumer.getConnectionProtocolName();
+         case "queue":
+            return consumer.getQueueName();
+         case "queueType":
+            return consumer.getQueueType();
+         case "localAddress":
+            return consumer.getConnectionLocalAddress();
+         case "remoteAddress":
+            return consumer.getConnectionRemoteAddress();
+         case "creationTime":
+            return new Date(consumer.getCreationTime());
+         default:
+            throw new IllegalArgumentException("Unsupported field, " + fieldName);
+      }
+   }
+
    @Override
    public String getDefaultOrderColumn() {
       return defaultSortColumn;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
index e14ab6d..af19d74 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
@@ -44,6 +44,12 @@ public class ProducerView extends ActiveMQAbstractView<ServerProducer> {
    @Override
    public JsonObjectBuilder toJson(ServerProducer producer) {
       ServerSession session = server.getSessionByID(producer.getSessionID());
+
+      //if session is not available then consumer is not in valid state - ignore
+      if (session == null) {
+         return null;
+      }
+
       JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(producer.getID()))
          .add("session", toString(session.getName()))
          .add("clientID", toString(session.getRemotingConnection().getClientID()))
@@ -56,6 +62,38 @@ public class ProducerView extends ActiveMQAbstractView<ServerProducer> {
       return obj;
    }
 
+   public Object getField(ServerProducer producer, String fieldName) {
+      ServerSession session = server.getSessionByID(producer.getSessionID());
+
+      //if session is not available then consumer is not in valid state - ignore
+      if (session == null) {
+         return null;
+      }
+
+      switch (fieldName) {
+         case "id":
+            return producer.getID();
+         case "session":
+            return session.getName();
+         case "user":
+            return session.getUsername();
+         case "clientID":
+            return session.getRemotingConnection().getClientID();
+         case "protocol":
+            return session.getRemotingConnection().getProtocolName();
+         case "address":
+            return producer.getAddress() != null ? producer.getAddress() : session.getDefaultAddress();
+         case "localAddress":
+            return session.getRemotingConnection().getTransportConnection().getLocalAddress();
+         case "remoteAddress":
+            return session.getRemotingConnection().getTransportConnection().getRemoteAddress();
+         case "creationTime":
+            return producer.getCreationTime();
+         default:
+            throw new IllegalArgumentException("Unsupported field, " + fieldName);
+      }
+   }
+
    @Override
    public String getDefaultOrderColumn() {
       return defaultSortColumn;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
index 539ded9..1f8ac0a 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
@@ -18,11 +18,14 @@ package org.apache.activemq.artemis.core.management.impl.view;
 
 import javax.json.JsonObjectBuilder;
 
+import java.util.Date;
+
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.management.QueueControl;
 import org.apache.activemq.artemis.core.management.impl.view.predicate.QueueFilterPredicate;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.Queue;
+import org.apache.activemq.artemis.core.server.ServerSession;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class QueueView extends ActiveMQAbstractView<QueueControl> {
@@ -65,6 +68,54 @@ public class QueueView extends ActiveMQAbstractView<QueueControl> {
       return obj;
    }
 
+   public Object getField(QueueControl queue, String fieldName) {
+      Queue q = server.locateQueue(new SimpleString(queue.getName()));
+      switch (fieldName) {
+         case "id":
+            return queue.getID();
+         case "name":
+            return queue.getName();
+         case "address":
+            return queue.getAddress();
+         case "filter":
+            return queue.getFilter();
+         case "rate":
+            return q.getRate();
+         case "durable":
+            return queue.isDurable();
+         case "paused":
+            return q.isPaused();
+         case "temporary":
+            return queue.isTemporary();
+         case "purgeOnNoConsumers":
+            return queue.isPurgeOnNoConsumers();
+         case "consumerCount":
+            return queue.getConsumerCount();
+         case "maxConsumers":
+            return queue.getMaxConsumers();
+         case "autoCreated":
+            return q.isAutoCreated();
+         case "user":
+            return q.getUser();
+         case "routingType":
+            return queue.getRoutingType();
+         case "messagesAdded":
+            return queue.getMessagesAdded();
+         case "messageCount":
+            return queue.getMessageCount();
+         case "messagesAcked":
+            return queue.getMessagesAcknowledged();
+         case "deliveringCount":
+            return queue.getDeliveringCount();
+         case "messagesKilled":
+            return queue.getMessagesKilled();
+         case "deliverDeliver":
+            return q.isDirectDeliver();
+         default:
+            throw new IllegalArgumentException("Unsupported field, " + fieldName);
+      }
+   }
+
    @Override
    public String getDefaultOrderColumn() {
       return defaultSortColumn;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f08da813/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
index 6a93864..35fc8b8 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
@@ -21,6 +21,7 @@ import java.util.Date;
 
 import org.apache.activemq.artemis.core.management.impl.view.predicate.SessionFilterPredicate;
 import org.apache.activemq.artemis.core.server.ServerSession;
+import org.apache.activemq.artemis.core.server.impl.AddressInfo;
 import org.apache.activemq.artemis.utils.JsonLoader;
 
 public class SessionView extends ActiveMQAbstractView<ServerSession> {
@@ -48,6 +49,25 @@ public class SessionView extends ActiveMQAbstractView<ServerSession> {
       return obj;
    }
 
+   public Object getField(ServerSession session, String fieldName) {
+      switch (fieldName) {
+         case "id":
+            return session.getName();
+         case "user":
+            return session.getUsername();
+         case "creationTime":
+            return new Date(session.getCreationTime());
+         case "consumerCount":
+            return session.getConsumerCount();
+         case "producerCount":
+            return session.getProducerCount();
+         case "connectionID":
+            return session.getConnectionID();
+         default:
+            throw new IllegalArgumentException("Unsupported field, " + fieldName);
+      }
+   }
+
    @Override
    public String getDefaultOrderColumn() {
       return defaultSortColumn;