Author: orudyy
Date: Mon May 11 13:36:27 2015
New Revision: 1678753

URL: http://svn.apache.org/r1678753
Log:
QPID-6536: [Java Broker] Display user friendly message for deleted or 
unavailable configured object in configured object tab opened before it was 
deleted or became unavailable

Added:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/warning.html
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/images/warning.png
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/WarningPane.js
Modified:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AccessControlProvider.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Connection.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Exchange.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Plugin.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/PreferencesProvider.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/accesscontrolprovider/AclFile.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js
    
qpid/java/trunk/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AccessControlProviderRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/TrustStoreRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/UserRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/UserRestACLTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/VirtualHostACLTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/VirtualHostNodeACLTest.java

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
 Mon May 11 13:36:27 2015
@@ -351,6 +351,12 @@ public class RestServlet extends Abstrac
 
         Collection<ConfiguredObject<?>> allObjects = getObjects(request);
 
+        if (allObjects.isEmpty() && isSingleObjectRequest(request) )
+        {
+            sendErrorResponse(request, response, 
HttpServletResponse.SC_NOT_FOUND, "Not Found");
+            return;
+        }
+
         int depth;
         boolean actuals;
         boolean includeSystemContext;
@@ -389,6 +395,17 @@ public class RestServlet extends Abstrac
         mapper.writeValue(writer, extractInitialConfig && output.size() == 1 ? 
output.get(0) : output);
     }
 
