Author: bhupendrab
Date: Tue Apr 24 08:49:03 2007
New Revision: 531989

URL: http://svn.apache.org/viewvc?view=rev&rev=531989
Log:
Added connection exception handling and refactored the action classes

Removed:
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ICommandIds.java
Modified:
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/CloseConnection.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/EditAttribute.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/RemoveServer.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
    
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AbstractAction.java
 Tue Apr 24 08:49:03 2007
@@ -26,15 +26,24 @@
 import org.apache.qpid.management.ui.ApplicationWorkbenchAdvisor;
 import org.apache.qpid.management.ui.Constants;
 import org.apache.qpid.management.ui.jmx.MBeanUtility;
+import org.apache.qpid.management.ui.views.NavigationView;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 
 public class AbstractAction
 {
+    private NavigationView _navigationView;
+    
     protected IWorkbenchWindow _window;
+    
+    public static final String RMI_SASL_ERROR = "non-JRMP server";
+    public static final String SECURITY_FAILURE = "User authentication has 
failed";   
+    public static final String SERVER_UNAVAILABLE = "Qpid server is not 
running";
    
     /**
      * We will cache window object in order to
@@ -48,8 +57,19 @@
         {
             
_window.getShell().setImage(ApplicationRegistry.getImage(Constants.CONSOLE_IMAGE));
         }
+    }   
+
+    protected NavigationView getNavigationView()
+    {
+        if (_navigationView == null)
+        {
+            _navigationView = 
(NavigationView)_window.getActivePage().findView(NavigationView.ID);
+        }
+        
+        return _navigationView;
     }
     
+    
     protected void handleException(Throwable ex, String title, String msg)
     {
         MBeanUtility.printStackTrace(ex);
@@ -74,5 +94,22 @@
         IStatus status = new Status(IStatus.ERROR, 
ApplicationWorkbenchAdvisor.PERSPECTIVE_ID,
                                     IStatus.OK, msg, null); 
         ErrorDialog.openError(_window.getShell(), "Error", title, status);
+    }
+    
+
+    /**
+     * Selection in the workbench has been changed. We can change the state of 
the 'real' action here
+     * if we want, but this can only happen after  the delegate has been 
created.
+     * @see IWorkbenchWindowActionDelegate#selectionChanged
+     */
+    public void selectionChanged(IAction action, ISelection selection) {
+    }
+
+    /**
+     * We can use this method to dispose of any system resources we previously 
allocated.
+     * @see IWorkbenchWindowActionDelegate#dispose
+     */
+    public void dispose() {
+        
     }
 }

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
 Tue Apr 24 08:49:03 2007
@@ -22,13 +22,13 @@
 
 import static org.apache.qpid.management.ui.Constants.*;
 
+import java.io.IOException;
+
 import org.apache.qpid.management.ui.ApplicationRegistry;
 import org.apache.qpid.management.ui.exceptions.InfoRequiredException;
-import org.apache.qpid.management.ui.views.NavigationView;
 import org.apache.qpid.management.ui.views.NumberVerifyListener;
 import org.apache.qpid.management.ui.views.ViewUtility;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -47,7 +47,6 @@
 {
     private static final String[] _domains ={"org.apache.qpid"};
     
-    private NavigationView _navigationView;
     private String _transport = DEFAULT_PROTOCOL;
     private String _host;
     private String _port;
@@ -62,19 +61,6 @@
         
     }
     
