summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2015-02-04 14:33:38 +0000
committerAlex Rudyy <orudyy@apache.org>2015-02-04 14:33:38 +0000
commitb01427061008ed26afd5a08e18fe1d0ce81dbf25 (patch)
treec9bc485326b74bded3431814526476a2ced40053 /qpid/java
parent9bde51bb9e454cf54a71ae4b3f74ced95b68f5ae (diff)
downloadqpid-python-b01427061008ed26afd5a08e18fe1d0ce81dbf25.tar.gz
QPID-6360: [Java Broker] Extend the UI to support creation of alternate group providers and the new config based group provider plugin
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1657255 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupManagingGroupProvider.java24
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProvider.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java3
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/addGroupProvider.html66
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/group/addGroupMember.html5
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/group/showGroup.html6
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/addGroup.html5
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/add.html37
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/show.html25
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showGroupManagingGroupProvider.html (renamed from qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html)12
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js144
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js280
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js9
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/GroupManagingGroupProvider.js (renamed from qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js)95
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/add.js37
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/show.js37
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/add.js26
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/show.js35
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html5
19 files changed, 577 insertions, 277 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupManagingGroupProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupManagingGroupProvider.java
new file mode 100644
index 0000000000..a961d77776
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupManagingGroupProvider.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.qpid.server.model;
+
+@ManagedAnnotation
+public interface GroupManagingGroupProvider extends ManagedInterface
+{
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProvider.java
index d338dad300..631ed3e8f7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProvider.java
@@ -20,12 +20,13 @@
*/
package org.apache.qpid.server.model.adapter;
+import org.apache.qpid.server.model.GroupManagingGroupProvider;
import org.apache.qpid.server.model.GroupProvider;
import org.apache.qpid.server.model.ManagedAttribute;
import org.apache.qpid.server.model.ManagedObject;
@ManagedObject( category = false, type = "GroupFile" )
-public interface FileBasedGroupProvider<X extends FileBasedGroupProvider<X>> extends GroupProvider<X>
+public interface FileBasedGroupProvider<X extends FileBasedGroupProvider<X>> extends GroupProvider<X>, GroupManagingGroupProvider
{
String PATH="path";
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
index 6728ba2fed..ecc166f8fc 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupProviderImpl.java
@@ -30,6 +30,7 @@ import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Group;
+import org.apache.qpid.server.model.GroupManagingGroupProvider;
import org.apache.qpid.server.model.GroupMember;
import org.apache.qpid.server.model.GroupProvider;
import org.apache.qpid.server.model.ManagedObject;
@@ -38,7 +39,7 @@ import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.StateTransition;
@ManagedObject(category = false, type = GroupProviderImpl.CONFIG_TYPE)
-public class GroupProviderImpl extends AbstractConfiguredObject<GroupProviderImpl> implements GroupProvider<GroupProviderImpl>
+public class GroupProviderImpl extends AbstractConfiguredObject<GroupProviderImpl> implements GroupProvider<GroupProviderImpl>, GroupManagingGroupProvider
{
public static final String CONFIG_TYPE = "ManagedGroupProvider";
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/addGroupProvider.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/addGroupProvider.html
new file mode 100644
index 0000000000..b622fe94d2
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/addGroupProvider.html
@@ -0,0 +1,66 @@
+<!--
+ ~ 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="dijitHidden">
+ <div data-dojo-type="dijit/Dialog" data-dojo-props="title:'Add Store'" id="addGroupProvider">
+ <div id="addGroupProvider.contentPane">
+ <form id="addGroupProvider.form" method="post" data-dojo-type="dijit/form/Form">
+ <div class="formBox">
+ <div class="clear">
+ <div class="formLabel-labelCell tableContainer-labelCell">Name*:</div>
+ <div class="formLabel-controlCell tableContainer-valueCell">
+ <input type="text" id="addGroupProvider.name"
+ data-dojo-type="dijit/form/ValidationTextBox"
+ data-dojo-props="
+ name: 'name',
+ placeHolder: 'group provider name',
+ required: true,
+ promptMessage: 'Name of group provider, must be unique',
+ title: 'Enter a unique group provider name per broker'" />
+ </div>
+ </div>
+ <div class="clear">
+ <div class="formLabel-labelCell tableContainer-labelCell">Type*:</div>
+ <div class="tableContainer-valueCell formLabel-controlCell">
+ <select id="addGroupProvider.type" data-dojo-type="dijit/form/FilteringSelect"
+ data-dojo-props="
+ name: 'type',
+ required: true,
+ placeHolder: 'group provider type',
+ promptMessage: 'Type of group provider',
+ title: 'Select type',
+ searchAttr: 'name'">
+ </select>
+ </div>
+ </div>
+ <div class="clear">
+ <div id="addGroupProvider.typeFields"></div>
+ </div>
+ </div>
+ </form>
+ <div class="clear">
+ </div>
+ </div>
+
+ <div class="dijitDialogPaneActionBar qpidDialogPaneActionBar">
+ <button data-dojo-type="dijit/form/Button" id="addGroupProvider.addButton" data-dojo-props="label: 'Save'" type="submit"></button>
+ <button data-dojo-type="dijit/form/Button" id="addGroupProvider.cancelButton" data-dojo-props="label: 'Cancel'" ></button>
+ </div>
+ </div>
+</div>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/group/addGroupMember.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/group/addGroupMember.html
index 0372468f91..e479e8cb74 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/group/addGroupMember.html
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/group/addGroupMember.html
@@ -30,8 +30,9 @@
</table>
<br/>
- <!-- submit buttons -->
- <input type="submit" value="Add Group Member" label="Add Group Member" dojoType="dijit.form.Button" />
+ <div class="dijitDialogPaneActionBar">
+ <input type="submit" value="Add Group Member" label="Add Group Member" dojoType="dijit.form.Button" />
+ </div>
</form>
</div>
</div>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/group/showGroup.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/group/showGroup.html
index 4fddf727d0..c84e794ac1 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/group/showGroup.html
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/group/showGroup.html
@@ -23,8 +23,10 @@
<br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Group Members'">
<div class="groupMembers"></div>
- <button data-dojo-type="dijit.form.Button" class="addGroupMemberButton" type="button">Add Group Member</button>
- <button data-dojo-type="dijit.form.Button" class="removeGroupMemberButton" type="button">Remove Group Members</button>
+ <div class="dijitDialogPaneActionBar">
+ <button data-dojo-type="dijit.form.Button" class="addGroupMemberButton" type="button">Add Group Member</button>
+ <button data-dojo-type="dijit.form.Button" class="removeGroupMemberButton" type="button">Remove Group Members</button>
+ </div>
</div>
</div>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/addGroup.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/addGroup.html
index 8d3431808a..29ce2ebe6c 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/addGroup.html
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/addGroup.html
@@ -30,8 +30,9 @@
</table>
<br/>
- <!-- submit buttons -->
- <input type="submit" value="Create Group" label="Create Group" dojoType="dijit.form.Button" />
+ <div class="dijitDialogPaneActionBar">
+ <input type="submit" value="Create Group" label="Create Group" dojoType="dijit.form.Button" />
+ </div>
</form>
</div>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/add.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/add.html
new file mode 100644
index 0000000000..7fc458cd4f
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/add.html
@@ -0,0 +1,37 @@
+<!--
+ -
+ - 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>
+ <div class="clear">
+ <div class="formLabel-labelCell tableContainer-labelCell">Path*:</div>
+ <div class="formLabel-controlCell tableContainer-valueCell">
+ <input type="text" class="addGroupProviderPath"
+ data-dojo-type="dijit/form/ValidationTextBox"
+ data-dojo-props="
+ name: 'path',
+ required: true,
+ placeHolder: 'path/to/group/file',
+ title: 'Enter path to file with groups',
+ promptMessage: 'Enter path to file with groups'"/>
+ </div>
+ </div>
+
+ <div class="clear"></div>
+</div>
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/show.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/show.html
new file mode 100644
index 0000000000..740c65fd38
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/groupfile/show.html
@@ -0,0 +1,25 @@
+<!--
+ ~ 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>
+ <div class="clear">
+ <div class="formLabel-labelCell">Path to file:</div>
+ <div ><span class="path" ></span></div>
+ </div>
+ <div class="clear"></div>
+</div>
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/showGroupManagingGroupProvider.html
index d266971ee2..62a6c7537c 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/showGroupManagingGroupProvider.html
@@ -19,16 +19,12 @@
-
-->
<div class="FileGroupManager">
- <div class="clear">
- <div class="formLabel-labelCell">Path:</div>
- <div class="path"></div>
- </div>
- <div class="clear"></div>
- <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>
- <button data-dojo-type="dijit.form.Button" class="deleteGroupButton">Delete Groups</button>
+ <div class="dijitDialogPaneActionBar">
+ <button data-dojo-type="dijit.form.Button" class="addGroupButton">Add Group</button>
+ <button data-dojo-type="dijit.form.Button" class="deleteGroupButton">Delete Groups</button>
+ </div>
</div>
</div>
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 09473524b5..f739e52665 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
@@ -22,18 +22,24 @@ define(["dojo/_base/xhr",
"dojo/parser",
"dojo/query",
"dojo/_base/connect",
+ "dojo/_base/array",
+ "dojo/_base/event",
"qpid/common/properties",
"qpid/common/updater",
"qpid/common/util",
+ "qpid/common/metadata",
"qpid/common/UpdatableStore",
"dojox/grid/EnhancedGrid",
"dijit/registry",
- "dojo/_base/event",
"dojox/html/entities",
+ "dojo/text!showGroupProvider.html",
+ "qpid/management/addGroupProvider",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dojo/domReady!"],
- function (xhr, parser, query, connect, properties, updater, util, UpdatableStore, EnhancedGrid, registry, event, entities) {
+ function (xhr, parser, query, connect, array, event, properties, updater, util, metadata, UpdatableStore,
+ EnhancedGrid, registry, entities, template, addGroupProvider)
+ {
function GroupProvider(name, parent, controller) {
this.name = name;
@@ -45,38 +51,63 @@ define(["dojo/_base/xhr",
return "GroupProvider: " + this.name ;
};
- GroupProvider.prototype.open = function(contentPane) {
+ GroupProvider.prototype.open = function(contentPane)
+ {
var that = this;
this.contentPane = contentPane;
- xhr.get({url: "showGroupProvider.html",
- sync: true,
- load: function(data) {
- contentPane.containerNode.innerHTML = data;
- parser.parse(contentPane.containerNode);
-
- that.groupProviderAdapter = new GroupProviderUpdater(contentPane.containerNode, that.modelObj, that.controller);
-
- updater.add( that.groupProviderAdapter );
-
- 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();
- });
- }});
+ contentPane.containerNode.innerHTML = template;
+ parser.parse(contentPane.containerNode);
+
+ this.groupProviderUpdater = new GroupProviderUpdater(contentPane.containerNode, this.modelObj, this.controller);
+
+ // load data
+ this.groupProviderUpdater.update();
+
+ this.deleteButton = registry.byNode(query(".deleteGroupProviderButton", contentPane.containerNode)[0]);
+ this.deleteButton.on("click", function(evt){ event.stop(evt); that.deleteGroupProvider(); });
+
+ this.editButton = registry.byNode(query(".editGroupProviderButton", contentPane.containerNode)[0]);
+ this.editButton.on("click", function(evt){ event.stop(evt); that.editGroupProvider(); });
+
+ var type = this.groupProviderUpdater.groupProviderData.type;
+ var providerDetailsNode = query(".providerDetails", contentPane.containerNode)[0];
+
+ require(["qpid/management/groupprovider/"+ encodeURIComponent(type.toLowerCase()) + "/show"],
+ function(DetailsUI)
+ {
+ that.groupProviderUpdater.details = new DetailsUI({containerNode: providerDetailsNode, parent: that});
+ that.groupProviderUpdater.details.update(that.groupProviderUpdater.groupProviderData);
+ });
+
+ var managedInterfaces = metadata.getMetaData("GroupProvider", type).managedInterfaces;
+ if (managedInterfaces)
+ {
+
+ var managedInterfaceUI = this.groupProviderUpdater.managedInterfaces;
+
+ array.forEach(managedInterfaces,
+ function(managedInterface)
+ {
+ require(["qpid/management/groupprovider/" + encodeURIComponent(managedInterface)],
+ function(ManagedInterface)
+ {
+ managedInterfaceUI[ManagedInterface] = new ManagedInterface(providerDetailsNode, that.modelObj, that.controller);
+ managedInterfaceUI[ManagedInterface].update(that.groupProviderUpdater.groupProviderData);
+ });
+ });
+ }
+
+ updater.add( this.groupProviderUpdater );
};
+
GroupProvider.prototype.close = function() {
- updater.remove( this.groupProviderAdapter );
+ updater.remove( this.groupProviderUpdater );
};
GroupProvider.prototype.deleteGroupProvider = function() {
var warnMessage = "";
- if (this.groupProviderAdapter.groupProviderData && this.groupProviderAdapter.groupProviderData.type.indexOf("File") != -1)
+ if (this.groupProviderUpdater.groupProviderData && this.groupProviderUpdater.groupProviderData.type.indexOf("File") != -1)
{
warnMessage = "NOTE: provider deletion will also remove the group file on disk.\n\n";
}
@@ -96,7 +127,23 @@ define(["dojo/_base/xhr",
util.xhrErrorHandler(this.failureReason);
}
}
- };
+ };
+
+ GroupProvider.prototype.editGroupProvider = function()
+ {
+ xhr.get(
+ {
+ url: this.groupProviderUpdater.query,
+ sync: true,
+ content: { actuals: true },
+ handleAs: "json",
+ load: function(actualData)
+ {
+ addGroupProvider.show(actualData[0]);
+ }
+ }
+ );
+ }
function GroupProviderUpdater(node, groupProviderObj, controller)
{
@@ -105,27 +152,8 @@ define(["dojo/_base/xhr",
this.type = query(".type", node)[0];
this.state = query(".state", node)[0];
this.query = "api/latest/groupprovider/"+encodeURIComponent(groupProviderObj.name);
- this.typeUI ={"GroupFile": "FileGroupManager"};
- var that = this;
-
- xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
- .then(function(data)
- {
- that.groupProviderData = data[0];
-
- util.flattenStatistics( that.groupProviderData );
-
- that.updateHeader();
-
- var ui = that.typeUI[that.groupProviderData.type];
- require(["qpid/management/groupprovider/"+ ui],
- function(SpecificProvider) {
- that.details = new SpecificProvider(query(".providerDetails", node)[0], groupProviderObj, controller);
- that.details.update();
- });
-
- });
-
+ this.managedInterfaces = {};
+ this.details = null;
}
GroupProviderUpdater.prototype.updateHeader = function()
@@ -138,6 +166,28 @@ define(["dojo/_base/xhr",
GroupProviderUpdater.prototype.update = function()
{
var that = this;
+ xhr.get({url: this.query, sync: true, handleAs: "json"}).then(function(data) {that._update(data[0]);});
+ };
+
+ GroupProviderUpdater.prototype._update = function(data)
+ {
+ this.groupProviderData = data;
+ util.flattenStatistics( this.groupProviderData );
+ this.updateHeader();
+
+ if (this.details)
+ {
+ this.details.update(this.groupProviderData);
+ }
+
+ for(var managedInterface in this.managedInterfaces)
+ {
+ var managedInterfaceUI = this.managedInterfaces[managedInterface];
+ if (managedInterfaceUI)
+ {
+ managedInterfaceUI.update(this.groupProviderData);
+ }
+ }
};
return GroupProvider;
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
index 82281ad3d3..f158b8ceb6 100644
--- 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
@@ -18,7 +18,7 @@
* under the License.
*
*/
-define(["dojo/_base/lang",
+define([
"dojo/_base/xhr",
"dojo/dom",
"dojo/dom-construct",
@@ -26,8 +26,10 @@ define(["dojo/_base/lang",
"dojo/parser",
"dojo/_base/array",
"dojo/_base/event",
- 'dojo/_base/json',
+ 'dojo/json',
"qpid/common/util",
+ "qpid/common/metadata",
+ "dojo/text!addGroupProvider.html",
"dojo/store/Memory",
"dojox/validate/us",
"dojox/validate/web",
@@ -42,140 +44,152 @@ define(["dojo/_base/lang",
"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}$",
- promptMessage: "Name of group provider.",
- placeHolder: "name",
- 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: "service/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);
- }
+ function (xhr, dom, construct, registry, parser, array, event, json, util, metadata, template)
+ {
+
+ var addGroupProvider =
+ {
+ init: function()
+ {
+ var that=this;
+ this.containerNode = construct.create("div", {innerHTML: template});
+ parser.parse(this.containerNode);
+
+ this.groupProviderName = registry.byId("addGroupProvider.name");
+ this.groupProviderName.set("regExpGen", util.nameOrContextVarRegexp);
+
+ this.dialog = registry.byId("addGroupProvider");
+ this.addButton = registry.byId("addGroupProvider.addButton");
+ this.cancelButton = registry.byId("addGroupProvider.cancelButton");
+ this.cancelButton.on("click", function(e){that._cancel(e);});
+ this.addButton.on("click", function(e){that._add(e);});
+
+ this.groupProviderTypeFieldsContainer = dom.byId("addGroupProvider.typeFields");
+ this.groupProviderForm = registry.byId("addGroupProvider.form");
+
+ this.groupProviderType = registry.byId("addGroupProvider.type");
+ this.groupProviderType.on("change", function(type){that._groupProviderTypeChanged(type);});
+
+ var supportedTypes = metadata.getTypesForCategory("GroupProvider");
+ supportedTypes.sort();
+ var supportedTypesStore = util.makeTypeStore(supportedTypes);
+ this.groupProviderType.set("store", supportedTypesStore);
+ },
+ show: function(actualData)
+ {
+ this.initialData = actualData;
+ this.groupProviderForm.reset();
+
+ if (actualData)
+ {
+ this._destroyTypeFields(this.containerNode);
+ this._initFields(actualData);
+ }
+ this.groupProviderName.set("disabled", actualData == null ? false : true);
+ this.groupProviderType.set("disabled", actualData == null ? false : true);
+ this.dialog.set("title", actualData == null ? "Add Group Provider" : "Edit Group Provider - " + actualData.name)
+ this.dialog.show();
+ },
+ _initFields:function(data)
+ {
+ var type = data["type"];
+ var attributes = metadata.getMetaData("GroupProvider", type).attributes;
+ for(var name in attributes)
+ {
+ var widget = registry.byId("addGroupProvider."+name);
+ if (widget)
+ {
+ widget.set("value", data[name]);
}
- 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);
- }
+ }
+ },
+ _cancel: function(e)
+ {
+ event.stop(e);
+ this.dialog.hide();
+ },
+ _add: function(e)
+ {
+ event.stop(e);
+ this._submit();
+ },
+ _submit: function()
+ {
+ if (this.groupProviderForm.validate())
+ {
+ var success = false,failureReason=null;
+
+ var groupProviderData = util.getFormWidgetValues(this.groupProviderForm, this.initialData);
+ var encodedName = encodeURIComponent(this.groupProviderName.value);
+ var jsonString = json.stringify(groupProviderData);
+
+ try {
+ xhr.put(
+ {
+ url: "api/latest/groupprovider/" + encodedName,
+ sync: true,
+ handleAs: "json",
+ headers: { "Content-Type": "application/json"},
+ putData: jsonString,
+ load: function(x) {success = true; },
+ error: function(error) {success = false; failureReason = error;}
+ });
+ }
+ catch (e)
+ {
+ console.warn(e);
}
- }
- };
- typeList.on("change", onChangeHandler);
- onChangeHandler(typeList.value);
- return new dijit.layout.ContentPane({content: typeContainer, style:{padding: 0}});
- }
- }];
- util.showSetAttributesDialog(
- fields,
- groupProvider ? groupProvider : {},
- "api/latest/groupprovider" + (name ? "/" + encodeURIComponent(name.name) : ""),
- groupProvider ? "Edit group provider - " + groupProvider.name : "Add group provider",
- "Group",
- groupProvider && groupProvider.type ? groupProvider.type : "Group",
- groupProvider ? false : true);
+ if (success == true)
+ {
+ this.dialog.hide();
+ }
+ else
+ {
+ util.xhrErrorHandler(failureReason);
+ }
+ }
+ else
+ {
+ alert('Form contains invalid data. Please correct first');
+ }
+ },
+ _groupProviderTypeChanged: function(type)
+ {
+ this._destroyTypeFields(this.groupProviderTypeFieldsContainer);
+ if (type)
+ {
+ var that = this;
+ require([ "qpid/management/groupprovider/" + type.toLowerCase() + "/add"], function(typeUI)
+ {
+ try
+ {
+ typeUI.show({containerNode: that.groupProviderTypeFieldsContainer, parent: that, data: that.initialData});
+ util.applyMetadataToWidgets(that.groupProviderTypeFieldsContainer, "GroupProvider", type);
+ }
+ catch(e)
+ {
+ console.warn(e);
+ }
+ });
+ }
+ },
+ _destroyTypeFields: function(typeFieldsContainer)
+ {
+ var widgets = registry.findWidgets(typeFieldsContainer);
+ array.forEach(widgets, function(item) { item.destroyRecursive();});
+ construct.empty(typeFieldsContainer);
+ }
};
+
+ try
+ {
+ addGroupProvider.init();
+ }
+ catch(e)
+ {
+ console.warn(e);
+ }
return addGroupProvider;
+
}); \ No newline at end of file
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
index 8f63a8c935..8ac6be04cc 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/group/Group.js
@@ -34,11 +34,12 @@ define(["dojo/_base/xhr",
"dojox/grid/EnhancedGrid",
"dojo/data/ObjectStore",
"qpid/management/group/addGroupMember",
+ "dojox/html/entities",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dojo/domReady!"],
function (xhr, parser, query, registry, connect, event, json, properties, updater, util, formatter,
- UpdatableStore, JsonRest, EnhancedGrid, ObjectStore, addGroupMember) {
+ UpdatableStore, JsonRest, EnhancedGrid, ObjectStore, addGroupMember, entities) {
function Group(name, parent, controller) {
this.name = name;
@@ -78,10 +79,8 @@ define(["dojo/_base/xhr",
parser.parse(contentPane.containerNode);
that.groupUpdater = new GroupUpdater(contentPane.containerNode, that, that.controller);
-
- updater.add( that.groupUpdater );
-
that.groupUpdater.update();
+ updater.add( that.groupUpdater );
var addGroupMemberButton = query(".addGroupMemberButton", contentPane.containerNode)[0];
connect.connect(registry.byNode(addGroupMemberButton), "onClick",
@@ -128,7 +127,7 @@ define(["dojo/_base/xhr",
"durable",
"lifetimePolicy",
"type"]);
-
+ this.name.innerHTML = entities.encode(String(groupObj.getGroupName()));
this.query = "api/latest/groupmember/"+ encodeURIComponent(groupObj.getGroupProviderName()) + "/" + encodeURIComponent(groupObj.getGroupName());
xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"}).then(function(data)
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/GroupManagingGroupProvider.js
index 4ee411633f..ea12280d0d 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/GroupManagingGroupProvider.js
@@ -34,6 +34,7 @@ define(["dojo/_base/xhr",
"qpid/common/updater",
"qpid/common/UpdatableStore",
"dojox/grid/EnhancedGrid",
+ "dojo/text!groupprovider/showGroupManagingGroupProvider.html",
"dojox/grid/enhanced/plugins/Pagination",
"dojox/grid/enhanced/plugins/IndirectSelection",
"dojox/validate/us", "dojox/validate/web",
@@ -44,49 +45,17 @@ define(["dojo/_base/xhr",
"dijit/form/Form",
"dijit/form/DateTextBox",
"dojo/domReady!"],
- function (xhr, dom, parser, query, construct, connect, win, event, json, registry, entities, util, properties, updater, UpdatableStore, EnhancedGrid) {
- function DatabaseGroupManager(containerNode, groupProviderObj, controller) {
+ function (xhr, dom, parser, query, construct, connect, win, event, json, registry, entities, util, properties,
+ updater, UpdatableStore, EnhancedGrid, template)
+ {
+ function GroupManagingGroupProvider(containerNode, groupProviderObj, controller)
+ {
var node = construct.create("div", null, containerNode, "last");
var that = this;
this.name = groupProviderObj.name;
- xhr.get({url: "groupprovider/showFileGroupManager.html",
- sync: true,
- load: function(data) {
- node.innerHTML = data;
- parser.parse(node);
-
-
- that.groupDatabaseUpdater= new GroupProviderUpdater(node, groupProviderObj, controller);
-
- updater.add( that.groupDatabaseUpdater);
-
- that.groupDatabaseUpdater.update();
-
-
- }});
- }
-
- DatabaseGroupManager.prototype.update = function() {
- this.groupDatabaseUpdater.update();
- };
-
- DatabaseGroupManager.prototype.close = function() {
- updater.remove( this.groupDatabaseUpdater );
- };
-
- function GroupProviderUpdater(node, groupProviderObj, controller)
- {
+ node.innerHTML = template;
+ parser.parse(node);
this.controller = controller;
- this.query = "api/latest/groupprovider/"+encodeURIComponent(groupProviderObj.name);
- this.name = groupProviderObj.name;
- var that = this;
-
- 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", node)[0];
@@ -95,7 +64,7 @@ define(["dojo/_base/xhr",
keepSelection: true,
plugins: {
pagination: {
- pageSizes: ["10", "25", "50", "100"],
+ pageSizes: [10, 25, 50, 100],
description: true,
sizeSwitch: true,
pageStepper: true,
@@ -106,10 +75,7 @@ define(["dojo/_base/xhr",
indirectSelection: true
}};
-
-
- that.groupsGrid =
- new UpdatableStore(that.groupProviderData.groups, groupDiv,
+ this.groupsGrid = new UpdatableStore([], groupDiv,
[ { name: "Group Name", field: "name", width: "100%" }
], function(obj) {
connect.connect(obj.grid, "onRowDblClick", obj.grid,
@@ -120,22 +86,13 @@ define(["dojo/_base/xhr",
that.controller.show("group", name, groupProviderObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
-
-
- var addGroupButton = query(".addGroupButton", node)[0];
- connect.connect(registry.byNode(addGroupButton), "onClick", function(evt){ addGroup.show(groupProviderObj.name) });
-
- var deleteGroupButton = query(".deleteGroupButton", node)[0];
- var deleteWidget = registry.byNode(deleteGroupButton);
- connect.connect(deleteWidget, "onClick",
- function(evt){
- event.stop(evt);
- that.deleteGroups();
- });
- });
+ var addGroupButton = query(".addGroupButton", node)[0];
+ registry.byNode(addGroupButton).on("click", function(evt){ addGroup.show(groupProviderObj.name) });
+ var deleteWidget = registry.byNode(query(".deleteGroupButton", node)[0]);
+ deleteWidget.on("click", function(evt){ event.stop(evt); that.deleteGroups(); });
}
- GroupProviderUpdater.prototype.deleteGroups = function()
+ GroupManagingGroupProvider.prototype.deleteGroups = function()
{
var grid = this.groupsGrid.grid;
var data = grid.selection.getSelected();
@@ -169,22 +126,12 @@ define(["dojo/_base/xhr",
}
};
- GroupProviderUpdater.prototype.update = function()
+ GroupManagingGroupProvider.prototype.update = function(data)
{
-
- var that = this;
-
- xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"})
- .then(function(data) {
- that.groupProviderData = data[0];
- that.path.innerHTML = entities.encode(String(that.groupProviderData.path));
- util.flattenStatistics( that.groupProviderData );
-
- that.groupsGrid.update(that.groupProviderData.groups);
-
- });
-
-
+ if (data)
+ {
+ this.groupsGrid.update(data.groups);
+ }
};
var addGroup = {};
@@ -258,5 +205,5 @@ define(["dojo/_base/xhr",
registry.byId("addGroup").show();
};
- return DatabaseGroupManager;
+ return GroupManagingGroupProvider;
});
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/add.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/add.js
new file mode 100644
index 0000000000..f28f250134
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/add.js
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/common/util", "qpid/common/metadata"],
+ function (dom, query, array, registry, util, metadata)
+ {
+
+ return { show: function(data)
+ {
+ var that=this;
+ util.parseHtmlIntoDiv(data.containerNode, "groupprovider/groupfile/add.html");
+ if (data.data)
+ {
+ var pathWidget = registry.byNode(query(".addGroupProviderPath", data.containerNode)[0]);
+ pathWidget.set("value", data.data.path);
+ }
+ }
+ };
+ }
+);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/show.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/show.js
new file mode 100644
index 0000000000..a559140898
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/groupfile/show.js
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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(["qpid/common/util", "dojo/domReady!"],
+ function (util, metadata)
+ {
+
+ function GroupFile(data)
+ {
+ util.buildUI(data.containerNode, data.parent, "groupprovider/groupfile/show.html", ["path"], this);
+ }
+
+ GroupFile.prototype.update = function(data)
+ {
+ util.updateUI(data, ["path"], this);
+ }
+
+ return GroupFile;
+ }
+);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/add.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/add.js
new file mode 100644
index 0000000000..fd8e09dcda
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/add.js
@@ -0,0 +1,26 @@
+/*
+ *
+ * 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([],
+ function (dom, query, array, registry, util, metadata)
+ {
+ return { show: function(data) { /* nothing to do */ } };
+ }
+);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/show.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/show.js
new file mode 100644
index 0000000000..ed6a0e155b
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/managedgroupprovider/show.js
@@ -0,0 +1,35 @@
+/*
+ *
+ * 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([],
+ function ()
+ {
+
+ function ManagedGroupProvider(data)
+ {
+ }
+
+ ManagedGroupProvider.prototype.update = function(data)
+ {
+ }
+
+ return ManagedGroupProvider;
+ }
+);
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 e095a0a427..3793a4407a 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
@@ -35,9 +35,10 @@
<div class="clear"></div>
<div class="providerDetails"></div>
-
+ <br/>
<div class="dijitDialogPaneActionBar">
- <input class="deleteGroupProviderButton" type="button" value="Delete Group provider" label="Delete Group Provider" dojoType="dijit.form.Button" />
+ <input class="deleteGroupProviderButton" type="button" value="Delete" label="Delete" data-dojo-type="dijit.form.Button" />
+ <input class="editGroupProviderButton" type="button" value="Edit" label="Edit" data-dojo-type="dijit.form.Button" data-dojo-props="disabled:true"/>
</div>
</div>
</div>