From 95a9bc4a321e5a98aefb0d86189109bb7e54a4e2 Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Tue, 16 Dec 2008 15:52:01 +0000 Subject: QPID-1471 : Enabled the MC to understand the new MBean versions. OperationsTabControl now uses this version to send git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@727071 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/management/ui/Constants.java | 1 + .../org/apache/qpid/management/ui/ManagedBean.java | 63 +++++++++++++++++----- .../management/ui/views/OperationTabControl.java | 45 +++++++++------- .../qpid/management/ui/views/ViewUtility.java | 21 -------- 4 files changed, 78 insertions(+), 52 deletions(-) (limited to 'java/management/eclipse-plugin') 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 d6f895b64a..5f927be4e4 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 @@ -32,6 +32,7 @@ public class Constants public final static String ACTION_REMOVE_MBEANNODE = "Remove from list"; public final static String VALUE = "value"; public final static String TYPE = "type"; + public final static String VERSION = "version"; public final static String NODE_TYPE_SERVER = "server"; public final static String NODE_TYPE_DOMAIN = "domain"; public final static String NODE_TYPE_MBEANTYPE = "mbeantype"; 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 31825e925d..ae01f30f32 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,13 +20,17 @@ */ package org.apache.qpid.management.ui; -import static org.apache.qpid.management.ui.Constants.*; +import static org.apache.qpid.management.ui.Constants.ADMIN_MBEAN_TYPE; +import static org.apache.qpid.management.ui.Constants.CONNECTION; +import static org.apache.qpid.management.ui.Constants.DEFAULT_VH; +import static org.apache.qpid.management.ui.Constants.EXCHANGE; +import static org.apache.qpid.management.ui.Constants.QUEUE; +import static org.apache.qpid.management.ui.Constants.VIRTUAL_HOST; + import java.util.HashMap; /** * Class representing a managed bean on the managed server - * @author Bhupendra Bhardwaj - * */ public abstract class ManagedBean extends ManagedObject { @@ -36,27 +40,50 @@ public abstract class ManagedBean extends ManagedObject private String _virtualHostName = null; private ManagedServer _server = null; private HashMap _properties = null; - + private int _version; + public String getProperty(String key) { - return (String)_properties.get(key); + return (String) _properties.get(key); } - + public HashMap getProperties() { return _properties; } + public void setProperties(HashMap properties) { this._properties = properties; setName(getProperty("name")); setType(getProperty("type")); + setVersion(getProperty("version")); _virtualHostName = getProperty(VIRTUAL_HOST); } + + public void setVersion(String version) + { + try + { + _version = Integer.parseInt(version); + } + catch (NumberFormatException nfe) + { + _version = 1; + } + + } + + public int getVersion() + { + return _version; + } + public String getDomain() { return _domain; } + public void setDomain(String domain) { this._domain = domain; @@ -66,65 +93,75 @@ public abstract class ManagedBean extends ManagedObject { return _server; } + public void setServer(ManagedServer server) { this._server = server; } + public String getType() { return _type; } + public void setType(String type) { this._type = type; } + public String getUniqueName() { return _uniqueName; } + public void setUniqueName(String uniqueName) { this._uniqueName = uniqueName; } - + public String getVirtualHostName() { // To make it work with the broker with no virtual host implementation return _virtualHostName == null ? DEFAULT_VH : _virtualHostName; } - + /** * Returns mbean instance name. MBeans which have only one instance, the type attribute will be returned + * * @return */ public String getInstanceName() { if (getName() != null) + { return getName(); + } else + { return getType(); + } } - + public boolean isQueue() { return _type.endsWith(QUEUE); } - + public boolean isConnection() { return _type.endsWith(CONNECTION); } - + public boolean isExchange() { 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/views/OperationTabControl.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java index 6426a91e59..b3cad7282d 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 @@ -25,6 +25,8 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import java.security.NoSuchAlgorithmException; +import java.io.UnsupportedEncodingException; import javax.management.openmbean.CompositeData; import javax.management.openmbean.TabularDataSupport; @@ -605,26 +607,33 @@ public class OperationTabControl extends TabControl return; } - // customized for passwords - String securityMechanism = ""; - ServerRegistry serverReg = ApplicationRegistry.getServerRegistry(_mbean); - - if (serverReg instanceof JMXServerRegistry) - { - JMXServerRegistry jmxServerReg = (JMXServerRegistry) ApplicationRegistry.getServerRegistry(_mbean); - securityMechanism = jmxServerReg.getSecurityMechanism(); - } - - if ((MECH_CRAMMD5.equals(securityMechanism)) && PASSWORD.equalsIgnoreCase(param.getName())) + //Custom handling for the PASSWORD field + if (param.getName().equalsIgnoreCase(PASSWORD)) { - try - { - param.setValue(ViewUtility.getMD5HashedCharArray(param.getValue())); - } - catch (Exception ex) + //Convert the String value to a character array if that is what is required. + if (param.getType().equals("[C")) { - MBeanUtility.handleException(_mbean, ex); - return; + // Retreive the mBean type and version. + // If we have a version 1 UserManagement class mbean then it expects the password + // to be sent as the hashed version. + if (_mbean.getType().equals("UserManagement") && _mbean.getVersion() == 1) + { + try + { + param.setValue(ViewUtility.getHash((String) param.getValue())); + } + catch (Exception hashException) + { + ViewUtility.popupErrorMessage(_form.getText(), + "Unable to calculate hash for Password:" + + hashException.getMessage()); + return; + } + } + else + { + param.setValue(((String) param.getValue()).toCharArray()); + } } } // end of customization 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 3245f394b5..c2045835f4 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 @@ -538,27 +538,6 @@ public class ViewUtility } } - public static char[] getMD5HashedCharArray(Object text) throws NoSuchAlgorithmException, UnsupportedEncodingException - { - byte[] data = ((String)text).getBytes("utf-8"); - - MessageDigest md = MessageDigest.getInstance("MD5"); - - for (byte b : data) - { - md.update(b); - } - - byte[] digest = md.digest(); - - char[] byteArray = new char[digest.length]; - int index = 0; - for (byte b : digest) - { - byteArray[index++] = (char)b; - } - return byteArray; - } public static char[] getHash(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { -- cgit v1.2.1