-    /*
-       public AddServer(IWorkbenchWindow window)//, String label)
-       {
-               _window = window;
-        //setText(label);
-        // The id is used to refer to the action in a menu or toolbar
-               setId(ICommandIds.CMD_ADD_SERVER);
-        // Associate the action with a pre-defined command, to allow key 
bindings.
-               setActionDefinitionId(ICommandIds.CMD_ADD_SERVER);
-               
//setImageDescriptor(org.apache.qpid.management.ui.Activator.getImageDescriptor("/icons/add.gif"));
-       }
-       */
-    
     public void run(IAction action)
     {
         if(_window != null)
@@ -92,6 +78,17 @@
             {
                 ViewUtility.popupInfoMessage(ACTION_ADDSERVER, 
ex.getMessage());
             }
+            catch (IOException ex)
+            {
+                if ((ex.getMessage() != null) && 
(ex.getMessage().indexOf(RMI_SASL_ERROR) != -1))
+                {
+                    handleException(ex, null, SECURITY_FAILURE);
+                }
+                else
+                {
+                    handleException(ex, null, SERVER_UNAVAILABLE);
+                }
+            }
             catch (Exception ex)
             {
                 handleException(ex, null, null);
@@ -108,45 +105,6 @@
         _user = null;
         _password = null;
     }
-    
-    /**
-     * Selection in the workbench has been changed. We 
-     * can change the state of the 'real' action here
-     * if we want, but this can only happen after 
-     * the delegate has been created.
-     * @see IWorkbenchWindowActionDelegate#selectionChanged
-     */
-    public void selectionChanged(IAction action, ISelection selection) {
-    }
-
-    /**
-     * We can use this method to dispose of any system
-     * resources we previously allocated.
-     * @see IWorkbenchWindowActionDelegate#dispose
-     */
-    public void dispose() {
-        
-    }
-    
-    private NavigationView getNavigationView()
-    {
-        if (_navigationView == null)
-        {
-            _navigationView = 
(NavigationView)_window.getActivePage().findView(NavigationView.ID);
-        }
-        
-        return _navigationView;
-    }
-    
-    /*
-       public void run()
-    {
-               if(_window != null)
-        {      
-            createWidgets();
-               }
-       }
-    */
     
     /**
      * Creates the shell and then opens the popup where user can enter new 
connection details.

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/CloseConnection.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/CloseConnection.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/CloseConnection.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/CloseConnection.java
 Tue Apr 24 08:49:03 2007
@@ -25,7 +25,6 @@
 import org.apache.qpid.management.ui.views.NavigationView;
 import org.apache.qpid.management.ui.views.ViewUtility;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 
 public class CloseConnection extends AbstractAction implements 
IWorkbenchWindowActionDelegate
@@ -53,24 +52,5 @@
                 handleException(ex, null, null);
             }
         }
-    }
-    
-    /**
-     * Selection in the workbench has been changed. We 
-     * can change the state of the 'real' action here
-     * if we want, but this can only happen after 
-     * the delegate has been created.
-     * @see IWorkbenchWindowActionDelegate#selectionChanged
-     */
-    public void selectionChanged(IAction action, ISelection selection) {
-    }
-
-    /**
-     * We can use this method to dispose of any system
-     * resources we previously allocated.
-     * @see IWorkbenchWindowActionDelegate#dispose
-     */
-    public void dispose() {
-        
-    }    
+    }   
 }

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/EditAttribute.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/EditAttribute.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/EditAttribute.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/EditAttribute.java
 Tue Apr 24 08:49:03 2007
@@ -25,7 +25,6 @@
 import org.apache.qpid.management.ui.views.MBeanView;
 import org.apache.qpid.management.ui.views.ViewUtility;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 
 public class EditAttribute extends AbstractAction implements 
IWorkbenchWindowActionDelegate
@@ -48,24 +47,5 @@
                 handleException(ex, "Attribute could not be edited", null);
             }
         }
-    }
-    
-    /**
-     * Selection in the workbench has been changed. We 
-     * can change the state of the 'real' action here
-     * if we want, but this can only happen after 
-     * the delegate has been created.
-     * @see IWorkbenchWindowActionDelegate#selectionChanged
-     */
-    public void selectionChanged(IAction action, ISelection selection) {
-    }
-
-    /**
-     * We can use this method to dispose of any system
-     * resources we previously allocated.
-     * @see IWorkbenchWindowActionDelegate#dispose
-     */
-    public void dispose() {
-        
     }
 }

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
 Tue Apr 24 08:49:03 2007
