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]

Reply via email to