+    private boolean isSingleObjectRequest(HttpServletRequest request)
+    {
+        if (_hierarchy.length > 0)
+        {
+            String[] pathInfoElements = getPathInfoElements(request);
+            return pathInfoElements != null && pathInfoElements.length == 
_hierarchy.length;
+        }
+
+        return false;
+    }
+
     private void setContentDispositionHeaderIfNecessary(final 
HttpServletResponse response,
                                                         final String 
attachmentFilename)
     {

Added: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/warning.html
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/warning.html?rev=1678753&view=auto
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/warning.html
 (added)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/warning.html
 Mon May 11 13:36:27 2015
@@ -0,0 +1,29 @@
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ -
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+ -->
+<div class="dijit dijitReset" id="widget_${id}" role="presentation">
+    <div class="warningPane">
+        <div class="warningIcon"></div>
+        <div data-dojo-attach-point='warningMessage' 
class="warningMessage">Not Found</div>
+    </div>
+    <div class="clear dijitDialogPaneActionBar">
+        <button data-dojo-attach-event='ondijitclick:_onButtonClick' 
data-dojo-type="dijit/form/Button" 
data-dojo-attach-point="closeButton">Close</button>
+    </div>
+</div>
\ No newline at end of file

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css
 Mon May 11 13:36:27 2015
@@ -336,4 +336,28 @@ div .messages {
     margin-right:-10px;
     margin-bottom:-10px;
     margin-top:5px;
+}
+
+.warningIcon
+{
+    width:50px;
+    height:50px;
+    background:url("../images/warning.png") left center no-repeat;
+    display: inline-block;
+    float: left;
+}
+.warningMessage
+{
+    font-weight: bold;
+    color: #f44444;
+    padding: 4px;
+    margin-left:55px;
+    padding-top:10px;
+}
+
+.warningPane
+{
+    vertical-align: middle;
+    width:100%;
+    height:100%;
 }
\ No newline at end of file

Added: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/images/warning.png
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/images/warning.png?rev=1678753&view=auto
==============================================================================
Binary files 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/images/warning.png
 (added) and 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/images/warning.png
 Mon May 11 13:36:27 2015 differ

Added: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/WarningPane.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/WarningPane.js?rev=1678753&view=auto
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/WarningPane.js
 (added)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/WarningPane.js
 Mon May 11 13:36:27 2015
@@ -0,0 +1,73 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+define([
+        "dojo/_base/declare",
+        "dojo/_base/array",
+        "dojo/_base/lang",
+        "dojo/_base/event",
+        "dijit/_WidgetBase",
+        "dijit/_TemplatedMixin",
+        "dijit/_WidgetsInTemplateMixin",
+        "dojo/text!common/warning.html",
+        "dojox/html/entities",
+        "dijit/form/Button",
+        "dojo/domReady!"],
+function (declare, array, lang, event, _WidgetBase, _TemplatedMixin, 
_WidgetsInTemplateMixin, template, entities)
+{
+
+  return declare("qpid.common.WarningPane", [_WidgetBase, _TemplatedMixin, 
_WidgetsInTemplateMixin],
+    {
+      templateString: template,
+      message: "Not Found",
+
+      buildRendering: function()
+      {
+        //Strip out the apache comment header from the template html as 
comments unsupported.
+        this.templateString = this.templateString.replace(/<!--[\s\S]*?-->/g, 
"");
+        this.inherited(arguments);
+      },
+      postCreate: function()
+      {
+        this.inherited(arguments);
+        this._renderMessage();
+        var that = this;
+        this.closeButton.on("click", function(e){that._onButtonClick(e)});
+      },
+      _onButtonClick: function( /*Event*/ e)
+      {
+        this.onClick(e);
+      },
+      onClick: function( /*Event*/ e)
+      {
+        // extention point
+      },
+      _setMessageAttr: function(message)
+      {
+        this.message = message;
+        this._renderMessage();
+      },
+      _renderMessage : function()
+      {
+        this.warningMessage.innerHTML = entities.encode(String(this.message));
+      }
+    }
+  );
+});

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
 Mon May 11 13:36:27 2015
@@ -35,6 +35,8 @@ define(["dojo/_base/xhr",
         "dojox/html/entities",
         "qpid/common/widgetconfigurer",
         "dijit/registry",
+        "qpid/common/WarningPane",
+        "qpid/common/updater",
         "dijit/TitlePane",
         "dijit/Dialog",
         "dijit/form/Form",
@@ -49,7 +51,7 @@ define(["dojo/_base/xhr",
         "dojox/validate/web",
         "dojo/domReady!"
         ],
-       function (xhr, array, event, lang, json, dom, geometry, domStyle, win, 
query, parser, Memory, w, on, entities, widgetconfigurer, registry) {
+       function (xhr, array, event, lang, json, dom, geometry, domStyle, win, 
query, parser, Memory, w, on, entities, widgetconfigurer, registry, 
WarningPane, updater) {
            var util = {};
            if (Array.isArray) {
                util.isArray = function (object) {
@@ -208,6 +210,88 @@ define(["dojo/_base/xhr",
                return query("[widgetid]", 
root).map(registry.byNode).filter(function(w){ return w;});
            };
 
+           util.tabErrorHandler = function(error, tabData)
+           {
+                var category = tabData.category;
+                var name = tabData.name;
+                var message = category.charAt(0).toUpperCase() + 
category.slice(1) + " '" + name + "' is unavailable or deleted. Tab 
auto-refresh is stopped.";
+
+                var cleanUpTab = function()
+                {
+                    // stop updating the tab
+                    updater.remove(tabData.updater);
+
+                    // delete tab widgets
+                    var widgets = 
registry.findWidgets(tabData.contentPane.containerNode);
+                    array.forEach(widgets, function(item) { 
item.destroyRecursive();});
+                    dom.empty(tabData.contentPane.containerNode);
+                }
+
+                var closeTab = function(e)
+                {
+                    tabData.contentPane.onClose()
+                    tabData.tabContainer.removeChild(tabData.contentPane);
+                    tabData.contentPane.destroyRecursive();
+                };
+
+                util.responseErrorHandler(error, {"404": 
util.warnOn404ErrorHandler(message, tabData.contentPane.containerNode, 
cleanUpTab, closeTab)});
+           }
+
+           util.warnOn404ErrorHandler = function(message, containerNode, 
cleanUpCallback, onClickHandler)
+           {
+                return function()
+                {
+                    try
+                    {
+                        if (cleanUpCallback)
+                        {
+                            cleanUpCallback();
+                        }
+
+                        var node = dom.create("div", {innerHTML: message }, 
containerNode);
+                        var warningPane = new WarningPane({message: message}, 
node);
+                        if (onClickHandler)
+                        {
+                            warningPane.on("click", onClickHandler);
+                        }
+                        else
+                        {
+                            warningPane.closeButton.set("disabled", true);
+                        }
+                    }
+                    catch(e)
+                    {
+                        console.error(e);
+                    }
+                };
+           };
+
+           util.responseErrorHandler = function(error, responseCodeHandlerMap, 
defaultCallback)
+           {
+                var handler;
+                if (error)
+                {
+                    var status = error.status || (error.response ? 
error.response.status : null);
+                    if (status != undefined && status != null)
+                    {
+                        handler = responseCodeHandlerMap[String(status)];
+                    }
+                }
+
+                if (!handler)
+                {
+                    handler =  defaultCallback || 
util.consoleLoggingErrorHandler;
+                }
+
+                handler(error);
+           };
+
+           util.consoleLoggingErrorHandler = function(error)
+           {
+                var message = util.getErrorMessage(error, "Unexpected error is 
reported by the broker");
+                console.error(message);
+           };
+
            util.xhrErrorHandler = function(error)
            {
              var fallback = "Unexpected error - see server logs";
@@ -217,7 +301,7 @@ define(["dojo/_base/xhr",
 
              if (error)
              {
-               var status = error.status || error.response ? 
error.response.status : null;
+               var status = error.status || (error.response ? 
error.response.status : null);
                if (status != undefined && status != null)
                {
                  var message;
@@ -237,23 +321,7 @@ define(["dojo/_base/xhr",
                  }
                  else
                  {
-                   message = error.message ? error.message : fallback;
-
-                   var responseText = error.responseText? error.responseText: 
(error.response ? error.response.text : null);
-
-                   // Try for a more detail error sent by the Broker as json
-                   if (responseText)
-                   {
-                     try
-                     {
-                       var errorObj = json.parse(responseText);
-                       message = errorObj.hasOwnProperty("errorMessage") ? 
errorObj.errorMessage : message;
-                     }
-                     catch (e)
-                     {
-                       // Ignore
-                     }
-                   }
+                   message = util.getErrorMessage(error, fallback);
                  }
 
                  errorMessageNode.innerHTML = entities.encode(message ? 
message : fallback);
@@ -280,6 +348,28 @@ define(["dojo/_base/xhr",
              }
            };
 
+           util.getErrorMessage = function (error, fallback)
+           {
+                var message = error.message ? error.message : fallback;
+
+                var responseText = error.responseText? error.responseText : 
(error.response ? error.response.text : null);
+
+                // Try for a more detail error sent by the Broker as json
+                if (responseText)
+                {
+                    try
+                    {
+                      var errorObj = json.parse(responseText);
+                      message = errorObj.hasOwnProperty("errorMessage") ? 
errorObj.errorMessage : message;
+                    }
+                    catch (e)
+                    {
+                      // Ignore
+                    }
+                }
+                return message || fallback;
+           };
+
            util.equals = function(object1, object2)
            {
              if (object1 && object2)

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AccessControlProvider.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AccessControlProvider.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AccessControlProvider.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AccessControlProvider.js
 Mon May 11 13:36:27 2015
@@ -52,7 +52,7 @@ define(["dojo/parser",
                 contentPane.containerNode.innerHTML = template;
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
-                    that.accessControlProviderUpdater = new 
AccessControlProviderUpdater(contentPane.containerNode, that.modelObj, 
that.controller);
+                    that.accessControlProviderUpdater = new 
AccessControlProviderUpdater(that);
                     var deleteButton = 
query(".deleteAccessControlProviderButton", contentPane.containerNode)[0];
                     var deleteWidget = registry.byNode(deleteButton);
                     connect.connect(deleteWidget, "onClick",
@@ -84,8 +84,13 @@ define(["dojo/parser",
              }
          };
 
-           function AccessControlProviderUpdater(node, groupProviderObj, 
controller)
+           function AccessControlProviderUpdater(aclTab)
            {
+               this.tabObject = aclTab;
+               var node = aclTab.contentPane.containerNode;
+               var groupProviderObj =  aclTab.modelObj;
+               var controller = aclTab.controller;
+
                this.controller = controller;
                this.management = controller.management;
                this.modelObj = groupProviderObj;
@@ -107,9 +112,17 @@ define(["dojo/parser",
                              var ui = that.accessControlProviderData.type;
                              
require(["qpid/management/accesscontrolprovider/"+ ui],
                                  function(SpecificProvider) {
-                                 that.details = new 
SpecificProvider(query(".providerDetails", node)[0], groupProviderObj, 
controller);
+                                 that.details = new 
SpecificProvider(query(".providerDetails", node)[0], groupProviderObj, 
controller, aclTab);
                              });
-                         }, util.xhrErrorHandler);
+                         },
+                         function(error)
+                         {
+                              util.tabErrorHandler(error, {updater: that,
+                                                           contentPane: 
that.tabObject.contentPane,
+                                                           tabContainer: 
that.tabObject.controller.tabContainer,
+                                                           name: 
that.modelObj.name,
+                                                           category: "Access 
Control Provider"});
+                         });
            }
 
            AccessControlProviderUpdater.prototype.updateHeader = function()

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
 Mon May 11 13:36:27 2015
@@ -139,7 +139,7 @@ define(["dojo/parser",
                this.name = query(".name", node)[0];
                this.type = query(".type", node)[0];
                this.state = query(".state", node)[0];
-               this.authenticationProvider = authenticationProvider;
+               this.tabObject = authenticationProvider;
                
this.preferencesProviderType=dom.byId("preferencesProviderType");
                
this.preferencesProviderName=dom.byId("preferencesProviderName");
                
this.preferencesProviderState=dom.byId("preferencesProviderState");
@@ -178,7 +178,7 @@ define(["dojo/parser",
 
            AuthProviderUpdater.prototype.updateHeader = function()
            {
-               this.authenticationProvider.name = this.authProviderData[ 
"name" ]
+               this.tabObject.name = this.authProviderData[ "name" ]
                this.name.innerHTML = 
entities.encode(String(this.authProviderData[ "name" ]));
                this.type.innerHTML = 
entities.encode(String(this.authProviderData[ "type" ]));
                this.state.innerHTML = 
entities.encode(String(this.authProviderData[ "state" ]));
@@ -195,6 +195,14 @@ define(["dojo/parser",
                     {
                         callback();
                     }
+                 },
+                 function(error)
+                 {
+                    util.tabErrorHandler(error, {updater: that,
+                                                 contentPane: 
that.tabObject.contentPane,
+                                                 tabContainer: 
that.tabObject.controller.tabContainer,
+                                                 name: that.modelObj.name,
+                                                 category: "Authentication 
Provider"});
                  });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Connection.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Connection.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Connection.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Connection.js
 Mon May 11 13:36:27 2015
@@ -51,7 +51,7 @@ define(["dojo/parser",
                             containerNode.innerHTML = template;
                             
parser.parse(contentPane.containerNode).then(function(instances)
                             {
-                                that.connectionUpdater = new 
ConnectionUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                                that.connectionUpdater = new 
ConnectionUpdater(that);
                                 
that.connectionUpdater.update(function(){updater.add( that.connectionUpdater 
);});
 
                                 that.closeButton = 
registry.byNode(query(".closeButton", containerNode)[0]);
@@ -78,11 +78,13 @@ define(["dojo/parser",
              this.contentPane.destroyRecursive();
            }
 
-           function ConnectionUpdater(containerNode, connectionObj, controller)
+           function ConnectionUpdater(connectionTab)
            {
                var that = this;
-               this.management = controller.management;
-               this.modelObj = connectionObj;
+               this.tabObject = connectionTab;
+               this.management = connectionTab.controller.management;
+               this.modelObj = connectionTab.modelObj;
+               var containerNode = connectionTab.contentPane.containerNode;
 
                function findNode(name) {
                    return query("." + name, containerNode)[0];
@@ -249,6 +251,14 @@ define(["dojo/parser",
 
                        // update sessions
                        that.sessionsGrid.update(that.connectionData.sessions)
+                   },
+                   function(error)
+                   {
+                      util.tabErrorHandler(error, {updater: that,
+                                                   contentPane: 
that.tabObject.contentPane,
+                                                   tabContainer: 
that.tabObject.controller.tabContainer,
+                                                   name: that.modelObj.name,
+                                                   category: "Connection"});
                    });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Exchange.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Exchange.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Exchange.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Exchange.js
 Mon May 11 13:36:27 2015
@@ -72,7 +72,7 @@ define(["dojo/_base/xhr",
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
 
-                            that.exchangeUpdater = new 
ExchangeUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                            that.exchangeUpdater = new ExchangeUpdater(that);
                             var addBindingButton = query(".addBindingButton", 
contentPane.containerNode)[0];
                             connect.connect(registry.byNode(addBindingButton), 
"onClick",
                                             function(evt){
@@ -118,12 +118,13 @@ define(["dojo/_base/xhr",
                         this.exchangeUpdater);
            }
 
-           function ExchangeUpdater(containerNode, exchangeObj, controller)
+           function ExchangeUpdater(exchangeTab)
            {
                var that = this;
-
-               this.management = controller.management;
-               this.modelObj = exchangeObj;
+               this.tabObject = exchangeTab;
+               this.management = exchangeTab.controller.management;
+               this.modelObj = exchangeTab.modelObj;
+               var containerNode = exchangeTab.contentPane.containerNode;
 
                function findNode(name) {
                    return query("." + name, containerNode)[0];
@@ -264,7 +265,15 @@ define(["dojo/_base/xhr",
                       // update bindings
                       
thisObj.bindingsGrid.update(thisObj.exchangeData.bindings)
 
-                   }, util.xhrErrorHandler);
+                   },
+                   function(error)
+                   {
+                      util.tabErrorHandler(error, {updater:thisObj,
+                                                   contentPane: 
thisObj.tabObject.contentPane,
+                                                   tabContainer: 
thisObj.tabObject.controller.tabContainer,
+                                                   name: thisObj.modelObj.name,
+                                                   category: "Exchange"});
+                   });
            };
 
            Exchange.prototype.deleteExchange = function() {

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
 Mon May 11 13:36:27 2015
@@ -62,7 +62,7 @@ define(["dojo/parser",
            {
                var that = this;
                var contentPane = this.contentPane;
-               this.groupProviderUpdater = new 
GroupProviderUpdater(contentPane.containerNode, this.modelObj, this.controller);
+               this.groupProviderUpdater = new GroupProviderUpdater(this);
                
this.groupProviderUpdater.update(function(){that._onOpenAfterUpdate();});
            };
 
@@ -143,8 +143,12 @@ define(["dojo/parser",
                         );
            }
 
-           function GroupProviderUpdater(node, groupProviderObj, controller)
+           function GroupProviderUpdater(groupProviderTab)
            {
+               this.tabObject = groupProviderTab;
+               var controller = groupProviderTab.controller;
+               var groupProviderObj = groupProviderTab.modelObj;
+               var node = groupProviderTab.contentPane.containerNode;
                this.controller = controller;
                this.management = controller.management;
                this.modelObj = groupProviderObj;
@@ -174,6 +178,14 @@ define(["dojo/parser",
                                 {
                                     callback();
                                 }
+                               },
+                               function(error)
+                               {
+                                  util.tabErrorHandler(error, {updater:that,
+                                                               contentPane: 
that.tabObject.contentPane,
+                                                               tabContainer: 
that.tabObject.controller.tabContainer,
+                                                               name: 
that.modelObj.name,
+                                                               category: 
"Group Provider"});
                                });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js
 Mon May 11 13:36:27 2015
@@ -50,7 +50,7 @@ define(["dojo/dom",
                 contentPane.containerNode.innerHTML = template;
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
-                            that.keyStoreUpdater = new 
KeyStoreUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                            that.keyStoreUpdater = new KeyStoreUpdater(that);
                             
that.keyStoreUpdater.update(function(){updater.add( that.keyStoreUpdater );});
 
 
@@ -80,12 +80,14 @@ define(["dojo/dom",
                updater.remove( this.keyStoreUpdater );
            };
 
-           function KeyStoreUpdater(containerNode, keyStoreObj, controller)
+           function KeyStoreUpdater( tabObject)
            {
+               var containerNode = tabObject.contentPane.containerNode;
                var that = this;
                this.keyStoreDetailsContainer = query(".typeFieldsContainer", 
containerNode)[0];
-               this.management = controller.management;
-               this.modelObj = keyStoreObj;
+               this.management = tabObject.controller.management;
+               this.modelObj = tabObject.modelObj;
+               this.tabObject = tabObject
                function findNode(name) {
                    return query("." + name, containerNode)[0];
                }
@@ -139,6 +141,14 @@ define(["dojo/dom",
                            }
                          );
                       }
+                   },
+                   function(error)
+                   {
+                      util.tabErrorHandler(error, {updater:that,
+                                                   contentPane: 
that.tabObject.contentPane,
+                                                   tabContainer: 
that.tabObject.controller.tabContainer,
+                                                   name: that.modelObj.name,
+                                                   category: "Key Store"});
                    });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Plugin.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Plugin.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Plugin.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Plugin.js
 Mon May 11 13:36:27 2015
@@ -48,7 +48,7 @@ define(["dojo/parser",
                 contentPane.containerNode.innerHTML = template;
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
-                    that.pluginUpdater = new 
PluginUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                    that.pluginUpdater = new PluginUpdater(contentPane, 
that.modelObj, that.controller);
                 });
            };
 
@@ -56,11 +56,12 @@ define(["dojo/parser",
                updater.remove( this.pluginUpdater );
            };
 
-           function PluginUpdater(node, pluginObject, controller)
+           function PluginUpdater(contentPane, pluginObject, controller)
            {
                this.controller = controller;
                this.modelObj = pluginObject;
                this.management = controller.management;
+               var node = contentPane.containerNode;
                this.name = query(".name", node)[0];
                this.type = query(".type", node)[0];
 
@@ -75,7 +76,7 @@ define(["dojo/parser",
 
                              require(["qpid/management/plugin/"+ 
that.pluginData.type.toLowerCase().replace('-','')],
                                  function(SpecificPlugin) {
-                                 that.details = new 
SpecificPlugin(query(".pluginDetails", node)[0], pluginObject, controller);
+                                 that.details = new 
SpecificPlugin(query(".pluginDetails", node)[0], pluginObject, controller, 
contentPane);
                              });
 
                          }, util.xhrErrorHandler);

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js
 Mon May 11 13:36:27 2015
@@ -51,7 +51,7 @@ define(["dojo/dom",
                 contentPane.containerNode.innerHTML = template;
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
-                            that.portUpdater = new 
PortUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                            that.portUpdater = new PortUpdater(that);
 
                             var deletePortButton = query(".deletePortButton", 
contentPane.containerNode)[0];
                             var node = registry.byNode(deletePortButton);
@@ -102,11 +102,13 @@ define(["dojo/dom",
                );
            }
 
-           function PortUpdater(containerNode, portObj, controller)
+           function PortUpdater(portTab)
            {
                var that = this;
-               this.management = controller.management;
-               this.modelObj = portObj;
+               this.tabObject = portTab;
+               this.management = portTab.controller.management;
+               this.modelObj = portTab.modelObj;
+               var containerNode = portTab.contentPane.containerNode;
 
                function findNode(name) {
                    return query("." + name, containerNode)[0];
@@ -200,6 +202,14 @@ define(["dojo/dom",
                         callback();
                       }
                       thisObj.updateHeader();
+                   },
+                   function(error)
+                   {
+                      util.tabErrorHandler(error, {updater:thisObj,
+                                                   contentPane: 
thisObj.tabObject.contentPane,
+                                                   tabContainer: 
thisObj.tabObject.controller.tabContainer,
+                                                   name: thisObj.modelObj.name,
+                                                   category: "Port"});
                    });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/PreferencesProvider.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/PreferencesProvider.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/PreferencesProvider.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/PreferencesProvider.js
 Mon May 11 13:36:27 2015
@@ -161,6 +161,14 @@ define(["dojo/parser",
                      var preferencesProviderData = data[0];
                      util.flattenStatistics( preferencesProviderData );
                      that.update(preferencesProviderData);
+                 },
+                 function(error)
+                 {
+                    util.tabErrorHandler(error, {updater:that.updater,
+                                                 contentPane: that.contentPane,
+                                                 tabContainer: 
that.controller.tabContainer,
+                                                 name: that.modelObj.name,
+                                                 category: "Preferences 
Provider"});
                  });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
 Mon May 11 13:36:27 2015
@@ -82,7 +82,7 @@ define(["dojo/parser",
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
 
-                            that.queueUpdater = new 
QueueUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                            that.queueUpdater = new QueueUpdater(that);
 
                             var myStore = new JsonRest({target: 
that.management.getFullUrl("service/message/"+ 
encodeURIComponent(that.getVirtualHostName()) +
                                                                                
"/" + encodeURIComponent(that.getQueueName()))});
@@ -266,11 +266,13 @@ define(["dojo/parser",
                    sorted: "Sort key"
                };
 
-           function QueueUpdater(containerNode, queueObj, controller)
+           function QueueUpdater(tabObject)
            {
                var that = this;
-               this.management = controller.management;
-               this.modelObj = queueObj;
+               this.management = tabObject.management;
+               this.modelObj = tabObject.modelObj;
+               this.tabObject = tabObject;
+               var containerNode = tabObject.contentPane.containerNode;
 
                function findNode(name) {
                    return query("." + name, containerNode)[0];
@@ -507,6 +509,14 @@ define(["dojo/parser",
                       // update consumers
                       thisObj.consumersGrid.update(thisObj.queueData.consumers)
 
+                   },
+                   function(error)
+                   {
+                      util.tabErrorHandler(error, {updater:thisObj,
+                                                   contentPane: 
thisObj.tabObject.contentPane,
+                                                   tabContainer: 
thisObj.tabObject.controller.tabContainer,
+                                                   name: thisObj.modelObj.name,
+                                                   category: "Queue"});
                    });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js
 Mon May 11 13:36:27 2015
@@ -52,7 +52,7 @@ define(["dojo/dom",
                 
parser.parse(contentPane.containerNode).then(function(instances)
                 {
 
-                            that.keyStoreUpdater = new 
KeyStoreUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                            that.keyStoreUpdater = new KeyStoreUpdater(that);
                             
that.keyStoreUpdater.update(function(){updater.add( that.keyStoreUpdater );});
 
                             var deleteTrustStoreButton = 
query(".deleteStoreButton", contentPane.containerNode)[0];
@@ -80,12 +80,14 @@ define(["dojo/dom",
                updater.remove( this.keyStoreUpdater );
            };
 
-           function KeyStoreUpdater(containerNode, keyStoreObj, controller, 
url)
+           function KeyStoreUpdater(tabObject)
            {
                var that = this;
+               var containerNode = tabObject.contentPane.containerNode;
                this.keyStoreDetailsContainer = query(".typeFieldsContainer", 
containerNode)[0];
-               this.management = controller.management;
-               this.modelObj = keyStoreObj;
+               this.management = tabObject.management;
+               this.modelObj = tabObject.modelObj;
+               this.tabObject = tabObject;
 
                function findNode(name) {
                    return query("." + name , containerNode)[0];
@@ -103,8 +105,6 @@ define(["dojo/dom",
                            "state"
                            ]);
 
-               this.query = url;
-
            }
 
            KeyStoreUpdater.prototype.updateHeader = function()
@@ -141,6 +141,14 @@ define(["dojo/dom",
                       }
                     );
                   }
+               },
+               function(error)
+               {
+                  util.tabErrorHandler(error, { updater:that,
+                                                contentPane: 
that.tabObject.contentPane,
+                                                tabContainer: 
that.tabObject.controller.tabContainer,
+                                                name: that.modelObj.name,
+                                                category: "Trust Store" });
                });
            };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
 Mon May 11 13:36:27 2015
@@ -56,7 +56,7 @@ define(["dojo/parser",
                     containerNode.innerHTML = template;
                     parser.parse(containerNode).then(function(instances)
                     {
-                            that.vhostUpdater = new Updater(containerNode, 
that.modelObj, that.controller, that);
+                            that.vhostUpdater = new Updater(that);
 
                             var addQueueButton = query(".addQueueButton", 
containerNode)[0];
                             connect.connect(registry.byNode(addQueueButton), 
"onClick", function(evt){
@@ -157,9 +157,13 @@ define(["dojo/parser",
              this.contentPane.destroyRecursive();
            }
 
-           function Updater(node, vhost, controller, virtualHost)
+           function Updater(virtualHost)
            {
-               this.virtualHost = virtualHost;
+               var vhost = virtualHost.modelObj;
+               var controller = virtualHost.controller;
+               var node = virtualHost.contentPane.containerNode;
+
+               this.tabObject = virtualHost;
                this.management = controller.management;
                this.modelObj = vhost;
                var that = this;
@@ -318,7 +322,7 @@ define(["dojo/parser",
 
                this.management.load(this.modelObj)
                    .then(function(data) {
-                       thisObj.vhostData = data[0] || {name: 
thisObj.virtualHost.name,statistics:{messagesIn:0,bytesIn:0,messagesOut:0,bytesOut:0}};
+                       thisObj.vhostData = data[0] || {name: 
thisObj.modelObj.name,statistics:{messagesIn:0,bytesIn:0,messagesOut:0,bytesOut:0}};
 
                        if (callback)
                        {
@@ -336,17 +340,25 @@ define(["dojo/parser",
                                 console.error(e);
                             }
                        }
-                   }, util.xhrErrorHandler);
-           }
+                   },
+                   function(error)
+                   {
+                       util.tabErrorHandler(error, { updater:thisObj,
+                                                     contentPane: 
thisObj.tabObject.contentPane,
+                                                     tabContainer: 
thisObj.tabObject.controller.tabContainer,
+                                                     name: 
thisObj.modelObj.name,
+                                                     category: "Virtual Host" 
});
+                   });
+           };
 
            Updater.prototype._update = function()
            {
                 var thisObj = this;
-                this.virtualHost.startButton.set("disabled", 
!this.vhostData.state || this.vhostData.state != "STOPPED");
-                this.virtualHost.stopButton.set("disabled", 
!this.vhostData.state || this.vhostData.state != "ACTIVE");
-                this.virtualHost.editButton.set("disabled", 
!this.vhostData.state || this.vhostData.state == "UNAVAILABLE");
-                this.virtualHost.downloadButton.set("disabled", 
!this.vhostData.state || this.vhostData.state != "ACTIVE");
-                this.virtualHost.deleteButton.set("disabled", 
!this.vhostData.state);
+                this.tabObject.startButton.set("disabled", 
!this.vhostData.state || this.vhostData.state != "STOPPED");
+                this.tabObject.stopButton.set("disabled", 
!this.vhostData.state || this.vhostData.state != "ACTIVE");
+                this.tabObject.editButton.set("disabled", 
!this.vhostData.state || this.vhostData.state == "UNAVAILABLE");
+                this.tabObject.downloadButton.set("disabled", 
!this.vhostData.state || this.vhostData.state != "ACTIVE");
+                this.tabObject.deleteButton.set("disabled", 
!this.vhostData.state);
 
                        util.flattenStatistics( thisObj.vhostData );
                        var connections = thisObj.vhostData[ "connections" ];

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHostNode.js
 Mon May 11 13:36:27 2015
@@ -120,7 +120,7 @@ define(["dojo/parser",
                         });
                     }, {height: 200, canSort : function(col) {return false;} 
}, EnhancedGrid);
 
-             this.vhostNodeUpdater = new Updater(containerNode, this.modelObj, 
this);
+             this.vhostNodeUpdater = new Updater(this);
              this.vhostNodeUpdater.update(function(x){updater.add( 
that.vhostNodeUpdater );});
            }
 
@@ -142,10 +142,11 @@ define(["dojo/parser",
              this.contentPane.destroyRecursive();
            }
 
-           function Updater(domNode, nodeObject, virtualHostNode)
+           function Updater(virtualHostNode)
            {
-               this.virtualHostNode = virtualHostNode;
-               this.modelObj = nodeObject;
+               var domNode = virtualHostNode.contentPane.containerNode;
+               this.tabObject = virtualHostNode;
+               this.modelObj = virtualHostNode.modelObj;
                var that = this;
 
                function findNode(name)
@@ -168,7 +169,7 @@ define(["dojo/parser",
            Updater.prototype.update = function(callback)
            {
                var that = this;
-               that.virtualHostNode.management.load(this.modelObj).then(
+               that.tabObject.management.load(this.modelObj).then(
                    function(data)
                    {
                      that.nodeData = data[0] || {};
@@ -178,13 +179,21 @@ define(["dojo/parser",
                      {
                         callback();
                      }
+                   },
+                   function(error)
+                   {
+                     util.tabErrorHandler(error,{updater:that,
+                                                 contentPane: 
that.tabObject.contentPane,
+                                                 tabContainer: 
that.tabObject.controller.tabContainer,
+                                                 name: that.modelObj.name,
+                                                 category: "Virtual Host 
Node"});
                    });
            };
 
            Updater.prototype.updateUI = function(data)
            {
-             this.virtualHostNode.startNodeButton.set("disabled", !(data.state 
== "STOPPED" || data.state == "ERRORED"));
-             this.virtualHostNode.stopNodeButton.set("disabled", data.state != 
"ACTIVE");
+             this.tabObject.startNodeButton.set("disabled", !(data.state == 
"STOPPED" || data.state == "ERRORED"));
+             this.tabObject.stopNodeButton.set("disabled", data.state != 
"ACTIVE");
 
              this.name.innerHTML = entities.encode(String(data[ "name" ]));
              this.state.innerHTML = entities.encode(String(data[ "state" ]));
@@ -195,7 +204,7 @@ define(["dojo/parser",
                require(["qpid/management/virtualhostnode/" + 
data.type.toLowerCase() + "/show"],
                  function(VirtualHostNodeDetails)
                  {
-                   that.details = new 
VirtualHostNodeDetails({containerNode:that.detailsDiv, parent: 
that.virtualHostNode});
+                   that.details = new 
VirtualHostNodeDetails({containerNode:that.detailsDiv, parent: that.tabObject});
                    that.details.update(data);
                  }
                );
@@ -206,8 +215,8 @@ define(["dojo/parser",
              }
 
 
-             this.virtualHostNode.virtualHostGridPanel.domNode.style.display = 
data.virtualhosts? "block" : "none";
-             util.updateUpdatableStore(this.virtualHostNode.vhostsGrid, 
data.virtualhosts);
+             this.tabObject.virtualHostGridPanel.domNode.style.display = 
data.virtualhosts? "block" : "none";
+             util.updateUpdatableStore(this.tabObject.vhostsGrid, 
data.virtualhosts);
            }
 
            return VirtualHostNode;

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/accesscontrolprovider/AclFile.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/accesscontrolprovider/AclFile.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/accesscontrolprovider/AclFile.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/accesscontrolprovider/AclFile.js
 Mon May 11 13:36:27 2015
@@ -45,7 +45,7 @@ define(["dojo/_base/xhr",
         "dijit/form/DateTextBox",
         "dojo/domReady!"],
     function (xhr, dom, parser, query, construct, connect, win, event, json, 
registry, entities, util, properties, updater, UpdatableStore, EnhancedGrid) {
-        function AclFile(containerNode, aclProviderObj, controller) {
+        function AclFile(containerNode, aclProviderObj, controller, tabObject) 
{
             var node = construct.create("div", null, containerNode, "last");
             this.modelObj = aclProviderObj;
             var that = this;
@@ -56,7 +56,7 @@ define(["dojo/_base/xhr",
                                         node.innerHTML = data;
                                         
parser.parse(node).then(function(instances)
                                         {
-                                        that.groupDatabaseUpdater= new 
AclFileUpdater(node, aclProviderObj, controller);
+                                        that.groupDatabaseUpdater= new 
AclFileUpdater(node, tabObject);
 
                                         updater.add( 
that.groupDatabaseUpdater);
 
@@ -70,8 +70,11 @@ define(["dojo/_base/xhr",
             updater.remove( this.groupDatabaseUpdater );
         };
 
-        function AclFileUpdater(node, aclProviderObj, controller)
+        function AclFileUpdater(node, tabObject)
         {
+            this.tabObject = tabObject;
+            var aclProviderObj = tabObject.modelObj;
+            var controller = tabObject.controller;
             this.controller = controller;
             this.modelObj = aclProviderObj;
             this.management = controller.management;
@@ -91,7 +94,14 @@ define(["dojo/_base/xhr",
                     that.path.innerHTML = 
entities.encode(String(that.aclProviderData.path));
                   }
                 },
-                util.xhrErrorHandler);
+                 function(error)
+                 {
+                      util.tabErrorHandler(error, {updater: that,
+                                                   contentPane: 
that.tabObject.contentPane,
+                                                   tabContainer: 
that.tabObject.controller.tabContainer,
+                                                   name: that.modelObj.name,
+                                                   category: "Access Control 
Provider"});
+                 });
 
         };
 

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
 Mon May 11 13:36:27 2015
@@ -72,7 +72,7 @@ define(["dojo/parser",
                     contentPane.containerNode.innerHTML = showGroup;
                     
parser.parse(contentPane.containerNode).then(function(instances)
                     {
-                        that.groupUpdater = new 
GroupUpdater(contentPane.containerNode, that.modelObj, that.controller);
+                        that.groupUpdater = new GroupUpdater(that);
                         that.groupUpdater.update(
                         function()
                         {
@@ -104,11 +104,13 @@ define(["dojo/parser",
                updater.remove( this.groupUpdater );
            };
 
-           function GroupUpdater(containerNode, groupObj, controller)
+           function GroupUpdater(tabObject)
            {
-               this.management = controller.management;
-               this.modelObj = {type: "groupmember", parent:groupObj};
+               this.tabObject = tabObject;
+               this.management = tabObject.controller.management;
+               this.modelObj = {type: "groupmember", parent: 
tabObject.modelObj};
                var that = this;
+               var containerNode = tabObject.contentPane.containerNode;
 
                function findNode(name) {
                    return query("." + name, containerNode)[0];
@@ -126,13 +128,10 @@ define(["dojo/parser",
                            "durable",
                            "lifetimePolicy",
                            "type"]);
-               this.name.innerHTML = entities.encode(String(groupObj.name));
+               this.name.innerHTML = 
entities.encode(String(tabObject.modelObj.name));
 
-               this.management.load(this.modelObj).then(function(data)
-                               {
-                                   that.groupMemberData = data;
+               this.groupMemberData = [];
 
-                                   util.flattenStatistics( 
that.groupMemberData );
 
                        var gridProperties = {
                                keepSelection: true,
@@ -150,7 +149,7 @@ define(["dojo/parser",
 
                                 }};
 
-                                   that.groupMembersUpdatableStore = new 
UpdatableStore(that.groupMemberData, findNode("groupMembers"),
+                                   this.groupMembersUpdatableStore = new 
UpdatableStore([], findNode("groupMembers"),
                                                             [ { name: "Group 
Member Name",    field: "name",      width: "100%" }],
                                                          function(obj)
                                                         {
@@ -160,9 +159,8 @@ define(["dojo/parser",
                                                                          });
                                                         } , gridProperties, 
EnhancedGrid);
 
-                               }, util.xhrErrorHandler);
 
-           }
+           };
 
            GroupUpdater.prototype.update = function( callback)
            {
@@ -180,7 +178,15 @@ define(["dojo/parser",
                         callback();
                       }
                       
that.groupMembersUpdatableStore.update(that.groupMemberData);
-                  }, util.xhrErrorHandler);
+                  },
+                  function(error)
+                  {
+                    util.tabErrorHandler(error, {updater: that,
+                                              contentPane: 
that.tabObject.contentPane,
+                                              tabContainer: 
that.tabObject.controller.tabContainer,
+                                              name: that.modelObj.name,
+                                              category: "Group"});
+                  });
            };
 
            Group.prototype.deleteGroupMember = function() {

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js
 Mon May 11 13:36:27 2015
@@ -39,7 +39,7 @@ define(["dojo/dom",
         "dojo/domReady!"],
     function (dom, parser, query, construct, connect, win, event, json, 
registry, util, properties, updater, template, editor) {
 
-        function ManagementHttp(containerNode, pluginObject, controller) {
+        function ManagementHttp(containerNode, pluginObject, controller, 
contentPane) {
             var node = construct.create("div", null, containerNode, "last");
             var that = this;
             this.name = pluginObject.name;
@@ -48,7 +48,7 @@ define(["dojo/dom",
             node.innerHTML = template;
             parser.parse(node).then(function(instances)
             {
-                          that.managementHttpUpdater= new 
ManagementHttpUpdater(node, pluginObject, controller);
+                          that.managementHttpUpdater= new 
ManagementHttpUpdater(node, pluginObject, controller, contentPane);
                           
that.managementHttpUpdater.update(function(){updater.add( 
that.managementHttpUpdater)});
 
                           var editButton = query(".editPluginButton", node)[0];
@@ -64,8 +64,9 @@ define(["dojo/dom",
               editor.show(this.management, this.modelObj, 
this.managementHttpUpdater.pluginData);
         };
 
-        function ManagementHttpUpdater(node, pluginObject, controller)
+        function ManagementHttpUpdater(node, pluginObject, controller, 
contentPane)
         {
+            this.contentPane = contentPane;
             this.controller = controller;
             this.modelObj = pluginObject;
             this.name = pluginObject.name;
@@ -100,6 +101,14 @@ define(["dojo/dom",
                     {
                         callback();
                     }
+                },
+                function(error)
+                {
+                   util.tabErrorHandler(error, {updater:that,
+                                                contentPane: that.contentPane,
+                                                tabContainer: 
that.controller.tabContainer,
+                                                name: that.modelObj.name,
+                                                category: "Plugin HTTP 
Management"});
                 });
 
         };

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js
 Mon May 11 13:36:27 2015
@@ -35,7 +35,7 @@ define(["dojo/dom",
         "dojo/domReady!"],
     function (dom, parser, query, construct, connect, win, event, json, 
registry, util, properties, updater, template, edit) {
 
-        function ManagementJmx(containerNode, pluginObject, controller) {
+        function ManagementJmx(containerNode, pluginObject, controller, 
contentPane) {
             var node = construct.create("div", null, containerNode, "last");
             var that = this;
             this.name = pluginObject.name;
@@ -44,7 +44,7 @@ define(["dojo/dom",
             node.innerHTML = template;
             parser.parse(node).then(function(instances)
             {
-                          that.managementJmxUpdater= new 
ManagementJmxUpdater(node, pluginObject, controller);
+                          that.managementJmxUpdater= new 
ManagementJmxUpdater(node, pluginObject, controller, contentPane);
                           
that.managementJmxUpdater.update(function(){updater.add( 
that.managementJmxUpdater);});
 
 
@@ -61,8 +61,9 @@ define(["dojo/dom",
           edit.show(this.management, this.modelObj, 
this.managementJmxUpdater.pluginData);
         };
 
-        function ManagementJmxUpdater(node, pluginObject, controller)
+        function ManagementJmxUpdater(node, pluginObject, controller, 
contentPane)
         {
+            this.contentPane = contentPane;
             this.controller = controller;
             this.modelObj = pluginObject;
             this.name = pluginObject.name;
@@ -87,7 +88,15 @@ define(["dojo/dom",
                     {
                         callback();
                     }
-                });
+                },
+                 function(error)
+                 {
+                    util.tabErrorHandler(error, {updater:that,
+                                                 contentPane: that.contentPane,
+                                                 tabContainer: 
that.controller.tabContainer,
+                                                 name: that.modelObj.name,
+                                                 category: "Plugin JMX 
Management"});
+                 });
 
         };
 

Modified: 
qpid/java/trunk/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java
 (original)
+++ 
qpid/java/trunk/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java
 Mon May 11 13:36:27 2015
@@ -20,8 +20,9 @@
  */
 package org.apache.qpid.systest.rest;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -30,7 +31,6 @@ import org.apache.qpid.server.model.Auth
 import org.apache.qpid.server.model.Plugin;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.VirtualHostNode;
-import 
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 import org.apache.qpid.test.utils.TestBrokerConfiguration;
 
@@ -105,16 +105,30 @@ public class QpidRestTestCase extends Qp
 
     public Map<String, Object> waitForAttributeChanged(String url, String 
attributeName, Object newValue) throws Exception
     {
-        List<Map<String, Object>> nodeAttributes = 
getRestTestHelper().getJsonAsList(url);
+        List<Map<String, Object>> nodeAttributes = 
getAttributesIgnoringNotFound(url);
         int timeout = 5000;
         long limit = System.currentTimeMillis() + timeout;
         while(System.currentTimeMillis() < limit && (nodeAttributes.size() == 
0 || !newValue.equals(nodeAttributes.get(0).get(attributeName))))
         {
             Thread.sleep(100l);
-            nodeAttributes = getRestTestHelper().getJsonAsList(url);
+            nodeAttributes = getAttributesIgnoringNotFound(url);
         }
         Map<String, Object> nodeData = nodeAttributes.get(0);
         assertEquals("Attribute " + attributeName + " did not reach expected 
value within permitted timeout "  + timeout + "ms.", newValue, 
nodeData.get(attributeName));
         return nodeData;
     }
+
+    private List<Map<String, Object>> getAttributesIgnoringNotFound(String 
url) throws IOException
+    {
+        List<Map<String, Object>> nodeAttributes;
+        try
+        {
+            nodeAttributes = getRestTestHelper().getJsonAsList(url);
+        }
+        catch(FileNotFoundException e)
+        {
+            nodeAttributes = Collections.emptyList();
+        }
+        return nodeAttributes;
+    }
 }

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AccessControlProviderRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AccessControlProviderRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AccessControlProviderRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AccessControlProviderRestTest.java
 Mon May 11 13:36:27 2015
@@ -27,6 +27,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.qpid.server.BrokerOptions;
 import org.apache.qpid.server.management.plugin.HttpManagement;
 import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
@@ -146,24 +148,16 @@ public class AccessControlProviderRestTe
         //create the replacement access control provider using the 'allowed' 
user.
         String accessControlProviderName2 = getTestName() + "2";
         getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
-        responseCode = createAccessControlProvider(getTestName(), 
_aclFileContent2);
-        assertEquals("Access control provider creation should be allowed", 
200, responseCode);
+        responseCode = createAccessControlProvider(accessControlProviderName2, 
_aclFileContent2);
+        assertEquals("Access control provider creation should be allowed", 
201, responseCode);
 
-        //Verify that it took effect immediately, replacing the first access 
control provider
+        //Verify that first access control provider is used
 
-        //verify the 'denied' user still can't access the management 
interface, but the 'other' user now CAN.
+        //verify the 'denied' user still can't access the management interface
         getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
         assertCanAccessManagementInterface(accessControlProviderName2, false);
         getRestTestHelper().setUsernameAndPassword(OTHER_USER, OTHER_USER);
-        assertCanAccessManagementInterface(accessControlProviderName2, true);
-
-
-        //verify the 'denied' user still can't access the management 
interface, the 'other' user still can, thus
-        //confirming that the second access control provider is still in effect
-        getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
         assertCanAccessManagementInterface(accessControlProviderName2, false);
-        getRestTestHelper().setUsernameAndPassword(OTHER_USER, OTHER_USER);
-        assertCanAccessManagementInterface(accessControlProviderName2, true);
     }
 
 
@@ -187,13 +181,12 @@ public class AccessControlProviderRestTe
         Map<String, Object> acl = 
getRestTestHelper().getJsonAsSingletonList("accesscontrolprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_ACL_FILE + "?" + RestServlet.OVERSIZE_PARAM 
+ "=" + (file.getAbsolutePath().length()+10));
         assertEquals("Unexpected id", id.toString(), 
acl.get(AccessControlProvider.ID));
         assertEquals("Unexpected path", file.getAbsolutePath() , 
acl.get(FileAccessControlProviderConstants.PATH));
-        assertEquals("Unexpected state", State.ERRORED.name() , 
acl.get(AccessControlProvider.STATE));
+        assertEquals("Unexpected state", State.ERRORED.name(), 
acl.get(AccessControlProvider.STATE));
 
         int status = 
getRestTestHelper().submitRequest("accesscontrolprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_ACL_FILE, "DELETE");
         assertEquals("ACL was not deleted", 200, status);
 
-        List<Map<String, Object>> acls = 
getRestTestHelper().getJsonAsList("accesscontrolprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_ACL_FILE);
-        assertEquals("ACL exists", 0, acls.size());
+        getRestTestHelper().submitRequest("accesscontrolprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_ACL_FILE, "GET", 
HttpServletResponse.SC_NOT_FOUND);
     }
 
     private void assertCanAccessManagementInterface(String 
accessControlProviderName, boolean canAccess) throws Exception
@@ -206,8 +199,8 @@ public class AccessControlProviderRestTe
     private void assertAccessControlProviderExistence(String 
accessControlProviderName, boolean exists) throws Exception
     {
         String path = "accesscontrolprovider/" + accessControlProviderName;
-        List<Map<String, Object>> providers = 
getRestTestHelper().getJsonAsList(path);
-        assertEquals("Unexpected result", exists, !providers.isEmpty());
+        int expectedResponseCode = exists ? HttpServletResponse.SC_OK : 
HttpServletResponse.SC_NOT_FOUND;
+        getRestTestHelper().submitRequest(path, "GET", expectedResponseCode);
     }
 
     private int createAccessControlProvider(String accessControlProviderName, 
String content) throws Exception

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
 Mon May 11 13:36:27 2015
@@ -248,9 +248,7 @@ public class AuthenticationProviderRestT
         responseCode = 
getRestTestHelper().submitRequest("authenticationprovider/" + providerName , 
"DELETE");
         assertEquals("Unexpected response code for provider deletion", 200, 
responseCode);
 
-        List<Map<String, Object>> providerDetails = 
getRestTestHelper().getJsonAsList("authenticationprovider/" + providerName);
-        assertNotNull("Providers details cannot be null", providerDetails);
-        assertEquals("Unexpected number of providers", 0, 
providerDetails.size());
+        getRestTestHelper().submitRequest("authenticationprovider/" + 
providerName, "GET", HttpServletResponse.SC_NOT_FOUND);
     }
 
     public void 
testRemovalOfAuthenticationProviderInErrorStateUsingManagementMode() throws 
Exception
@@ -287,8 +285,7 @@ public class AuthenticationProviderRestT
         int status = 
getRestTestHelper().submitRequest("authenticationprovider/" + providerName, 
"DELETE");
         assertEquals("ACL was not deleted", 200, status);
 
-        List<Map<String, Object>> providers = 
getRestTestHelper().getJsonAsList("authenticationprovider/" + providerName);
-        assertEquals("Provider exists", 0, providers.size());
+        getRestTestHelper().submitRequest("authenticationprovider/" + 
providerName, "GET", HttpServletResponse.SC_NOT_FOUND);
     }
 
     public void 
testUpdateOfAuthenticationProviderInErrorStateUsingManagementMode() throws 
Exception

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/BindingRestTest.java
 Mon May 11 13:36:27 2015
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
 import org.apache.qpid.server.model.Binding;
 
@@ -79,8 +81,7 @@ public class BindingRestTest extends Qpi
         int responseCode = getRestTestHelper().submitRequest(bindingUrl, 
"DELETE");
         assertEquals("Unexpected response code", 200, responseCode);
 
-        bindings = getRestTestHelper().getJsonAsList(bindingUrl);
-        assertEquals("Binding should be deleted", 0, bindings.size());
+        getRestTestHelper().submitRequest(bindingUrl, "GET", 
HttpServletResponse.SC_NOT_FOUND);
     }
 
     public void testDeleteBindingById() throws Exception

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
 Mon May 11 13:36:27 2015
@@ -30,6 +30,8 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.UUID;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.qpid.server.BrokerOptions;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -255,9 +257,7 @@ public class GroupProviderRestTest exten
             responseCode = getRestTestHelper().submitRequest("groupprovider/" 
+ providerName , "DELETE");
             assertEquals("Group provider was not deleted", 200, responseCode);
 
-            List<Map<String, Object>> providerDetails = 
getRestTestHelper().getJsonAsList("groupprovider/" + providerName);
-            assertEquals("Provider was not deleted", 0, 
providerDetails.size());
-            assertFalse("Groups file should be deleted", groupFile.exists());
+            getRestTestHelper().submitRequest("groupprovider/" + providerName, 
"GET", HttpServletResponse.SC_NOT_FOUND);
         }
         finally
         {
@@ -324,9 +324,8 @@ public class GroupProviderRestTest exten
 
         int status = getRestTestHelper().submitRequest("groupprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_GROUP_FILE, "DELETE");
         assertEquals("ACL was not deleted", 200, status);
-
-        List<Map<String, Object>> providers = 
getRestTestHelper().getJsonAsList("groupprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_GROUP_FILE);
-        assertEquals("Provider exists", 0, providers.size());
+        getRestTestHelper().submitRequest("groupprovider/" + 
TestBrokerConfiguration.ENTRY_NAME_GROUP_FILE,
+                "GET", HttpServletResponse.SC_NOT_FOUND);
     }
 
     private void assertProvider(String name, String type, Map<String, Object> 
provider)

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
 Mon May 11 13:36:27 2015
@@ -116,10 +116,7 @@ public class KeyStoreRestTest extends Qp
         assertNumberOfKeyStores(2);
 
         getRestTestHelper().submitRequest("keystore/" + name, "DELETE", 
HttpServletResponse.SC_OK);
-
-        List<Map<String, Object>> keyStore = 
getRestTestHelper().getJsonAsList("keystore/" + name + "?actuals=true");
-        assertNotNull("details should not be null", keyStore);
-        assertTrue("details should be empty as the keystore no longer exists", 
keyStore.isEmpty());
+        getRestTestHelper().submitRequest("keystore/" + name + 
"?actuals=true", "GET", HttpServletResponse.SC_NOT_FOUND);
 
         //check only the default systests key store remains
         List<Map<String, Object>> keyStores = assertNumberOfKeyStores(1);

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PortRestTest.java
 Mon May 11 13:36:27 2015
@@ -31,6 +31,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.qpid.server.BrokerOptions;
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Plugin;
@@ -361,8 +363,6 @@ public class PortRestTest extends QpidRe
 
         int responseCode = getRestTestHelper().submitRequest("port/" + 
newPortName, "PUT", attributes);
         assertEquals("Unexpected response code for port creation", 
SC_UNPROCESSABLE_ENTITY, responseCode);
-
-        List<Map<String,Object>> ports  = 
getRestTestHelper().getJsonAsList("port/" + 
getRestTestHelper().encodeAsUTF(newPortName));
-        assertTrue("Port should not be created", ports.isEmpty());
+        getRestTestHelper().submitRequest("port/" + 
getRestTestHelper().encodeAsUTF(newPortName), "GET", 
HttpServletResponse.SC_NOT_FOUND);
     }
 }

Modified: 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java?rev=1678753&r1=1678752&r2=1678753&view=diff
==============================================================================
--- 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
 (original)
+++ 
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
 Mon May 11 13:36:27 2015
@@ -27,6 +27,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -119,8 +121,7 @@ public class PreferencesProviderRestTest
         int responseCode = getRestTestHelper().submitRequest(providerUrl, 
"DELETE");
         assertEquals("Failed to delete preferences provider", 200, 
responseCode);
 
-        List<Map<String, Object>> providerDetails = 
getRestTestHelper().getJsonAsList(providerUrl);
-        assertEquals("Unexpected number of providers", 0, 
providerDetails.size());
+        getRestTestHelper().submitRequest(providerUrl, "GET", 
HttpServletResponse.SC_NOT_FOUND);
     }
 
     public void testUpdateProvider() throws Exception



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

Reply via email to