@@ -27,14 +27,14 @@
 import static org.apache.qpid.management.ui.Constants.PASSWORD;
 import static org.apache.qpid.management.ui.Constants.USERNAME;
 
+import java.io.IOException;
+
 import org.apache.qpid.management.ui.ApplicationRegistry;
 import org.apache.qpid.management.ui.Constants;
 import org.apache.qpid.management.ui.exceptions.InfoRequiredException;
-import org.apache.qpid.management.ui.views.NavigationView;
 import org.apache.qpid.management.ui.views.TreeObject;
 import org.apache.qpid.management.ui.views.ViewUtility;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -50,45 +50,12 @@
 
 public class ReconnectServer extends AbstractAction implements 
IWorkbenchWindowActionDelegate
 {
-    private NavigationView _navigationView;
     private String _title;
     private String _serverName;
     private String _user;
     private String _password;
     private boolean _connect;
     
-    /**
-     * Selection in the workbench has been changed. We 
-     * can change the state of the 'real' action here
-     * if we want, but this can only happen after 
-     * the delegate has been created.
-     * @see IWorkbenchWindowActionDelegate#selectionChanged
-     */
-    public void selectionChanged(IAction action, ISelection selection)
-    {
-        
-    }
-
-    /**
-     * We can use this method to dispose of any system
-     * resources we previously allocated.
-     * @see IWorkbenchWindowActionDelegate#dispose
-     */
-    public void dispose()
-    {
-        
-    }
-    
-    private NavigationView getNavigationView()
-    {
-        if (_navigationView == null)
-        {
-            _navigationView = 
(NavigationView)_window.getActivePage().findView(NavigationView.ID);
-        }
-        
-        return _navigationView;
-    }
-    
     public void run(IAction action)
     {
         if(_window != null)
@@ -113,6 +80,17 @@
             catch(InfoRequiredException ex)
             {
                 ViewUtility.popupInfoMessage("Reconnect Qpid server", 
ex.getMessage());
+            }
+            catch (IOException ex)
+            {
+                if ((ex.getMessage() != null) && 
(ex.getMessage().indexOf(RMI_SASL_ERROR) != -1))
+                {
+                    handleException(ex, null, SECURITY_FAILURE);
+                }
+                else
+                {
+                    handleException(ex, null, SERVER_UNAVAILABLE);
+                }
             }
             catch (Exception ex)
             {

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java
 Tue Apr 24 08:49:03 2007
@@ -24,7 +24,6 @@
 import org.apache.qpid.management.ui.views.MBeanView;
 import org.apache.qpid.management.ui.views.NavigationView;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 
 /**
@@ -32,29 +31,7 @@
  * @author Bhupendra Bhardwaj
  */
 public class Refresh extends AbstractAction implements 
IWorkbenchWindowActionDelegate
-{
-    /**
-     * Selection in the workbench has been changed. We 
-     * can change the state of the 'real' action here
-     * if we want, but this can only happen after 
-     * the delegate has been created.
-     * @see IWorkbenchWindowActionDelegate#selectionChanged
-     */
-    public void selectionChanged(IAction action, ISelection selection)
-    {
-        
-    }
-
-    /**
-     * We can use this method to dispose of any system
-     * resources we previously allocated.
-     * @see IWorkbenchWindowActionDelegate#dispose
-     */
-    public void dispose()
-    {
-        
-    }
-    
+{    
     public void run(IAction action)
     {
         if(_window != null)

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/RemoveServer.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/RemoveServer.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/RemoveServer.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/RemoveServer.java
 Tue Apr 24 08:49:03 2007
@@ -24,33 +24,10 @@
 import org.apache.qpid.management.ui.views.NavigationView;
 import org.apache.qpid.management.ui.views.ViewUtility;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 
 public class RemoveServer extends AbstractAction implements 
IWorkbenchWindowActionDelegate
-{    
-    /**
-     * Selection in the workbench has been changed. We 
-     * can change the state of the 'real' action here
-     * if we want, but this can only happen after 
-     * the delegate has been created.
-     * @see IWorkbenchWindowActionDelegate#selectionChanged
-     */
-    public void selectionChanged(IAction action, ISelection selection)
-    {
-        
-    }
-
-    /**
-     * We can use this method to dispose of any system
-     * resources we previously allocated.
-     * @see IWorkbenchWindowActionDelegate#dispose
-     */
-    public void dispose()
-    {
-        
-    }
-    
+{       
     public void run(IAction action)
     {
         if(_window != null)

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
 Tue Apr 24 08:49:03 2007
@@ -39,6 +39,7 @@
 import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
 import javax.management.remote.JMXServiceURL;
+import javax.security.auth.callback.CallbackHandler;
 import javax.security.sasl.SaslClientFactory;
 
 import org.apache.qpid.management.ui.ApplicationRegistry;
@@ -58,6 +59,8 @@
 public class JMXServerRegistry extends ServerRegistry
 {
     private ObjectName _serverObjectName = null;
+    private Map<String, Object> _env = null;
+    private JMXServiceURL _jmxUrl = null;
     private JMXConnector _jmxc = null;
     private MBeanServerConnection _mbsc = null;
     
@@ -92,59 +95,27 @@
     public JMXServerRegistry(ManagedServer server) throws Exception
     {
         super(server);
-        JMXServiceURL jmxUrl = new JMXServiceURL(server.getUrl());
-        Map<String, Object> env = null;
         String securityMechanism = ApplicationRegistry.getSecurityMechanism();
+        boolean saslPluginAvailable = false;
        
         if (securityMechanism != null)
-        {    
-            // Check if the JMXMP connector is available
-            Class klass = 
Class.forName("javax.management.remote.jmxmp.JMXMPConnector");
-
-            jmxUrl = new JMXServiceURL("jmxmp", server.getHost(), 
server.getPort());
-            env = new HashMap<String, Object>();
-
-            if (MECH_CRAMMD5.equals(securityMechanism))
+        { 
+            try
             {
-                // For SASL/CRAM-MD5
-                Map<String, Class<? extends SaslClientFactory>> map = new 
HashMap<String, Class<? extends SaslClientFactory>>();
-                Class<?> clazz = 
Class.forName("org.apache.qpid.management.ui.sasl.CRAMMD5HashedSaslClientFactory");
-                map.put("CRAM-MD5-HASHED", (Class<? extends 
SaslClientFactory>) clazz);
-
-                Security.addProvider(new JCAProvider(map));
-                env.put("jmx.remote.profiles", SASL_CRAMMD5); 
-                env.put("jmx.remote.sasl.callback.handler",
-                        new 
UsernameHashedPasswordCallbackHandler(server.getUser(), server.getPassword()));
+                createSASLConnector(securityMechanism);
+                saslPluginAvailable = true;
             }
-            else if (MECH_PLAIN.equals(securityMechanism))
+            catch (Exception ex)
             {
-                // For SASL/PLAIN
-                Security.addProvider(new SaslProvider());
-                env.put("jmx.remote.profiles", SASL_PLAIN);
-                env.put("jmx.remote.sasl.callback.handler",
-                        new UserPasswordCallbackHandler(server.getUser(), 
server.getPassword())); 
+                ex.printStackTrace();
+                saslPluginAvailable = false;
             }
-            else
-            {
-                String text = "Security mechanism " + securityMechanism + " is 
not supported.";
-                MBeanUtility.printOutput(text);
-                throw new Exception(text);
-            }
-            // Now create the instance of JMXMPConnector                       
                        
-            Class[] paramTypes = {JMXServiceURL.class, Map.class};             
              
-            Constructor cons = klass.getConstructor(paramTypes);
-
-            Object[] args = {jmxUrl, env};           
-            Object theObject = cons.newInstance(args);
-
-            _jmxc = (JMXConnector)theObject;
-            _jmxc.connect();
-            MBeanUtility.printOutput("Starting JMXConnector with SASL. 
Server=" + server.getName());
         }
-        else
+        
+        if (!saslPluginAvailable)
         {
-            jmxUrl = new JMXServiceURL(server.getUrl());
-            _jmxc = JMXConnectorFactory.connect(jmxUrl, null);
+            _jmxUrl = new JMXServiceURL(server.getUrl());
+            _jmxc = JMXConnectorFactory.connect(_jmxUrl, null);
         }
         
         _mbsc = _jmxc.getMBeanServerConnection();
@@ -160,6 +131,53 @@
     public MBeanServerConnection getServerConnection()
     {
         return _mbsc;
+    }
+    
+    private void createSASLConnector(String mech) throws Exception
+    {
+        String text = "Security mechanism " + mech + " is not supported.";
+        // Check if the JMXMP connector is available
+        Class klass = 
Class.forName("javax.management.remote.jmxmp.JMXMPConnector");
+
+        _jmxUrl = new JMXServiceURL("jmxmp", getManagedServer().getHost(), 
getManagedServer().getPort());
+        _env = new HashMap<String, Object>();
+        CallbackHandler handler;
+        if (MECH_CRAMMD5.equals(mech))
+        {
+            // For SASL/CRAM-MD5
+            Map<String, Class<? extends SaslClientFactory>> map = new 
HashMap<String, Class<? extends SaslClientFactory>>();
+            Class<?> clazz = 
Class.forName("org.apache.qpid.management.ui.sasl.CRAMMD5HashedSaslClientFactory");
+            map.put("CRAM-MD5-HASHED", (Class<? extends SaslClientFactory>) 
clazz);
+
+            Security.addProvider(new JCAProvider(map));
+            handler = new 
UsernameHashedPasswordCallbackHandler(getManagedServer().getUser(),
+                                                                
getManagedServer().getPassword());
+            _env.put("jmx.remote.profiles", SASL_CRAMMD5); 
+            _env.put("jmx.remote.sasl.callback.handler", handler);
+                    
+        }
+        else if (MECH_PLAIN.equals(mech))
+        {
+            // For SASL/PLAIN
+            Security.addProvider(new SaslProvider());
+            handler = new 
UserPasswordCallbackHandler(getManagedServer().getUser(), 
getManagedServer().getPassword());
+            _env.put("jmx.remote.profiles", SASL_PLAIN);
+            _env.put("jmx.remote.sasl.callback.handler", handler); 
+        }
+        else
+        {
+            MBeanUtility.printOutput(text);
+            throw new Exception(text);
+        }
+        // Now create the instance of JMXMPConnector                           
                    
+        Class[] paramTypes = {JMXServiceURL.class, Map.class};                 
          
+        Constructor cons = klass.getConstructor(paramTypes);
+
+        Object[] args = {_jmxUrl, _env};           
+        Object theObject = cons.newInstance(args);
+
+        _jmxc = (JMXConnector)theObject;
+        _jmxc.connect();
     }
     
     /**

Modified: 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java?view=diff&rev=531989&r1=531988&r2=531989
==============================================================================
--- 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
 (original)
+++ 
incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
 Tue Apr 24 08:49:03 2007
@@ -208,20 +208,9 @@
      */
     private void createRMIServerConnection(ManagedServer server) throws 
Exception
     {
-        try
-        {
-            // Currently Qpid Management Console only supports JMX MBeanServer
-            ServerRegistry serverRegistry = new JMXServerRegistry(server);
-            ApplicationRegistry.addServer(server, serverRegistry);
-        }
-        catch (IOException ex)
-        {
-            if (ex.getCause() == null)
-            {
-                throw ex;
-            }
-            throw (Exception)ex.getCause();
-        }
+        // Currently Qpid Management Console only supports JMX MBeanServer
+        ServerRegistry serverRegistry = new JMXServerRegistry(server);
+        ApplicationRegistry.addServer(server, serverRegistry);
     }
 
     /**


Reply via email to