diff options
author | Bhupendra Bhusman Bhardwaj <bhupendrab@apache.org> | 2007-04-18 14:32:02 +0000 |
---|---|---|
committer | Bhupendra Bhusman Bhardwaj <bhupendrab@apache.org> | 2007-04-18 14:32:02 +0000 |
commit | 5ca1ab359a4e6c30286184752e2e26d693ce3753 (patch) | |
tree | bfd17c3bfe2795e986a7e4780f601d183530aab1 | |
parent | 1527cbb8d51058a5ab33642c72021377c74fa557 (diff) | |
download | qpid-python-5ca1ab359a4e6c30286184752e2e26d693ce3753.tar.gz |
AMQUserManagementMBean.java - calling relaod within viewUsers method.
Creating user list on management console instead of typing the user name.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@530034 13f79535-47bb-0310-9956-ffa450edef68
9 files changed, 97 insertions, 11 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/access/AMQUserManagementMBean.java b/java/broker/src/main/java/org/apache/qpid/server/security/access/AMQUserManagementMBean.java index 9daed8cd0f..a43474559d 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/security/access/AMQUserManagementMBean.java +++ b/java/broker/src/main/java/org/apache/qpid/server/security/access/AMQUserManagementMBean.java @@ -259,6 +259,8 @@ public class AMQUserManagementMBean extends AMQManagedObject implements UserMana // Table of users // Username(string), Access rights Read,Write,Admin(bool,bool,bool) + reloadData(); + if (_userlistDataType == null) { _logger.warn("TabluarData not setup correctly"); diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java b/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java index a29da431ef..6381213398 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java +++ b/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java @@ -97,8 +97,8 @@ public interface UserManagement * * @return The result of the operation */ - @MBeanOperation(name = "reloadData", description = "Reload the authentication file from disk.") - boolean reloadData(); +// @MBeanOperation(name = "reloadData", description = "Reload the authentication file from disk.") +// boolean reloadData(); /** * View users returns all the users that are currently available to the system. diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java index 091aa43d79..efd4a7e9a6 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java @@ -61,6 +61,10 @@ public class Constants public final static String OPERATION_CREATE_BINDING = "createNewBinding"; public final static String OPERATION_MOVE_MESSAGES = "moveMessages"; + public final static String OPERATION_CREATEUSER = "createUser"; + public final static String OPERATION_VIEWUSERS = "viewUsers"; + public final static String OPERATION_PARAM_USERNAME = "username"; + public final static String OPERATION_SUCCESSFUL = "Operation successful"; public final static String OPERATION_UNSUCCESSFUL = "Operation unsuccessful"; @@ -69,6 +73,7 @@ public class Constants public final static String NAVIGATION_ROOT = "Qpid Connections"; public final static String DESCRIPTION = " Description"; + public final static String ADMIN_MBEAN_TYPE = "UserManagement"; public final static String QUEUE = "Queue"; public final static String CONNECTION ="Connection"; public final static String EXCHANGE = "Exchange"; diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java index 38c3e8f413..31825e925d 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.management.ui; +import static org.apache.qpid.management.ui.Constants.*; import java.util.HashMap; /** @@ -50,7 +51,7 @@ public abstract class ManagedBean extends ManagedObject this._properties = properties; setName(getProperty("name")); setType(getProperty("type")); - _virtualHostName = getProperty(Constants.VIRTUAL_HOST); + _virtualHostName = getProperty(VIRTUAL_HOST); } public String getDomain() { @@ -89,7 +90,7 @@ public abstract class ManagedBean extends ManagedObject public String getVirtualHostName() { // To make it work with the broker with no virtual host implementation - return _virtualHostName == null ? Constants.DEFAULT_VH : _virtualHostName; + return _virtualHostName == null ? DEFAULT_VH : _virtualHostName; } /** @@ -106,21 +107,26 @@ public abstract class ManagedBean extends ManagedObject public boolean isQueue() { - return _type.endsWith(Constants.QUEUE); + return _type.endsWith(QUEUE); } public boolean isConnection() { - return _type.endsWith(Constants.CONNECTION); + return _type.endsWith(CONNECTION); } public boolean isExchange() { - return _type.endsWith(Constants.EXCHANGE); + return _type.endsWith(EXCHANGE); } public boolean isTempQueue() { return (isQueue() && getName().startsWith("tmp_")); } + + public boolean isAdmin() + { + return _type.endsWith(ADMIN_MBEAN_TYPE); + } } diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java index e2a0de9cb1..313e143df5 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java @@ -128,6 +128,10 @@ public abstract class ServerRegistry return _virtualHosts; } + public abstract void setUserList(List<String> list); + + public abstract List<String> getUsernames(); + public abstract void addManagedObject(ManagedBean key); public abstract List<ManagedBean> getMBeans(); diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java index 3aa190b9e0..816c479cf9 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java @@ -61,6 +61,7 @@ public class JMXServerRegistry extends ServerRegistry private JMXConnector _jmxc = null; private MBeanServerConnection _mbsc = null; + private List<String> _usersList; // When an mbean gets removed from mbean server, then the notification listener // will add that mbean in this list. private List<ManagedBean> _mbeansToBeRemoved = new ArrayList<ManagedBean>(); @@ -566,6 +567,16 @@ public class JMXServerRegistry extends ServerRegistry } return connections; } + + public void setUserList(List<String> list) + { + _usersList = list; + } + + public List<String> getUsernames() + { + return _usersList; + } public ClientNotificationListener getNotificationListener() { diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationData.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationData.java index 9b6750c21a..2b83645942 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationData.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationData.java @@ -80,5 +80,13 @@ public class OperationData this._returnType = returnType; } + public boolean isReturnTypeBoolean() + { + return (_returnType.equals("boolean") || _returnType.equals("java.lang.Boolean")); + } + public boolean isReturnTypeVoid() + { + return (_returnType.equals("void") || _returnType.equals("java.lang.Void")); + } }
\ No newline at end of file diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java index 76e84e7684..2ac037e4f0 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java @@ -20,10 +20,16 @@ */ package org.apache.qpid.management.ui.views; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.TabularDataSupport; + import static org.apache.qpid.management.ui.Constants.*; import org.apache.qpid.management.ui.ApplicationRegistry; import org.apache.qpid.management.ui.ManagedBean; @@ -271,6 +277,15 @@ public class OperationTabControl extends TabControl { items = EXCHANGE_TYPE_VALUES; } + else if (_mbean.isAdmin() && param.getName().equals(OPERATION_PARAM_USERNAME) + && !_opData.getName().equals(OPERATION_CREATEUSER)) + { + List<String> list = ApplicationRegistry.getServerRegistry(_mbean).getUsernames(); + if (list != null && !list.isEmpty()) + { + items = list.toArray(new String[0]); + } + } if (items != null) { @@ -633,6 +648,17 @@ public class OperationTabControl extends TabControl return; } + // Custom code for Admin mbean operation + /* These custome codes here are to make the GUI look more user friendly. + * Here we are adding the users to a list, which will be used to list username to be selected on + * pages like "delete user", "set password" instead of typing the username + */ + if (_mbean.isAdmin() && _opData.getName().equals(OPERATION_VIEWUSERS)) + { + ApplicationRegistry.getServerRegistry(_mbean).setUserList(extractUserList(result)); + } + // end of custom code + // Some mbeans have only "type" and no "name". String title = _mbean.getType(); if (_mbean.getName() != null && _mbean.getName().length() != 0) @@ -640,11 +666,11 @@ public class OperationTabControl extends TabControl title = _mbean.getName(); } - if (_opData.getReturnType().equals("void") || _opData.getReturnType().equals("java.lang.Void")) + if (_opData.isReturnTypeVoid()) { ViewUtility.popupInfoMessage(title, OPERATION_SUCCESSFUL); } - else if (_opData.getReturnType().equals("boolean") || _opData.getReturnType().equals("java.lang.Boolean")) + else if (_opData.isReturnTypeBoolean()) { boolean success = Boolean.parseBoolean(result.toString()); String message = success ? OPERATION_SUCCESSFUL : OPERATION_UNSUCCESSFUL; @@ -664,6 +690,24 @@ public class OperationTabControl extends TabControl } + private List<String> extractUserList(Object result) + { + if (!(result instanceof TabularDataSupport)) + { + return null; + } + + TabularDataSupport tabularData = (TabularDataSupport)result; + Collection<CompositeData> records = tabularData.values(); + List<String> list = new ArrayList<String>(); + for (CompositeData data : records) + { + list.add(data.get(USERNAME).toString()); + } + Collections.sort(list); + return list; + } + /** * Listener class for the operation parameters widget */ diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java index 2449cfaca9..9b5cddd342 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java @@ -596,8 +596,14 @@ public class ViewUtility { if (data1.getKey() instanceof List) { - String str1 = ((List)data1.getKey()).get(0).toString(); - String str2 = ((List)data2.getKey()).get(0).toString(); + Object obj1 = ((List)data1.getKey()).get(0); + Object obj2 = ((List)data2.getKey()).get(0); + String str1 = obj1.toString(); + String str2 = obj2.toString(); + if (obj1 instanceof String) + { + return str1.compareTo(str2); + } try { |