summaryrefslogtreecommitdiff
path: root/java/broker
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2010-01-06 22:04:43 +0000
committerRobert Gemmell <robbie@apache.org>2010-01-06 22:04:43 +0000
commit7df8c36dcbee682d7ad22d3e8088fbc2015e0df6 (patch)
tree2f3697aae3ce02fe044af392f53b84a407ca059a /java/broker
parent23a64e9e8dab5829da0b1bfa9a501124f95667b9 (diff)
downloadqpid-python-7df8c36dcbee682d7ad22d3e8088fbc2015e0df6.tar.gz
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.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@896693 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java46
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java10
2 files changed, 10 insertions, 46 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java b/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
index 74ca0399a1..0ee5763d91 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
@@ -38,7 +38,6 @@ import javax.management.MBeanOperationInfo;
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 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler, Notificati
Principal principal = principals.iterator().next();
String identity = principal.getName();
-
- checkCompatibility(proxy, method, args);
if (isAdminMethod(args))
{
@@ -171,49 +168,6 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler, Notificati
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)
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java b/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
index 45ab57ca90..5a2965cb32 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
@@ -108,6 +108,11 @@ public class AMQUserManagementMBean extends AMQManagedObject implements UserMana
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 @@ public class AMQUserManagementMBean extends AMQManagedObject implements UserMana
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)
{