Author: robbie
Date: Wed Jan 6 22:37:15 2010
New Revision: 896701
URL: http://svn.apache.org/viewvc?rev=896701&view=rev
Log:
QPID-2322: Add new createUser and setPassword methods using String for
passwords. Position these after the older now-deprecated char[] methods within
the UserManagement interface to manipulate the MBeanInfo generated, resulting
in overwriting the OperationData of the deprecated method on the old 0.5
management console and forcing use of these newer methods rather than the
incompatible char[] based methods. Remove previously added compatibility check
as it is no longer required. Update current management console to use the new
String based methods when available.
merge from trunk 896693
Modified:
qpid/branches/0.5.x-dev/qpid/java/ (props changed)
qpid/branches/0.5.x-dev/qpid/java/broker/ (props changed)
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/
(props changed)
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
(contents, props changed)
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/ (props
changed)
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/users/UserManagementTabControl.java
Propchange: qpid/branches/0.5.x-dev/qpid/java/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 6 22:37:15 2010
@@ -1,2 +1,2 @@
/qpid/branches/java-broker-0-10/qpid/java:829414,829575
-/qpid/trunk/qpid/java:835115,884634-884635,884838,885765,887948,887950-887952,887994,888246,888248,888250,888345,888348,889645,891323-891332,892228,896674,896692
+/qpid/trunk/qpid/java:835115,884634-884635,884838,885765,887948,887950-887952,887994,888246,888248,888250,888345,888348,889645,891323-891332,892228,896674,896692-896693
Propchange: qpid/branches/0.5.x-dev/qpid/java/broker/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 6 22:37:15 2010
@@ -1,3 +1,3 @@
/qpid/branches/java-broker-0-10/qpid/java/broker:829414,829575
/qpid/branches/jmx_mc_gsoc09/qpid/java/broker:787599
-/qpid/trunk/qpid/java/broker:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,889645,896674,896692
+/qpid/trunk/qpid/java/broker:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,889645,896674,896692-896693
Propchange:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 6 22:37:15 2010
@@ -1,4 +1,4 @@
/qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/management:757268
/qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/management:829414,829575
/qpid/branches/jmx_mc_gsoc09/qpid/java/broker/src/main/java/org/apache/qpid/server/management:787599
-/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management:753219-753220,753253,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674,896692
+/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management:753219-753220,753253,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674,896692-896693
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java?rev=896701&r1=896700&r2=896701&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
Wed Jan 6 22:37:15 2010
@@ -38,7 +38,6 @@
import javax.management.JMException;
import javax.management.NotificationListener;
import javax.management.Notification;
-import javax.management.OperationsException;
import javax.security.auth.Subject;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
@@ -140,8 +139,6 @@
Principal principal = principals.iterator().next();
String identity = principal.getName();
-
- checkCompatibility(proxy, method, args);
if (isAdminMethod(args))
{
@@ -171,49 +168,6 @@
throw new SecurityException("Access denied");
}
- private void checkCompatibility(final Object proxy, final Method method,
final Object[] args) throws Throwable
- {
- if (args[0] instanceof ObjectName && method.getName().equals("invoke"))
- {
- //get the ObjectName and invoked Method name
- final ObjectName objectName = (ObjectName) args[0];
-
- final String mbeanMethod = (args.length > 1) ? (String) args[1] :
null;
- if (mbeanMethod == null)
- {
- return;
- }
-
- //UserManagement MBean compatibility checks
- if(objectName.getKeyProperty("type").equals(UserManagement.TYPE))
- {
- if (mbeanMethod.equals("createUser") ||
mbeanMethod.equals("setPassword"))
- {
- //get the provided argument values and types for the method
- if( args.length > 2 && args[2] != null && args[2]
instanceof Object[] &&
- args.length > 3 && args[3] != null && args[3]
instanceof String[])
- {
- //check the 2nd argument value is a char[]
- final Object[] argValues = (Object[]) args[2];
- final String[] argTypes = (String[]) args[3];
-
- final Object actualValue = (argValues.length > 1) ?
argValues[1] : null;
- final String expectedType = (argTypes.length > 1) ?
(String) argTypes[1] : null;
-
- if (expectedType != null && expectedType.equals("[C"))
- {
- if (actualValue != null && actualValue instanceof
String)
- {
- throw new OperationsException("Incorrect
parameter type provided.\n" +
- "Please upgrade to a newer management console
release to correct this issue.");
- }
- }
- }
- }
- }
- }
- }
-
private boolean isAdminMethod(Object[] args)
{
if (args[0] instanceof ObjectName)
Modified:
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java?rev=896701&r1=896700&r2=896701&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
Wed Jan 6 22:37:15 2010
@@ -108,6 +108,11 @@
return UserManagement.TYPE;
}
+ public boolean setPassword(String username, String password)
+ {
+ return setPassword(username, password.toCharArray());
+ }
+
public boolean setPassword(String username, char[] password)
{
try
@@ -196,6 +201,11 @@
return true;
}
+
+ public boolean createUser(String username, String password, boolean read,
boolean write, boolean admin)
+ {
+ return createUser(username, password.toCharArray(), read, write,
admin);
+ }
public boolean createUser(String username, char[] password, boolean read,
boolean write, boolean admin)
{
Modified:
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java?rev=896701&r1=896700&r2=896701&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
Wed Jan 6 22:37:15 2010
@@ -42,7 +42,7 @@
* Qpid JMX API 1.1 can be assumed.
*/
int QPID_JMX_API_MAJOR_VERSION = 1;
- int QPID_JMX_API_MINOR_VERSION = 6;
+ int QPID_JMX_API_MINOR_VERSION = 7;
/**
Modified:
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java?rev=896701&r1=896700&r2=896701&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
Wed Jan 6 22:37:15 2010
@@ -45,18 +45,37 @@
* set password for user.
*
* Since Qpid JMX API 1.2 this operation expects plain text passwords to
be provided. Prior to this, MD5 hashed passwords were supplied.
+ *
+ * @deprecated since Qpid JMX API 1.7
*
* @param username The username to create
* @param password The password for the user
*
* @return The result of the operation
*/
+ @Deprecated
@MBeanOperation(name = "setPassword", description = "Set password for
user.",
impact = MBeanOperationInfo.ACTION)
boolean setPassword(@MBeanOperationParameter(name = "username",
description = "Username")String username,
+ //NOTE: parameter name was changed to 'passwd' in Qpid
JMX API 1.7 to protect against older, incompatible management clients
@MBeanOperationParameter(name = "passwd", description
= "Password")char[] password);
/**
+ * Set password for a given user.
+ *
+ * @since Qpid JMX API 1.7
+ *
+ * @param username The username to create
+ * @param password The password for the user
+ *
+ * @return The result of the operation
+ */
+ @MBeanOperation(name = "setPassword", description = "Set password for
user.",
+ impact = MBeanOperationInfo.ACTION)
+ boolean setPassword(@MBeanOperationParameter(name = "username",
description = "Username")String username,
+ @MBeanOperationParameter(name = "password",
description = "Password")String password);
+
+ /**
* set rights for users with given details
*
* @param username The username to create
@@ -78,6 +97,8 @@
*
* Since Qpid JMX API 1.2 this operation expects plain text passwords to
be provided. Prior to this, MD5 hashed passwords were supplied.
*
+ * @deprecated since Qpid JMX API 1.7
+ *
* @param username The username to create
* @param password The password for the user
* @param read The set of permission to give the new user
@@ -86,15 +107,38 @@
*
* @return The result of the operation
*/
+ @Deprecated
@MBeanOperation(name = "createUser", description = "Create new user from
system.",
impact = MBeanOperationInfo.ACTION)
boolean createUser(@MBeanOperationParameter(name = "username", description
= "Username")String username,
+ //NOTE: parameter name was changed to 'passwd' in Qpid
JMX API 1.7 to protect against older, incompatible management clients
@MBeanOperationParameter(name = "passwd", description =
"Password")char[] password,
@MBeanOperationParameter(name = "read", description =
"Administration read")boolean read,
@MBeanOperationParameter(name = "readAndWrite",
description = "Administration write")boolean write,
@MBeanOperationParameter(name = "admin", description =
"Administration rights")boolean admin);
/**
+ * Create users with given details.
+ *
+ * @since Qpid JMX API 1.7
+ *
+ * @param username The username to create
+ * @param password The password for the user
+ * @param read The set of permission to give the new user
+ * @param write The set of permission to give the new user
+ * @param admin The set of permission to give the new user
+ *
+ * @return The result of the operation
+ */
+ @MBeanOperation(name = "createUser", description = "Create a new user.",
+ impact = MBeanOperationInfo.ACTION)
+ boolean createUser(@MBeanOperationParameter(name = "username", description
= "Username")String username,
+ @MBeanOperationParameter(name = "password", description
= "Password")String password,
+ @MBeanOperationParameter(name = "read", description =
"Administration read")boolean read,
+ @MBeanOperationParameter(name = "readAndWrite",
description = "Administration write")boolean write,
+ @MBeanOperationParameter(name = "admin", description =
"Administration rights")boolean admin);
+
+ /**
* View users returns all the users that are currently available to the
system.
*
* @param username The user to delete
Propchange:
qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 6 22:37:15 2010
@@ -1,3 +1,3 @@
/qpid/branches/java-broker-0-10/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:829414,829575
/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/UserManagement.java:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790
-/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674,896692
+/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674,896692-896693
Propchange: qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 6 22:37:15 2010
@@ -1,3 +1,3 @@
/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src:829414,829575
/qpid/branches/jmx_mc_gsoc09/qpid/java/management/eclipse-plugin/src:788755
-/qpid/trunk/qpid/java/management/eclipse-plugin/src:835115,884634-884635,884838,885765,887952,888246,888248,888250,888348
+/qpid/trunk/qpid/java/management/eclipse-plugin/src:835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896693
Modified:
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java?rev=896701&r1=896700&r2=896701&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ApplicationRegistry.java
Wed Jan 6 22:37:15 2010
@@ -47,7 +47,7 @@
//max supported broker management interface supported by this release of
the management console
public static final int SUPPORTED_QPID_JMX_API_MAJOR_VERSION = 1;
- public static final int SUPPORTED_QPID_JMX_API_MINOR_VERSION = 6;
+ public static final int SUPPORTED_QPID_JMX_API_MINOR_VERSION = 7;
public static final String DATA_DIR = System.getProperty("user.home") +
File.separator + ".qpidmc";
Modified:
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/users/UserManagementTabControl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/users/UserManagementTabControl.java?rev=896701&r1=896700&r2=896701&view=diff
==============================================================================
---
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/users/UserManagementTabControl.java
(original)
+++
qpid/branches/0.5.x-dev/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/users/UserManagementTabControl.java
Wed Jan 6 22:37:15 2010
@@ -792,7 +792,17 @@
shell.dispose();
try
{
- boolean result = _ummb.createUser(username, passwordChars,
read, write, admin);
+ boolean result = false;
+ // If we have Qpid JMX API 1.7 or above, use newer
createUser method with String based password.
+ if (_ApiVersion.greaterThanOrEqualTo(1,7))
+ {
+ result = _ummb.createUser(username, password, read,
write, admin);
+ }
+ else
+ {
+ result = _ummb.createUser(username, passwordChars,
read, write, admin);
+ }
+
ViewUtility.operationResultFeedback(result, "Created
user", "Failed to create user");
}
catch(Exception e5)
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]