summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-04-19 15:50:21 +0000
committerAlex Rudyy <orudyy@apache.org>2013-04-19 15:50:21 +0000
commitd792f4deff8d3ce6b4672c7156ad56eb4438c01d (patch)
tree168c7f96f14cd252a237adfd83a7acb968c59715 /qpid/java/broker-plugins
parent31524543f12e083c30d55b72b5ade680ab3f48ae (diff)
downloadqpid-python-d792f4deff8d3ce6b4672c7156ad56eb4438c01d.tar.gz
QPID-4752: Make the GroupProvider a full broker-level configuration entry instead of a broker attribute.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1469916 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins')
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java3
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java76
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js67
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js46
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js177
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js14
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html10
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html8
9 files changed, 376 insertions, 27 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
index a77096fbe8..626dfa1d6c 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.qpid.server.management.plugin.servlet.rest.action.ListAuthenticationProviderAttributes;
+import org.apache.qpid.server.management.plugin.servlet.rest.action.ListGroupProviderAttributes;
import org.apache.qpid.server.management.plugin.servlet.rest.action.ListMessageStoreTypes;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
@@ -52,6 +53,8 @@ public class HelperServlet extends AbstractServlet
_actions.put(listProviderAttributes.getName(), listProviderAttributes);
Action listMessageStoreTypes = new ListMessageStoreTypes();
_actions.put(listMessageStoreTypes.getName(), listMessageStoreTypes);
+ Action groupProviderAttributes = new ListGroupProviderAttributes();
+ _actions.put(groupProviderAttributes.getName(), groupProviderAttributes);
}
@Override
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java
new file mode 100644
index 0000000000..d1414faa71
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *
+ */
+package org.apache.qpid.server.management.plugin.servlet.rest.action;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.qpid.server.management.plugin.servlet.rest.Action;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.plugin.GroupManagerFactory;
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+
+public class ListGroupProviderAttributes implements Action
+{
+ private static final String ATTRIBUTES = "attributes";
+ private static final String DESCRIPTIONS = "descriptions";
+ private Map<String, GroupManagerFactory> _factories;
+
+ public ListGroupProviderAttributes()
+ {
+ _factories = new TreeMap<String, GroupManagerFactory>();
+ Iterable<GroupManagerFactory> factories = new QpidServiceLoader<GroupManagerFactory>()
+ .instancesOf(GroupManagerFactory.class);
+ for (GroupManagerFactory factory : factories)
+ {
+ _factories.put(factory.getType(), factory);
+ }
+ }
+
+ @Override
+ public String getName()
+ {
+ return ListGroupProviderAttributes.class.getSimpleName();
+ }
+
+ @Override
+ public Object perform(Map<String, Object> request, Broker broker)
+ {
+ Map<String, Object> attributes = new TreeMap<String, Object>();
+ for (String providerType : _factories.keySet())
+ {
+ GroupManagerFactory factory = _factories.get(providerType);
+
+ Map<String, Object> data = new HashMap<String, Object>();
+ data.put(ATTRIBUTES, factory.getAttributeNames());
+ Map<String, String> resources = factory.getAttributeDescriptions();
+ if (resources != null)
+ {
+ data.put(DESCRIPTIONS, resources);
+ }
+
+ attributes.put(factory.getType(), data);
+ }
+ return attributes;
+ }
+
+}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html
index 734e8b5419..5055cbdc47 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html
@@ -19,6 +19,8 @@
-
-->
<div class="FileGroupManager">
+ <span style="">Path:</span><span class="path" style="position:absolute; left:6em"></span>
+ <br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Groups'">
<div class="groups"></div>
<button data-dojo-type="dijit.form.Button" class="addGroupButton">Add Group</button>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
index 73936b7b3c..e5631745a8 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
@@ -32,6 +32,7 @@ define(["dojo/_base/xhr",
"qpid/management/addVirtualHost",
"qpid/management/addPort",
"qpid/management/addKeystore",
+ "qpid/management/addGroupProvider",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dijit/layout/AccordionContainer",
@@ -42,7 +43,7 @@ define(["dojo/_base/xhr",
"dijit/form/CheckBox",
"dojo/store/Memory",
"dojo/domReady!"],
- function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid, registry, addAuthenticationProvider, addVirtualHost, addPort, addKeystore) {
+ function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid, registry, addAuthenticationProvider, addVirtualHost, addPort, addKeystore, addGroupProvider) {
function Broker(name, parent, controller) {
this.name = name;
@@ -88,16 +89,6 @@ define(["dojo/_base/xhr",
name: "aclFile"})
}
}, {
- name: "groupFile",
- createWidget: function(brokerData)
- {
- return new dijit.form.ValidationTextBox({
- required: false,
- value: brokerData.groupFile,
- label: "Group file location:",
- name: "groupFile"});
- }
- }, {
name: "statisticsReportingPeriod",
createWidget: function(brokerData) {
return new dijit.form.ValidationTextBox({
@@ -453,6 +444,35 @@ define(["dojo/_base/xhr",
"Are you sure you want to delete trust store");
}
);
+
+ var addGroupProviderButton = query(".addGroupProvider", contentPane.containerNode)[0];
+ connect.connect(registry.byNode(addGroupProviderButton), "onClick",
+ function(evt){addGroupProvider.show();});
+
+ var deleteGroupProvider = query(".deleteGroupProvider", contentPane.containerNode)[0];
+ connect.connect(registry.byNode(deleteGroupProvider), "onClick",
+ function(evt){
+ var warning = "";
+ var data = that.brokerUpdater.groupProvidersGrid.grid.selection.getSelected();
+ if(data.length && data.length > 0)
+ {
+ for(var i = 0; i<data.length; i++)
+ {
+ if (data[i].type.indexOf("File") != -1)
+ {
+ warning = "NOTE: provider deletion will also remove the group file on disk.\n\n"
+ break;
+ }
+ }
+ }
+
+ util.deleteGridSelections(
+ that.brokerUpdater,
+ that.brokerUpdater.groupProvidersGrid.grid,
+ "rest/groupprovider",
+ warning + "Are you sure you want to delete group provider");
+ }
+ );
}});
};
@@ -559,7 +579,7 @@ define(["dojo/_base/xhr",
that.keyStoresGrid =
new UpdatableStore(that.brokerData.keystores, query(".broker-key-stores")[0],
[ { name: "Name", field: "name", width: "20%"},
- { name: "Path", field: "path", width: "50%"},
+ { name: "Path", field: "path", width: "40%"},
{ name: "Type", field: "type", width: "5%"},
{ name: "Key Manager Algorithm", field: "keyManagerFactoryAlgorithm", width: "20%"},
{ name: "Alias", field: "certificateAlias", width: "15%"}
@@ -576,10 +596,10 @@ define(["dojo/_base/xhr",
that.trustStoresGrid =
new UpdatableStore(that.brokerData.truststores, query(".broker-trust-stores")[0],
[ { name: "Name", field: "name", width: "20%"},
- { name: "Path", field: "path", width: "50%"},
+ { name: "Path", field: "path", width: "40%"},
{ name: "Type", field: "type", width: "5%"},
- { name: "Trust Manager Algorithm", field: "trustManagerFactoryAlgorithm", width: "20%"},
- { name: "Peers only", field: "peersOnly", width: "15%",
+ { name: "Trust Manager Algorithm", field: "trustManagerFactoryAlgorithm", width: "25%"},
+ { name: "Peers only", field: "peersOnly", width: "10%",
formatter: function(val){
return "<input type='radio' disabled='disabled' "+(val ? "checked='checked'": "")+" />";
}
@@ -593,6 +613,19 @@ define(["dojo/_base/xhr",
that.controller.show("truststore", name, brokerObj);
});
}, gridProperties, EnhancedGrid);
+ that.groupProvidersGrid =
+ new UpdatableStore(that.brokerData.groupproviders, query(".broker-group-providers")[0],
+ [ { name: "Name", field: "name", width: "50%"},
+ { name: "Type", field: "type", width: "50%"}
+ ], function(obj) {
+ connect.connect(obj.grid, "onRowDblClick", obj.grid,
+ function(evt){
+ var idx = evt.rowIndex,
+ theItem = this.getItem(idx);
+ var name = obj.dataStore.getValue(theItem,"name");
+ that.controller.show("groupprovider", name, brokerObj);
+ });
+ }, gridProperties, EnhancedGrid);
});
@@ -688,6 +721,10 @@ define(["dojo/_base/xhr",
{
that.trustStoresGrid.update(that.brokerData.truststores);
}
+ if (that.groupProvidersGrid)
+ {
+ that.groupProvidersGrid.update(that.brokerData.groupproviders);
+ }
});
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
index 4e05f4b0ea..98e01773ef 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
@@ -27,10 +27,12 @@ define(["dojo/_base/xhr",
"qpid/common/util",
"qpid/common/UpdatableStore",
"dojox/grid/EnhancedGrid",
+ "dijit/registry",
+ "dojo/_base/event",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dojo/domReady!"],
- function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid) {
+ function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid, registry, event) {
function GroupProvider(name, parent, controller) {
this.name = name;
@@ -43,7 +45,7 @@ define(["dojo/_base/xhr",
}
GroupProvider.prototype.getTitle = function() {
- return "GroupProvider";
+ return "GroupProvider: " + this.name ;
};
GroupProvider.prototype.open = function(contentPane) {
@@ -61,6 +63,13 @@ define(["dojo/_base/xhr",
that.groupProviderAdapter.update();
+ var deleteButton = query(".deleteGroupProviderButton", contentPane.containerNode)[0];
+ var deleteWidget = registry.byNode(deleteButton);
+ connect.connect(deleteWidget, "onClick",
+ function(evt){
+ event.stop(evt);
+ that.deleteGroupProvider();
+ });
}});
};
@@ -68,12 +77,37 @@ define(["dojo/_base/xhr",
updater.remove( this.groupProviderAdapter );
};
+ GroupProvider.prototype.deleteGroupProvider = function() {
+ var warnMessage = "";
+ if (this.groupProviderAdapter.groupProviderData && this.groupProviderAdapter.groupProviderData.type.indexOf("File") != -1)
+ {
+ warnMessage = "NOTE: provider deletion will also remove the group file on disk.\n\n";
+ }
+ if(confirm(warnMessage + "Are you sure you want to delete group provider '" + this.name + "'?")) {
+ var query = "rest/groupprovider/" +encodeURIComponent(this.name);
+ this.success = true
+ var that = this;
+ xhr.del({url: query, sync: true, handleAs: "json"}).then(
+ function(data) {
+ that.close();
+ that.contentPane.onClose()
+ that.controller.tabContainer.removeChild(that.contentPane);
+ that.contentPane.destroyRecursive();
+ },
+ function(error) {that.success = false; that.failureReason = error;});
+ if(!this.success ) {
+ alert("Error:" + this.failureReason);
+ }
+ }
+ };
+
function GroupProviderUpdater(node, groupProviderObj, controller)
{
this.controller = controller;
this.name = query(".name", node)[0];
+ this.type = query(".type", node)[0];
this.query = "rest/groupprovider/"+encodeURIComponent(groupProviderObj.name);
-
+ this.typeUI ={"GroupFile": "FileGroupManager"};
var that = this;
xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
@@ -85,9 +119,10 @@ define(["dojo/_base/xhr",
that.updateHeader();
- require(["qpid/management/groupprovider/"+that.groupProviderData.type],
+ var ui = that.typeUI[that.groupProviderData.type];
+ require(["qpid/management/groupprovider/"+ ui],
function(SpecificProvider) {
- that.details = new SpecificProvider(node, groupProviderObj, controller);
+ that.details = new SpecificProvider(query(".providerDetails", node)[0], groupProviderObj, controller);
that.details.update();
});
@@ -98,6 +133,7 @@ define(["dojo/_base/xhr",
GroupProviderUpdater.prototype.updateHeader = function()
{
this.name.innerHTML = this.groupProviderData[ "name" ];
+ this.type.innerHTML = this.groupProviderData[ "type" ];
};
GroupProviderUpdater.prototype.update = function()
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js
new file mode 100644
index 0000000000..c8cd33fd6a
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js
@@ -0,0 +1,177 @@
+/*
+ *
+ * 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/lang",
+ "dojo/_base/xhr",
+ "dojo/dom",
+ "dojo/dom-construct",
+ "dijit/registry",
+ "dojo/parser",
+ "dojo/_base/array",
+ "dojo/_base/event",
+ 'dojo/_base/json',
+ "qpid/common/util",
+ "dojo/store/Memory",
+ "dojox/validate/us",
+ "dojox/validate/web",
+ "dijit/Dialog",
+ "dijit/form/CheckBox",
+ "dijit/form/Textarea",
+ "dijit/form/ComboBox",
+ "dijit/form/TextBox",
+ "dijit/form/ValidationTextBox",
+ "dijit/form/Button",
+ "dijit/form/Form",
+ "dijit/layout/ContentPane",
+ "dojox/layout/TableContainer",
+ "dojo/domReady!"],
+ function (lang, xhr, dom, construct, registry, parser, array, event, json, util) {
+
+ var addGroupProvider = {};
+
+ addGroupProvider.show = function(groupProvider) {
+ var fields = [{
+ name: "name",
+ createWidget: function(groupProvider) {
+ return new dijit.form.ValidationTextBox({
+ required: true,
+ value: groupProvider.name,
+ disabled: groupProvider.name ? true : false,
+ label: "Name*:",
+ regexp: "^[\x20-\x2e\x30-\x7F]{1,255}$",
+ name: "name"});
+ }
+ }, {
+ name: "type",
+ createWidget: function(groupProvider) {
+
+ var typeContainer = construct.create("div");
+
+ var typeListContainer = new dojox.layout.TableContainer({
+ cols: 1,
+ "labelWidth": "300",
+ customClass: "formLabel",
+ showLabels: true,
+ orientation: "horiz"
+ });
+
+ typeContainer.appendChild(typeListContainer.domNode);
+
+ var providers = [];
+ var fieldSetContainers = {};
+ xhr.get({
+ url: "rest/helper?action=ListGroupProviderAttributes",
+ handleAs: "json",
+ sync: true
+ }).then(
+ function(data) {
+ var providerIndex = 0;
+
+ for (var providerType in data) {
+ if (data.hasOwnProperty(providerType)) {
+ providers[providerIndex++] = {id: providerType, name: providerType};
+
+ var attributes = data[providerType].attributes;
+ var descriptions = data[providerType].descriptions;
+
+ var layout = new dojox.layout.TableContainer( {
+ cols: 1,
+ "labelWidth": "300",
+ customClass: "formLabel",
+ showLabels: true,
+ orientation: "horiz"
+ });
+
+ for(var i=0; i < attributes.length; i++) {
+ if ("type" == attributes[i])
+ {
+ continue;
+ }
+ var labelValue = attributes[i];
+ if (descriptions && descriptions[attributes[i]])
+ {
+ labelValue = descriptions[attributes[i]];
+ }
+ var text = new dijit.form.TextBox({
+ label: labelValue + ":",
+ name: attributes[i]
+ });
+ layout.addChild(text);
+ }
+
+ typeContainer.appendChild(layout.domNode);
+ fieldSetContainers[providerType] = layout;
+ }
+ }
+ });
+
+ var providersStore = new dojo.store.Memory({ data: providers });
+
+ var typeList = new dijit.form.FilteringSelect({
+ required: true,
+ value: groupProvider.type,
+ store: providersStore,
+ label: "Type*:",
+ name: "type"});
+
+ typeListContainer.addChild(typeList);
+
+ var onChangeHandler = function onChangeHandler(newValue){
+ for (var i in fieldSetContainers) {
+ var container = fieldSetContainers[i];
+ var descendants = container.getChildren();
+ for(var i in descendants){
+ var descendant = descendants[i];
+ var propName = descendant.name;
+ if (propName) {
+ descendant.set("disabled", true);
+ }
+ }
+ container.domNode.style.display = "none";
+ }
+ var container = fieldSetContainers[newValue];
+ if (container)
+ {
+ container.domNode.style.display = "block";
+ var descendants = container.getChildren();
+ for(var i in descendants){
+ var descendant = descendants[i];
+ var propName = descendant.name;
+ if (propName) {
+ descendant.set("disabled", false);
+ }
+ }
+ }
+ };
+ typeList.on("change", onChangeHandler);
+ onChangeHandler(typeList.value);
+ return new dijit.layout.ContentPane({content: typeContainer, style:{padding: 0}});
+ }
+ }];
+
+ util.showSetAttributesDialog(
+ fields,
+ groupProvider ? groupProvider : {},
+ "rest/groupprovider" + (name ? "/" + encodeURIComponent(name.name) : ""),
+ groupProvider ? "Edit group provider - " + groupProvider.name : "Add group provider",
+ groupProvider ? false : true);
+ };
+ return addGroupProvider;
+ }); \ No newline at end of file
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
index 44fc9702e2..02276b8713 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
@@ -82,11 +82,12 @@ define(["dojo/_base/xhr",
xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
.then(function(data) {
+ that.path = query(".path", node)[0];
that.groupProviderData = data[0];
util.flattenStatistics( that.groupProviderData );
- var groupDiv = query(".groups")[0];
+ var groupDiv = query(".groups", node)[0];
var gridProperties = {
height: 400,
@@ -109,7 +110,15 @@ define(["dojo/_base/xhr",
that.groupsGrid =
new UpdatableStore(that.groupProviderData.groups, groupDiv,
[ { name: "Group Name", field: "name", width: "100%" }
- ], null, gridProperties, EnhancedGrid);
+ ], function(obj) {
+ connect.connect(obj.grid, "onRowDblClick", obj.grid,
+ function(evt){
+ var idx = evt.rowIndex,
+ theItem = this.getItem(idx);
+ var name = obj.dataStore.getValue(theItem,"name");
+ that.controller.show("group", name, groupProviderObj);
+ });
+ }, gridProperties, EnhancedGrid);
var addGroupButton = query(".addGroupButton", node)[0];
@@ -167,6 +176,7 @@ define(["dojo/_base/xhr",
xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
.then(function(data) {
that.groupProviderData = data[0];
+ that.path.innerHTML = that.groupProviderData.path;
util.flattenStatistics( that.groupProviderData );
that.groupsGrid.update(that.groupProviderData.groups);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html
index 9e267f0d5d..4acf42da46 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showBroker.html
@@ -65,10 +65,6 @@
<div class="formLabel-labelCell" style="float:left; width: 250px;">ACL file location:</div>
<div id="brokerAttribute.aclFile" style="float:left;"></div>
</div>
- <div id="brokerAttribute.groupFile.container" style="display: none; clear:both">
- <div class="formLabel-labelCell" style="float:left; width: 250px;">Group file location:</div>
- <div id="brokerAttribute.groupFile" style="float:left;"></div>
- </div>
<div id="brokerAttribute.statisticsReportingPeriod.container" style="display: none; clear:both">
<div class="formLabel-labelCell" style="float:left; width: 250px;">Statistics reporting period:</div>
<div id="brokerAttribute.statisticsReportingPeriod" style="float:left;"></div>
@@ -189,6 +185,12 @@
<button data-dojo-type="dijit.form.Button" class="deleteTruststore">Delete Trust Store</button>
</div>
<br/>
+ <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Group Providers'">
+ <div class="broker-group-providers"></div>
+ <button data-dojo-type="dijit.form.Button" class="addGroupProvider">Add Group Provider</button>
+ <button data-dojo-type="dijit.form.Button" class="deleteGroupProvider">Delete Group Provider</button>
+ </div>
+ <br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Log File', open: false">
<div class="broker-logfile"></div>
</div>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html
index 914857db5c..332c7f5eaa 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html
@@ -22,4 +22,10 @@
<span style="">Name:</span><span class="name" style="position:absolute; left:6em"></span>
<br/>
<span style="">Type:</span><span class="type" style="position:absolute; left:6em"></span>
-</div> \ No newline at end of file
+ <br/>
+ <div class="providerDetails"></div>
+ <div class="dijitDialogPaneActionBar">
+ <input class="deleteGroupProviderButton" type="button" value="Delete Group provider" label="Delete Group Provider" dojoType="dijit.form.Button" />
+ </div>
+</div>
+<br/> \ No newline at end of file