From cde2cc7a60099969dfbcaa6f331a1472ea47f21d Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Wed, 17 Dec 2008 10:16:56 +0000 Subject: QPID-1471 : Reverted r727071 git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@727334 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, 52 insertions(+), 78 deletions(-) (limited to 'java/management/eclipse-plugin/src') 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 5f927be4e4..d6f895b64a 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,7 +32,6 @@ 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 ae01f30f32..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,17 +20,13 @@ */ package org.apache.qpid.management.ui; -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 static org.apache.qpid.management.ui.Constants.*; import java.util.HashMap; /** * Class representing a managed bean on the managed server + * @author Bhupendra Bhardwaj + * */ public abstract class ManagedBean extends ManagedObject { @@ -40,50 +36,27 @@ 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; @@ -93,75 +66,65 @@ 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 b3cad7282d..6426a91e59 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,8 +25,6 @@ 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; @@ -607,33 +605,26 @@ public class OperationTabControl extends TabControl return; } - //Custom handling for the PASSWORD field - if (param.getName().equalsIgnoreCase(PASSWORD)) + // 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())) { - //Convert the String value to a character array if that is what is required. - if (param.getType().equals("[C")) + try + { + param.setValue(ViewUtility.getMD5HashedCharArray(param.getValue())); + } + catch (Exception ex) { - // 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()); - } + MBeanUtility.handleException(_mbean, ex); + return; } } // 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 c2045835f4..3245f394b5 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,6 +538,27 @@ 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