summaryrefslogtreecommitdiff
path: root/qpid/java/management/eclipse-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/management/eclipse-plugin')
-rw-r--r--qpid/java/management/eclipse-plugin/META-INF/MANIFEST.MF4
-rw-r--r--qpid/java/management/eclipse-plugin/build-release-linux-gtk-x86_64.properties36
-rw-r--r--qpid/java/management/eclipse-plugin/build-release-solaris-gtk-sparc.properties39
-rw-r--r--qpid/java/management/eclipse-plugin/build-release.xml14
-rw-r--r--qpid/java/management/eclipse-plugin/build.xml13
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java5
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java63
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedServer.java19
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java41
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java18
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientListener.java2
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientNotificationListener.java1
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java1
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java12
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java14
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java205
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java43
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/QueueTypeTabControl.java42
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java342
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86/Configuration/config.ini3
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/Configuration/config.ini49
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/libcairo-swt.sobin0 -> 335360 bytes
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmcbin0 -> 67927 bytes
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc.ini37
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/macosx/Configuration/config.ini3
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/qpid-management-common-plugin/MANIFEST.MF2
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Configuration/config.ini49
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.l.pm311
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.m.pm295
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.s.pm287
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.t.pm279
-rwxr-xr-xqpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmcbin0 -> 31668 bytes
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc.ini40
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/resources/win32-win32-x86/Configuration/config.ini3
34 files changed, 2038 insertions, 234 deletions
diff --git a/qpid/java/management/eclipse-plugin/META-INF/MANIFEST.MF b/qpid/java/management/eclipse-plugin/META-INF/MANIFEST.MF
index 32d1b7a1b2..9b5a240bb6 100644
--- a/qpid/java/management/eclipse-plugin/META-INF/MANIFEST.MF
+++ b/qpid/java/management/eclipse-plugin/META-INF/MANIFEST.MF
@@ -10,8 +10,8 @@ Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.ui.forms,
- jmxremote.sasl;resolution:=optional,
- qpid-management-common
+ qpid-management-common,
+ org.apache.commons.codec;bundle-version="1.3.0"
Eclipse-LazyStart: true
Export-Package: org.apache.qpid.management.ui,
org.apache.qpid.management.ui.actions,
diff --git a/qpid/java/management/eclipse-plugin/build-release-linux-gtk-x86_64.properties b/qpid/java/management/eclipse-plugin/build-release-linux-gtk-x86_64.properties
new file mode 100644
index 0000000000..f1c35c82e8
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/build-release-linux-gtk-x86_64.properties
@@ -0,0 +1,36 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+release.name=${module.namever}-linux-gtk-x86_64
+
+release.subdir=${module.release.base}/${release.name}
+
+release.tar.gz=${module.release.base}/${release.name}.tar.gz
+
+qpidmc.ini=src/main/resources/linux-gtk-x86_64/qpidmc.ini
+
+qpidmc.executable=src/main/resources/linux-gtk-x86_64/qpidmc
+
+qpidmc.companion.library=src/main/resources/linux-gtk-x86_64/libcairo-swt.so
+
+rcp.libs=${management-eclipse-plugin-linux-gtk-x86_64.libs}
+
+rcp.configuration.dir=src/main/resources/linux-gtk-x86_64/Configuration
diff --git a/qpid/java/management/eclipse-plugin/build-release-solaris-gtk-sparc.properties b/qpid/java/management/eclipse-plugin/build-release-solaris-gtk-sparc.properties
new file mode 100644
index 0000000000..7d5b613e06
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/build-release-solaris-gtk-sparc.properties
@@ -0,0 +1,39 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+release.name=${module.namever}-solaris-gtk-sparc
+
+release.subdir=${module.release.base}/${release.name}
+
+release.tar.gz=${module.release.base}/${release.name}.tar.gz
+
+qpidmc.ini=src/main/resources/solaris-gtk-sparc/qpidmc.ini
+
+qpidmc.solaris.xpm.files=src/main/resources/solaris-gtk-sparc/Qpidmc.l.pm \
+ src/main/resources/solaris-gtk-sparc/Qpidmc.m.pm \
+ src/main/resources/solaris-gtk-sparc/Qpidmc.s.pm \
+ src/main/resources/solaris-gtk-sparc/Qpidmc.t.pm
+
+qpidmc.executable=src/main/resources/solaris-gtk-sparc/qpidmc
+
+rcp.libs=${management-eclipse-plugin-solaris-gtk-sparc.libs}
+
+rcp.configuration.dir=src/main/resources/solaris-gtk-sparc/Configuration
diff --git a/qpid/java/management/eclipse-plugin/build-release.xml b/qpid/java/management/eclipse-plugin/build-release.xml
index b396974c9a..3cb1af194f 100644
--- a/qpid/java/management/eclipse-plugin/build-release.xml
+++ b/qpid/java/management/eclipse-plugin/build-release.xml
@@ -44,6 +44,9 @@
For linux libcairo-swt.so file:
qpidmc.companion.library
+
+ For solaris .xpm files:
+ qpidmc.solaris.xpm.files
-->
</condition>
@@ -86,15 +89,22 @@
<fileset file="${qpidmc.companion.library}"/>
</copy>
</target>
+
+ <target name="release-bin-executable-solaris-xpm-files" if="qpidmc.solaris.xpm.files">
+ <!-- Copy the solaris xpm files -->
+ <copy todir="${release.subdir}" flatten="true" failonerror="true">
+ <fileset dir="${basedir}" includes="${qpidmc.solaris.xpm.files}"/>
+ </copy>
+ </target>
<target name="release-bin-rcp-deps" description="copy eclipse-rcp dependencies into module release"
- depends="release-bin-executable-companion-library">
+ depends="release-bin-executable-companion-library, release-bin-executable-solaris-xpm-files">
<!-- Copy the rcp executable file -->
<copy todir="${release.subdir}" flatten="true" failonerror="true">
<fileset file="${qpidmc.executable}"/>
</copy>
- <chmod dir="${release.subdir}" perm="u+rx" includes="**/*"/>
+ <chmod dir="${release.subdir}" perm="u+rx" includes="qpidmc*"/>
<!-- Copy remaining startup & license files -->
<copy todir="${release.subdir}" flatten="true" failonerror="true">
diff --git a/qpid/java/management/eclipse-plugin/build.xml b/qpid/java/management/eclipse-plugin/build.xml
index 4dd279f721..8513c6487d 100644
--- a/qpid/java/management/eclipse-plugin/build.xml
+++ b/qpid/java/management/eclipse-plugin/build.xml
@@ -70,6 +70,19 @@
<property file="build-release-linux-gtk-x86.properties"/>
<property file="build-release-common.properties"/>
</ant>
+
+ <!-- linux gtk x86_64 -->
+ <ant antfile="build-release.xml">
+ <property file="build-release-linux-gtk-x86_64.properties"/>
+ <property file="build-release-common.properties"/>
+ </ant>
+
+ <!-- solaris gtk sparc -->
+ <ant antfile="build-release.xml">
+ <property file="build-release-solaris-gtk-sparc.properties"/>
+ <property file="build-release-common.properties"/>
+ </ant>
+
<!-- mac os x -->
<ant antfile="build-release-macosx.xml">
<property file="build-release-macosx.properties"/>
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
index 5e05375e28..5a6b3f8856 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
@@ -28,12 +28,13 @@ package org.apache.qpid.management.ui;
public class Constants
{
public final static String APPLICATION_NAME = "Qpid Management Console";
+ public static final String DEFAULT_DOMAIN = "org.apache.qpid";
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";
// currently used only for virtual host instances, but will work as general also
public final static String NODE_TYPE_TYPEINSTANCE = "mbeantype_instance";
@@ -80,8 +81,6 @@ public class Constants
public final static String[] EXCHANGE_TYPE_VALUES = {"direct", "fanout", "headers", "topic"};
public final static String[] BOOLEAN_TYPE_VALUES = {"false", "true"};
public final static String[] ATTRIBUTE_TABLE_TITLES = {"Attribute Name", "Value"};
- public static final String[] CONNECTION_PROTOCOLS ={"RMI"};
- public static final String DEFAULT_PROTOCOL = CONNECTION_PROTOCOLS[0];
public final static String ACTION_ADDSERVER = "New Connection";
public final static String ACTION_RECONNECT = "Reconnect";
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java
index 31825e925d..ae01f30f32 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedBean.java
+++ b/qpid/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/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedServer.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedServer.java
index 480fdb429a..9ca8787bb5 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedServer.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ManagedServer.java
@@ -20,20 +20,16 @@
*/
package org.apache.qpid.management.ui;
-import static org.apache.qpid.management.ui.Constants.DEFAULT_PROTOCOL;
/**
* Class representing a server being managed eg. MBeanServer
- * @author Bhupendra Bhardwaj
*/
public class ManagedServer extends ManagedObject
{
private String _host;
private int _port;
- private String _url;
private String _domain;
private String _user;
private String _password;
- private String _protocol = DEFAULT_PROTOCOL;
public ManagedServer(String host, int port, String domain)
{
@@ -46,7 +42,6 @@ public class ManagedServer extends ManagedObject
_host = host;
_port = port;
_domain = domain;
- _url = getRMIURL(host, port);
_user = user;
_password = password;
}
@@ -65,17 +60,7 @@ public class ManagedServer extends ManagedObject
{
return _port;
}
-
- public String getUrl()
- {
- return _url;
- }
- public String getProtocol()
- {
- return _protocol;
- }
-
public String getPassword()
{
return _password;
@@ -96,8 +81,4 @@ public class ManagedServer extends ManagedObject
_user = user;
}
- private String getRMIURL(String host, int port)
- {
- return "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
- }
}
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
index ce7d8816ba..e487c02a67 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/AddServer.java
@@ -35,7 +35,6 @@ import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
@@ -46,12 +45,9 @@ import org.eclipse.ui.IWorkbenchWindowActionDelegate;
public class AddServer extends AbstractAction implements IWorkbenchWindowActionDelegate
{
- private static final String[] _domains ={"org.apache.qpid"};
-
- private String _transport = DEFAULT_PROTOCOL;
private String _host;
private String _port;
- private String _domain;
+ private String _domain = DEFAULT_DOMAIN;
private String _user;
private String _password;
@@ -73,7 +69,7 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
{
if (_addServer)
{
- getNavigationView().addNewServer(_transport, _host, Integer.parseInt(_port), _domain, _user, _password);
+ getNavigationView().addNewServer(_host, Integer.parseInt(_port), _domain, _user, _password);
}
}
catch(InfoRequiredException ex)
@@ -91,7 +87,6 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
_addServer = false;
_host = null;
_port = null;
- _domain = null;
_user = null;
_password = null;
}
@@ -103,6 +98,8 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
*/
private void createAddServerPopup()
{
+ final Shell appShell = _window.getShell();
+
Display display = Display.getCurrent();
final Shell shell = new Shell(display, SWT.BORDER | SWT.CLOSE);
shell.setText(ACTION_ADDSERVER);
@@ -112,21 +109,23 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
createWidgets(shell);
shell.pack();
- //get current size dialog, and screen size
- int displayWidth = display.getBounds().width;
- int displayHeight = display.getBounds().height;
+ //get current size dialog, and application window size and location
+ int appWidth = appShell.getBounds().width;
+ int appHeight = appShell.getBounds().height;
+ int appLocX = appShell.getBounds().x;
+ int appLocY = appShell.getBounds().y;
int currentShellWidth = shell.getSize().x;
int currentShellHeight = shell.getSize().y;
//default sizes for the dialog
int minShellWidth = 425;
- int minShellHeight= 290;
+ int minShellHeight= 265;
//ensure this is large enough, increase it if its not
int newShellWidth = currentShellWidth > minShellWidth ? currentShellWidth : minShellWidth;
int newShellHeight = currentShellHeight > minShellHeight ? currentShellHeight : minShellHeight;
- //set the final size and centre the dialog
- shell.setBounds((displayWidth - newShellWidth)/2 , (displayHeight - newShellHeight)/2, newShellWidth, newShellHeight);
+ //set the final size and centre the dialog within the app window
+ shell.setBounds((appWidth - newShellWidth)/2 + appLocX, (appHeight - newShellHeight)/2 + appLocY, newShellWidth, newShellHeight);
shell.open();
_window.getShell().setEnabled(false);
@@ -189,17 +188,6 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
// Verify if the value entered is numeric
textPort.addVerifyListener(new NumberVerifyListener());
-
- Label domain = new Label(composite, SWT.NONE);
- domain.setText("Domain");
- domain.setLayoutData(new GridData(SWT.TRAIL, SWT.TOP, false, false));
-
- final Combo comboDomain = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
- comboDomain.setItems(_domains);
- comboDomain.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- comboDomain.select(0);
-
-
Label user = new Label(composite, SWT.NONE);
user.setText(USERNAME);
user.setLayoutData(new GridData(SWT.TRAIL, SWT.TOP, false, false));
@@ -228,7 +216,7 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
if (event.character == SWT.ESC)
{
//Escape key acts as cancel on all widgets
- shell.close();
+ shell.dispose();
}
}
});
@@ -283,7 +271,6 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
return;
}
- _domain = comboDomain.getText();
_addServer = true;
shell.dispose();
}
@@ -314,7 +301,7 @@ public class AddServer extends AbstractAction implements IWorkbenchWindowActionD
if (event.character == SWT.ESC)
{
//Escape key acts as cancel on all widgets
- shell.close();
+ shell.dispose();
}
}
});
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
index ce9d80d49b..5eb9d9a168 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/ReconnectServer.java
@@ -99,6 +99,8 @@ public class ReconnectServer extends AbstractAction implements IWorkbenchWindowA
// Create the login popup fot th user to enter usernaem and password
private void createLoginPopup()
{
+ final Shell appShell = _window.getShell();
+
Display display = Display.getCurrent();
final Shell shell = new Shell(display, SWT.BORDER | SWT.CLOSE);
shell.setText(_title);
@@ -108,9 +110,11 @@ public class ReconnectServer extends AbstractAction implements IWorkbenchWindowA
createWidgets(shell);
shell.pack();
- //get current size dialog, and screen size
- int displayWidth = display.getBounds().width;
- int displayHeight = display.getBounds().height;
+ //get current size dialog, and application window size and location
+ int appWidth = appShell.getBounds().width;
+ int appHeight = appShell.getBounds().height;
+ int appLocX = appShell.getBounds().x;
+ int appLocY = appShell.getBounds().y;
int currentShellWidth = shell.getSize().x;
int currentShellHeight = shell.getSize().y;
@@ -121,8 +125,8 @@ public class ReconnectServer extends AbstractAction implements IWorkbenchWindowA
int newShellWidth = currentShellWidth > minShellWidth ? currentShellWidth : minShellWidth;
int newShellHeight = currentShellHeight > minShellHeight ? currentShellHeight : minShellHeight;
- //set the final size and centre the dialog
- shell.setBounds((displayWidth - newShellWidth)/2 , (displayHeight - newShellHeight)/2, newShellWidth, newShellHeight);
+ //set the final size and centre the dialog within the app window
+ shell.setBounds((appWidth - newShellWidth)/2 + appLocX, (appHeight - newShellHeight)/2 + appLocY, newShellWidth, newShellHeight);
shell.open();
_window.getShell().setEnabled(false);
@@ -182,7 +186,7 @@ public class ReconnectServer extends AbstractAction implements IWorkbenchWindowA
if (event.character == SWT.ESC)
{
//Escape key acts as cancel on all widgets
- shell.close();
+ shell.dispose();
}
}
});
@@ -248,7 +252,7 @@ public class ReconnectServer extends AbstractAction implements IWorkbenchWindowA
if (event.character == SWT.ESC)
{
//Escape key acts as cancel on all widgets
- shell.close();
+ shell.dispose();
}
}
});
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientListener.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientListener.java
index 2be0ddbebf..c3348b32f0 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientListener.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientListener.java
@@ -45,7 +45,6 @@ public class ClientListener implements NotificationListener
{
ObjectName objName = null;
String type = notification.getType();
- MBeanUtility.printOutput(type + ":" + objName);
if (MBeanServerNotification.REGISTRATION_NOTIFICATION.equals(type))
{
@@ -60,6 +59,7 @@ public class ClientListener implements NotificationListener
else if (JMXConnectionNotification.FAILED.equals(type))
{
ApplicationRegistry.serverConnectionClosed(server);
+ MBeanUtility.printOutput("Recieved notification from " + server.getName() + ": " + type );
}
}
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientNotificationListener.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientNotificationListener.java
index c6ecda4b4c..2af8e681ae 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientNotificationListener.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ClientNotificationListener.java
@@ -35,7 +35,6 @@ public class ClientNotificationListener extends ClientListener
public void handleNotification(Notification notification, Object handback)
{
ObjectName objName = (ObjectName)notification.getSource();
- //String type = notification.getType();
getServerRegistry().addNotification(objName, notification);
}
}
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
index 945c63f19a..cf3db26f4b 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
@@ -164,7 +164,6 @@ public class JMXServerRegistry extends ServerRegistry
public void removeManagedObject(ManagedBean mbean)
{
- MBeanUtility.printOutput("Removing MBean:" + mbean.getUniqueName());
if (mbean.isQueue())
{
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
index 29d7b9c557..479f68de03 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
@@ -440,18 +440,6 @@ public class MBeanUtility
return mbeans;
}
- /**
- * Returns all the domains for the given server. This method can be removed as now this RCP is specific to
- * Qpid and domain is also fixed
- */
- public static List<String> getAllDomains(ManagedServer server) throws Exception
- {
- JMXServerRegistry serverRegistry = (JMXServerRegistry)ApplicationRegistry.getServerRegistry(server);
- MBeanServerConnection mbsc = serverRegistry.getServerConnection();
- String[] domains = mbsc.getDomains();
- return Arrays.asList(domains);
- }
-
public static void printOutput(String statement)
{
if (ApplicationRegistry.debug)
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
index 5476c27871..3c8e52f1d2 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
@@ -30,6 +30,7 @@ import org.apache.qpid.management.ui.ServerRegistry;
import org.apache.qpid.management.ui.exceptions.InfoRequiredException;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.apache.qpid.management.ui.model.AttributeData;
+import org.apache.qpid.management.ui.model.NotificationInfoModel;
import org.apache.qpid.management.ui.model.OperationData;
import org.apache.qpid.management.ui.model.OperationDataModel;
import org.eclipse.jface.viewers.ISelection;
@@ -135,8 +136,7 @@ public class MBeanView extends ViewPart
{
try
{
- if (_selectedNode == null || NODE_TYPE_SERVER.equals(_selectedNode.getType()) ||
- NODE_TYPE_DOMAIN.equals(_selectedNode.getType()) )
+ if (_selectedNode == null || NODE_TYPE_SERVER.equals(_selectedNode.getType()))
{
return;
}
@@ -176,8 +176,7 @@ public class MBeanView extends ViewPart
*/
private void setServer()
{
- if (NODE_TYPE_SERVER.equals(_selectedNode.getType()) ||
- NODE_TYPE_DOMAIN.equals(_selectedNode.getType()) )
+ if (NODE_TYPE_SERVER.equals(_selectedNode.getType()))
{
_server = (ManagedServer)_selectedNode.getManagedObject();
_virtualHostName = null;
@@ -359,6 +358,13 @@ public class MBeanView extends ViewPart
private void createNotificationsTab(TabFolder tabFolder)
{
+ NotificationInfoModel[] items = MBeanUtility.getNotificationInfo(_mbean);
+ if (items == null || items.length == 0)
+ {
+ //the mbean has no notifications to subscribe for, do not create the tab.
+ return;
+ }
+
NotificationsTabControl controller = new NotificationsTabControl(tabFolder);
TabItem tab = new TabItem(tabFolder, SWT.NONE);
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
index ec8a612d41..fedb1c4bd0 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
@@ -130,16 +130,26 @@ public class NavigationView extends ViewPart
{
public void treeExpanded(TreeExpansionEvent event)
{
- _treeViewer.setExpandedState(event.getElement(), true);
- // Following will cause the selection event to be sent, so commented
- // _treeViewer.setSelection(new StructuredSelection(event.getElement()));
- _treeViewer.refresh();
+ getSite().getShell().getDisplay().asyncExec(
+ new Runnable()
+ {
+ public void run()
+ {
+ _treeViewer.refresh();
+ }
+ });
}
public void treeCollapsed(TreeExpansionEvent event)
{
- _treeViewer.setExpandedState(event.getElement(), false);
- _treeViewer.refresh();
+ getSite().getShell().getDisplay().asyncExec(
+ new Runnable()
+ {
+ public void run()
+ {
+ _treeViewer.refresh();
+ }
+ });
}
});
@@ -201,11 +211,11 @@ public class NavigationView extends ViewPart
}
/**
- * Creates Qpid Server connection using JMX RMI protocol
+ * Creates Qpid Server connection
* @param server
* @throws Exception
*/
- private void createRMIServerConnection(ManagedServer server) throws Exception
+ private void createJMXServerConnection(ManagedServer server) throws Exception
{
// Currently Qpid Management Console only supports JMX MBeanServer
ServerRegistry serverRegistry = new JMXServerRegistry(server);
@@ -220,42 +230,32 @@ public class NavigationView extends ViewPart
* @param domain
* @throws Exception
*/
- public void addNewServer(String transportProtocol, String host, int port, String domain, String user, String pwd)
+ public void addNewServer(String host, int port, String domain, String user, String pwd)
throws Exception
{
- String serverAddress = host + ":" + port;
- String url = null;
ManagedServer managedServer = new ManagedServer(host, port, domain, user, pwd);
- if ("RMI".equals(transportProtocol))
+ String server = managedServer.getName();
+ List<TreeObject> list = _serversRootNode.getChildren();
+ for (TreeObject node : list)
{
- url = managedServer.getUrl();
- List<TreeObject> list = _serversRootNode.getChildren();
- for (TreeObject node : list)
+ ManagedServer nodeServer = (ManagedServer)node.getManagedObject();
+ if (server.equals(nodeServer.getName()))
{
- ManagedServer nodeServer = (ManagedServer)node.getManagedObject();
- if (url.equals(nodeServer.getUrl()))
- {
- // Server is already in the list of added servers, so now connect it.
- // Set the server node as selected and then connect it.
- _treeViewer.setSelection(new StructuredSelection(node));
- reconnect(user, pwd);
+ // Server is already in the list of added servers, so now connect it.
+ // Set the server node as selected and then connect it.
+ _treeViewer.setSelection(new StructuredSelection(node));
+ reconnect(user, pwd);
- return;
- }
+ return;
}
-
- // The server is not in the list of already added servers, so now connect and add it.
- managedServer.setName(serverAddress);
- createRMIServerConnection(managedServer);
- }
- else
- {
- throw new InfoRequiredException(transportProtocol + " transport is not supported");
}
+ // The server is not in the list of already added servers, so now connect and add it.
+ createJMXServerConnection(managedServer);
+
// Server connection is successful. Now add the server in the tree
- TreeObject serverNode = new TreeObject(serverAddress, NODE_TYPE_SERVER);
+ TreeObject serverNode = new TreeObject(server, NODE_TYPE_SERVER);
serverNode.setManagedObject(managedServer);
_serversRootNode.addChild(serverNode);
@@ -276,10 +276,12 @@ public class NavigationView extends ViewPart
// Add the Queue/Exchanges/Connections from config file into the navigation tree
addConfiguredItems(managedServer);
+ expandInitialMBeanView(serverNode);
+
_treeViewer.refresh();
// save server address in file
- addServerInConfigFile(serverAddress);
+ addServerInConfigFile(server);
}
/**
@@ -405,50 +407,33 @@ public class NavigationView extends ViewPart
}
}
- /**
- * Queries the qpid server for MBeans and populates the navigation view with all MBeans for
- * the given server node.
- * @param serverNode
- */
- private void populateServer(TreeObject serverNode) throws Exception
+ //check if the MBeanInfo can be retrieved.
+ private boolean haveAccessPermission(ManagedBean mbean)
{
- ManagedServer server = (ManagedServer) serverNode.getManagedObject();
- String domain = server.getDomain();
- if (!domain.equals(ALL))
- {
- TreeObject domainNode = new TreeObject(domain, NODE_TYPE_DOMAIN);
- domainNode.setParent(serverNode);
-
- populateDomain(domainNode);
+ try
+ {
+ MBeanUtility.getMBeanInfo(mbean);
}
- else
+ catch(Exception ex)
{
- List<TreeObject> domainList = new ArrayList<TreeObject>();
- List<String> domains = MBeanUtility.getAllDomains(server);
-
- for (String domainName : domains)
- {
- TreeObject domainNode = new TreeObject(domainName, NODE_TYPE_DOMAIN);
- domainNode.setParent(serverNode);
-
- domainList.add(domainNode);
- populateDomain(domainNode);
- }
+ return false;
}
+
+ return true;
}
-
+
/**
- * Queries the Qpid Server and populates the given domain node with all MBeans undser that domain.
- * @param domain
- * @throws IOException
+ * Queries the qpid server for MBeans and populates the navigation view with all MBeans for
+ * the given server node.
+ * @param serverNode
* @throws Exception
*/
- private void populateDomain(TreeObject domain) throws IOException, Exception
+ private void populateServer(TreeObject serverNode) throws Exception
{
- ManagedServer server = (ManagedServer) domain.getParent().getManagedObject();
+ ManagedServer server = (ManagedServer) serverNode.getManagedObject();
+ String domain = server.getDomain();
- // Now populate the mbenas under those types
- List<ManagedBean> mbeans = MBeanUtility.getManagedObjectsForDomain(server, domain.getName());
+ List<ManagedBean> mbeans = MBeanUtility.getManagedObjectsForDomain(server, domain);
for (ManagedBean mbean : mbeans)
{
mbean.setServer(server);
@@ -459,13 +444,17 @@ public class NavigationView extends ViewPart
// manually by selecting from MBeanView
if (!(mbean.isConnection() || mbean.isExchange() || mbean.isQueue()))
{
- addManagedBean(domain, mbean);
+ //if we cant get the MBeanInfo then we cant display the mbean, so dont add it to the tree
+ if (haveAccessPermission(mbean))
+ {
+ addManagedBean(serverNode, mbean);
+ }
}
}
// To make it work with the broker without virtual host implementation.
// This will add the default nodes to the domain node
boolean hasVirtualHost = false;
- for (TreeObject child : domain.getChildren())
+ for (TreeObject child : serverNode.getChildren())
{
if (child.getName().startsWith(VIRTUAL_HOST))
{
@@ -475,7 +464,7 @@ public class NavigationView extends ViewPart
}
if (!hasVirtualHost){
- addDefaultNodes(domain);
+ addDefaultNodes(serverNode);
}
}
@@ -540,15 +529,14 @@ public class NavigationView extends ViewPart
}
/**
- * Adds the given MBean to the given domain node. Creates Notification node for the MBean.
+ * Adds the given MBean to the given domain node.
* sample ObjectNames -
* org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost=localhost
* org.apache.qpid:type=VirtualHost.Queue,VirtualHost=test,name=ping_1
- * @param domain
- * @param mbean
- * @throws Exception
+ * @param parent parent tree node to add the mbean to
+ * @param mbean mbean to add
*/
- private void addManagedBean(TreeObject domain, ManagedBean mbean) // throws Exception
+ private void addManagedBean(TreeObject parent, ManagedBean mbean)
{
String name = mbean.getName();
// Split the mbean type into array of Strings, to create hierarchy
@@ -558,7 +546,7 @@ public class NavigationView extends ViewPart
// test->Queue->ping
String[] types = mbean.getType().split("\\.");
TreeObject typeNode = null;
- TreeObject parentNode = domain;
+ TreeObject parentNode = parent;
// Run this loop till all nodes(hierarchy) for this mbean are created. This loop only creates
// all the required parent nodes for the mbean
@@ -638,11 +626,6 @@ public class NavigationView extends ViewPart
{
addItemInConfigFile(mbeanNode);
}
-
- // Add notification node
- // TODO: show this only if the mbean sends any notification
- //TreeObject notificationNode = new TreeObject(NOTIFICATION, NOTIFICATION);
- //notificationNode.setParent(mbeanNode);
}
private TreeObject createTypeNode(TreeObject parent, String name)
@@ -755,7 +738,7 @@ public class NavigationView extends ViewPart
managedServer.setUser(user);
managedServer.setPassword(password);
- createRMIServerConnection(managedServer);
+ createJMXServerConnection(managedServer);
// put the server in the managed server map
_managedServerMap.put(managedServer, selectedNode);
@@ -775,8 +758,31 @@ public class NavigationView extends ViewPart
// Add the Queue/Exchanges/Connections from config file into the navigation tree
addConfiguredItems(managedServer);
+ expandInitialMBeanView(selectedNode);
+
_treeViewer.refresh();
}
+
+ private void expandInitialMBeanView(TreeObject serverNode)
+ {
+ if (serverNode.getChildren().size() == 0 )
+ {
+ return;
+ }
+ else
+ {
+ _treeViewer.setExpandedState(serverNode , true);
+ }
+
+ List<TreeObject> children = serverNode.getChildren();
+ for (TreeObject child : children)
+ {
+ if (child.getChildren().size() > 0)
+ {
+ _treeViewer.setExpandedState(child, true);
+ }
+ }
+ }
/**
* Adds the items(queues/exchanges/connectins) from config file to the server tree
@@ -1157,25 +1163,12 @@ public class NavigationView extends ViewPart
/**
* Adds the mbean to the navigation tree
- * @param mbean
- * @throws Exception
+ * @param mbean mbean to add to the tree
*/
- public void addManagedBean(ManagedBean mbean) // throws Exception
+ public void addManagedBean(ManagedBean mbean)
{
TreeObject treeServerObject = _managedServerMap.get(mbean.getServer());
- List<TreeObject> domains = treeServerObject.getChildren();
- TreeObject domain = null;
- for (TreeObject child : domains)
- {
- if (child.getName().equals(mbean.getDomain()))
- {
- domain = child;
-
- break;
- }
- }
-
- addManagedBean(domain, mbean);
+ addManagedBean(treeServerObject, mbean);
_treeViewer.refresh();
}
@@ -1200,20 +1193,8 @@ public class NavigationView extends ViewPart
for (ManagedBean mbean : removalList)
{
TreeObject treeServerObject = _managedServerMap.get(mbean.getServer());
- List<TreeObject> domains = treeServerObject.getChildren();
- TreeObject domain = null;
- for (TreeObject child : domains)
- {
- if (child.getName().equals(mbean.getDomain()))
- {
- domain = child;
-
- break;
- }
- }
- removeManagedObject(domain, mbean);
- // serverRegistry.removeManagedObject(mbean);
+ removeManagedObject(treeServerObject, mbean);
}
_treeViewer.refresh();
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
index 36ad1b4fdc..11df1b6f00 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
@@ -33,8 +33,6 @@ import static org.apache.qpid.management.ui.Constants.*;
import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
-import org.apache.qpid.management.ui.ServerRegistry;
-import org.apache.qpid.management.ui.jmx.JMXServerRegistry;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.apache.qpid.management.ui.model.OperationData;
import org.apache.qpid.management.ui.model.ParameterData;
@@ -69,8 +67,6 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* Control class for the MBean operations tab. It creates the required widgets
* for the selected MBean.
- * @author Bhupendra Bhardwaj
- * @author Robert Gemmell
*/
public class OperationTabControl extends TabControl
{
@@ -521,7 +517,7 @@ public class OperationTabControl extends TabControl
private void populateResults(Object result)
{
Display display = Display.getCurrent();
- int width = 600;
+ int width = 610;
int height = 400;
Shell shell = ViewUtility.createPopupShell(RESULT, width, height);
shell.setImage(ApplicationRegistry.getImage(CONSOLE_IMAGE));
@@ -605,23 +601,37 @@ public class OperationTabControl extends TabControl
return;
}
- // customized for passwords
- if (PASSWORD.equalsIgnoreCase(param.getName()))
+ //Custom handling for the PASSWORD field
+ if (param.getName().equalsIgnoreCase(PASSWORD))
{
+ //Convert the String value to a character array if that is what is required.
if (param.getType().equals("[C"))
{
- try
+ // 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)
{
- param.setValue(ViewUtility.getHash((String)param.getValue()));
+ try
+ {
+ param.setValue(ViewUtility.getHash((String) param.getValue()));
+ }
+ catch (Exception hashException)
+ {
+ ViewUtility.popupErrorMessage(_form.getText(),
+ "Unable to calculate hash for Password:"
+ + hashException.getMessage());
+ return;
+ }
}
- catch (Exception ex)
+ else
{
- MBeanUtility.handleException(_mbean, ex);
- return;
+ param.setValue(((String) param.getValue()).toCharArray());
}
}
}
// end of customization
+
}
}
@@ -725,7 +735,14 @@ public class OperationTabControl extends TabControl
{
boolean success = Boolean.parseBoolean(result.toString());
String message = success ? OPERATION_SUCCESSFUL : OPERATION_UNSUCCESSFUL;
- ViewUtility.popupInfoMessage(title, message);
+ if(success)
+ {
+ ViewUtility.popupInfoMessage(title, message);
+ }
+ else
+ {
+ ViewUtility.popupErrorMessage(title, message);
+ }
}
else if (_opData.getParameters() != null && !_opData.getParameters().isEmpty())
{
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/QueueTypeTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/QueueTypeTabControl.java
index 9fcf32abdd..6e37e96695 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/QueueTypeTabControl.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/QueueTypeTabControl.java
@@ -271,12 +271,50 @@ public class QueueTypeTabControl extends MBeanTypeTabControl
for (AttributeData data : list)
{
ManagedBean mbean = _queueDepthMap.get(data);
- String value = data.getValue().toString();
- items[i++] = mbean.getName() + " (" + value + " KB)";
+ items[i++] = mbean.getName() + " (" + getQueueDepthString(mbean, data) + ")";
}
getListWidget().setItems(items);
}
+ private String getQueueDepthString(ManagedBean mbean, AttributeData data)
+ {
+ if (mbean.getVersion() == 1) //mbean returns KB
+ {
+ Long value = (Long)data.getValue();
+
+ Double mb = 1024.0;
+
+ if(value > mb) //MB
+ {
+ return String.format("%.3f", (Double)(value / mb)) + " MB";
+ }
+ else //KB
+ {
+ return data.getValue().toString() + " KB";
+ }
+ }
+ else //mbean returns Bytes
+ {
+ Long value = (Long)data.getValue();
+
+ double mb = 1024.0 * 1024.0;
+ double kb = 1024.0;
+
+ if(value >= mb) //MB
+ {
+ return String.format("%.3f", (Double)(value / mb)) + " MB";
+ }
+ else if (value >= kb) //KB
+ {
+ return String.format("%.3f", (Double)(value / kb)) + " KB";
+ }
+ else //Bytes
+ {
+ return data.getValue().toString() + " Bytes";
+ }
+ }
+ }
+
private void sortQueuesByConsumerCount()
{
java.util.List<AttributeData> list = new ArrayList<AttributeData>(_queueConsumerCountMap.keySet());
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java
index 5d6a03b238..16bae07e48 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java
@@ -39,14 +39,15 @@ import javax.management.openmbean.OpenType;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
-import org.apache.qpid.management.ui.ApplicationWorkbenchAdvisor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
+import org.apache.commons.codec.binary.Hex;
+
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -56,12 +57,12 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* Utility Class for displaying OpenMbean data types by creating required SWT widgets
- * @author Bhupendra Bhardwaj
*/
public class ViewUtility
{
@@ -89,6 +90,10 @@ public class ViewUtility
SUPPORTED_ARRAY_DATATYPES.add("java.util.Date");
}
+ private static final int DEFAULT_CONTENT_SIZE = 198;
+ static Button _firstButton, _nextButton, _previousButton, _lastButton;
+ static Text _hexNumTextToEnd, _hexNumTextToStart;
+
/**
* Populates the composite with given openmbean data type (TabularType or CompositeType)
* @param toolkit
@@ -190,15 +195,15 @@ public class ViewUtility
layoutData.widthHint = 80;
firstRecordButton.setLayoutData(layoutData);
- final Button nextRecordButton = toolkit.createButton(dataHolder, NEXT, SWT.PUSH);
+ final Button previousRecordButton = toolkit.createButton(dataHolder, PREV, SWT.PUSH);
layoutData = new GridData (GridData.HORIZONTAL_ALIGN_END);
layoutData.widthHint = 80;
- nextRecordButton.setLayoutData(layoutData);
+ previousRecordButton.setLayoutData(layoutData);
- final Button previousRecordButton = toolkit.createButton(dataHolder, PREV, SWT.PUSH);
+ final Button nextRecordButton = toolkit.createButton(dataHolder, NEXT, SWT.PUSH);
layoutData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
layoutData.widthHint = 80;
- previousRecordButton.setLayoutData(layoutData);
+ nextRecordButton.setLayoutData(layoutData);
final Button lastRecordButton = toolkit.createButton(dataHolder, LAST, SWT.PUSH);
layoutData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
@@ -352,7 +357,7 @@ public class ViewUtility
}
else
{
- setNotSupportedDataType(toolkit, compositeHolder);
+ handleBinaryMessageContent(toolkit, compositeHolder, data, itemName, encoding);
}
}
// If array of any other supported type, show as a list of String array
@@ -436,6 +441,321 @@ public class ViewUtility
return messageBox.open();
}
+ /**
+ * Creates widgets for object messages and populates the content in hexadecimal format.
+ * @param toolkit
+ * @param compositeHolder
+ * @param data
+ * @param itemName
+ * @param encoding
+ */
+ private static void handleBinaryMessageContent(FormToolkit toolkit, Composite compositeHolder, CompositeData data, String itemName, String encoding)
+ {
+ final String thisEncoding = encoding;
+ final Byte[] arrayItems = (Byte[]) data.get(itemName);
+ final byte[] byteArray = new byte[arrayItems.length];
+
+ for (int i = 0; i < arrayItems.length; i++)
+ {
+ byteArray[i] = arrayItems[i];
+ }
+
+ try
+ {
+ //create a new composite to contain the widgets required to display object messages.
+ final Composite localComposite = toolkit.createComposite(compositeHolder, SWT.NONE);
+ localComposite.setData("currentBytePos", 0);
+ localComposite.setData("startingBytePos", 0);
+ GridLayout layout = new GridLayout(2, true);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ localComposite.setLayout(layout);
+ localComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
+
+ int startContentSize = DEFAULT_CONTENT_SIZE;
+
+ if (byteArray.length < DEFAULT_CONTENT_SIZE)
+ {
+ startContentSize = byteArray.length;
+ }
+
+ //create a text to display the hexadecimal views of object messages, it takes more space than ascii view as
+ //a hex uses 2 chars and 1 space, while ascii only uses 1 char and 1 space.
+ final Text hexText = toolkit.createText(localComposite,
+ new String(displayByteFormat(localComposite, byteArray, startContentSize * 2, thisEncoding, "<<", true)),
+ SWT.READ_ONLY | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.BORDER);
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
+ gridData.widthHint = 144; //set to 222 if not using any fonts
+ gridData.heightHint = 200;
+ hexText.setLayoutData(gridData);
+
+ final Text asciiText = toolkit.createText(localComposite,
+ new String(displayByteFormat(localComposite, byteArray, startContentSize * 2, thisEncoding, "<<", false)),
+ SWT.READ_ONLY | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.BORDER);
+
+
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
+ gridData.widthHint = 52;//set to 98 if not using any fonts
+ gridData.heightHint = 200;
+ asciiText.setLayoutData(gridData);
+
+ //use a monospaced font for a better layout
+ Font font = new Font(compositeHolder.getDisplay(), "Courier", 10, SWT.NORMAL);
+ hexText.setFont(font);
+ asciiText.setFont(font);
+
+ final ScrollBar hexScrollBar = hexText.getVerticalBar();
+ final ScrollBar asciiScrollBar = asciiText.getVerticalBar();
+
+ //create a sub composite to contain all the buttons
+ final Composite buttonComposite = toolkit.createComposite(localComposite, SWT.NONE);
+ layout = new GridLayout(7, false);
+ layout.marginWidth = 0;
+ buttonComposite.setLayout(layout);
+ buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
+
+ _firstButton = toolkit.createButton(buttonComposite, "<<", SWT.PUSH);
+ GridData layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ _firstButton.setLayoutData(layoutData);
+ _firstButton.setToolTipText("See the first n bytes");
+
+ _previousButton = toolkit.createButton(buttonComposite, "<", SWT.PUSH);
+ layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ _previousButton.setLayoutData(layoutData);
+ _previousButton.setToolTipText("See the previous n bytes");
+ _previousButton.setEnabled(false);
+
+ _hexNumTextToStart = toolkit.createText(buttonComposite, "0");
+ layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ _hexNumTextToStart.setLayoutData(layoutData);
+ _hexNumTextToStart.setEditable(false);
+
+ final Text hexNumText = toolkit.createText(buttonComposite, "" + startContentSize);
+ layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ hexNumText.setLayoutData(layoutData);
+
+ _hexNumTextToEnd = toolkit.createText(buttonComposite, "" + (byteArray.length - startContentSize));
+ layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ _hexNumTextToEnd.setLayoutData(layoutData);
+ _hexNumTextToEnd.setEditable(false);
+
+ _nextButton = toolkit.createButton(buttonComposite, ">", SWT.PUSH);
+ layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ _nextButton.setLayoutData(layoutData);
+ _nextButton.setToolTipText("See the next n bytes");
+ _nextButton.setEnabled(true);
+
+ _lastButton = toolkit.createButton(buttonComposite, ">>", SWT.PUSH);
+ layoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ layoutData.widthHint = 40;
+ _lastButton.setToolTipText("See the last n bytes");
+ _lastButton.setLayoutData(layoutData);
+
+ SelectionListener listener = new SelectionAdapter()
+ {
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (e.widget instanceof Button)
+ {
+ String numOfBytes = hexNumText.getText();
+ try
+ {
+ int n = Integer.parseInt(numOfBytes);
+
+ //Reset range display if user requests a large value
+ if (n > byteArray.length)
+ {
+ n = (byteArray.length > DEFAULT_CONTENT_SIZE) ? DEFAULT_CONTENT_SIZE : byteArray.length;
+ hexNumText.setText("" + n);
+ }
+
+ //rest if the user requests 0
+ if (n < 1)
+ {
+ n = DEFAULT_CONTENT_SIZE;
+ hexNumText.setText("" + n);
+ }
+
+ Button button = (Button) e.widget;
+ hexText.setText(displayByteFormat(localComposite, byteArray, n * 2, thisEncoding,
+ button.getText(), true));
+ asciiText.setText(displayByteFormat(localComposite, byteArray, n * 2, thisEncoding,
+ button.getText(), false));
+ }
+ catch (NumberFormatException exp)
+ {
+ popupErrorMessage("Error", "Please input the number of bytes you wish to look at");
+ }
+ }
+ if (e.widget instanceof ScrollBar)
+ {
+ //synchronize the movements of the two scrollbars
+ ScrollBar sb = (ScrollBar) e.widget;
+ if (sb.getParent().equals(hexText))
+ {
+ asciiScrollBar.setIncrement(sb.getIncrement());
+ asciiScrollBar.setSelection(sb.getSelection());
+ }
+ else if (sb.getParent().equals(asciiText))
+ {
+ hexScrollBar.setSelection(sb.getSelection());
+ hexScrollBar.setIncrement(sb.getIncrement());
+ }
+ }
+ }
+ };
+ localComposite.addControlListener(new ControlAdapter()
+ {
+ public void controlResized(ControlEvent e)
+ {
+ //if the control is resized, set different parameters to make a single line displays the same contents.
+ if (((GridLayout) localComposite.getLayout()).makeColumnsEqualWidth)
+ {
+ ((GridLayout) localComposite.getLayout()).makeColumnsEqualWidth = false;
+ ((GridLayout) localComposite.getLayout()).numColumns = 2;
+ ((GridData) hexText.getLayoutData()).horizontalSpan = 1;
+ ((GridData) hexText.getLayoutData()).widthHint = 144;
+ ((GridData) asciiText.getLayoutData()).horizontalSpan = 1;
+ ((GridData) asciiText.getLayoutData()).widthHint = 52;
+ ((GridData) buttonComposite.getLayoutData()).horizontalSpan = 2;
+ }
+ else
+ {
+ ((GridLayout) localComposite.getLayout()).makeColumnsEqualWidth = true;
+ ((GridLayout) localComposite.getLayout()).numColumns = 42; //set to 47 if not using any fonts
+ ((GridData) hexText.getLayoutData()).horizontalSpan = 25; // set to 30 if not using any fonts
+ ((GridData) asciiText.getLayoutData()).horizontalSpan = 17; // set to 17 if not using any fonts
+ ((GridData) buttonComposite.getLayoutData()).horizontalSpan = 42;
+ }
+ }
+ });
+
+ _firstButton.addSelectionListener(listener);
+ _previousButton.addSelectionListener(listener);
+ _nextButton.addSelectionListener(listener);
+ _lastButton.addSelectionListener(listener);
+ hexScrollBar.addSelectionListener(listener);
+ asciiScrollBar.addSelectionListener(listener);
+ //f.dispose();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ /**
+ * Format object messages to have a hexadecimal view and a ascii view.
+ * @param numOfBytes
+ * @param encoding
+ * @return
+ */
+ private static String displayByteFormat(Composite localComposite, byte[] byteArray, int numOfBytes,
+ String encoding, String direction, boolean isHex)
+ {
+ final Hex hexeconder = new Hex();
+ final byte[] encoded = hexeconder.encode(byteArray);
+
+ int hexLength = byteArray.length * 2;
+ StringBuilder sb = new StringBuilder();
+ int currentBytePos = (Integer) localComposite.getData("currentBytePos");
+ int startingBytePos = (Integer) localComposite.getData("startingBytePos");
+
+ int strLength = 0;
+ int offset = 0;
+ String encStr;
+ if (isHex)
+ {
+ if (direction.equals("<<"))
+ {
+ strLength = (numOfBytes > hexLength) ? hexLength : numOfBytes;
+ offset = 0;
+ }
+ else if (direction.equals("<"))
+ {
+ strLength = (startingBytePos - numOfBytes < 0) ? startingBytePos : numOfBytes;
+ offset = (startingBytePos - numOfBytes < 0) ? 0 : startingBytePos - numOfBytes;
+ }
+ else if (direction.equals(">"))
+ {
+ strLength = (numOfBytes > (hexLength - currentBytePos)) ? hexLength - currentBytePos : numOfBytes;
+ offset = currentBytePos;
+ }
+ else if (direction.equals(">>"))
+ {
+ strLength = (numOfBytes > hexLength) ? hexLength : numOfBytes;
+ offset = (hexLength - numOfBytes > 0) ? hexLength - numOfBytes : 0;
+ }
+ else
+ {
+ strLength = hexLength;
+ offset = 0;
+ }
+ localComposite.setData("strLength", strLength);
+ localComposite.setData("currentBytePos", offset + strLength);
+ localComposite.setData("startingBytePos", offset);
+
+ if (_lastButton != null && !_lastButton.isDisposed())
+ {
+ //Set button state
+ _previousButton.setEnabled(offset != 0);
+ _nextButton.setEnabled(offset + strLength != hexLength);
+
+ //set the text fields
+ _hexNumTextToStart.setText("" + offset / 2);
+ _hexNumTextToEnd.setText("" + (hexLength - (offset + strLength)) / 2);
+ }
+ }
+
+ try
+ {
+ if (isHex)
+ {
+ encStr = new String(encoded, offset, strLength, encoding);
+ for (int c = 0; c < strLength; c++)
+ {
+ sb.append(encStr.charAt(c));
+ if (c % 2 == 1)
+ {
+ sb.append(" ");
+ }
+ }
+ return sb.toString().toUpperCase();
+ }
+ else
+ {
+ strLength = (Integer) localComposite.getData("strLength");
+ sb = new StringBuilder();
+ encStr = new String(byteArray, startingBytePos / 2, strLength / 2, encoding);
+ for (int c = 0; c < encStr.length(); c++)
+ {
+ char ch = encStr.charAt(c);
+ if (ch > 31 && ch < 127)
+ {
+ sb.append(ch);
+ }
+ else
+ {
+ sb.append("?");
+ }
+
+ sb.append(" ");
+ }
+ }
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ e.printStackTrace();
+ }
+ return sb.toString();
+ }
+
public static int popupInfoMessage(String title, String message)
{
return showBox(title, message, SWT.ICON_INFORMATION | SWT.OK);
@@ -448,7 +768,7 @@ public class ViewUtility
public static int popupConfirmationMessage(String title, String message)
{
- return showBox(title, message,SWT.ICON_QUESTION | SWT.YES | SWT.NO | SWT.CANCEL);
+ return showBox(title, message,SWT.ICON_QUESTION | SWT.YES | SWT.NO);
}
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86/Configuration/config.ini b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86/Configuration/config.ini
index be058e2ae5..dc15366740 100644
--- a/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86/Configuration/config.ini
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86/Configuration/config.ini
@@ -45,4 +45,5 @@ org.eclipse.ui, \
org.eclipse.ui.forms, \
org.eclipse.ui.workbench, \
org.eclipse.equinox.launcher, \
-org.eclipse.equinox.launcher.gtk.linux.x86
+org.eclipse.equinox.launcher.gtk.linux.x86, \
+org.apache.commons.codec
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/Configuration/config.ini b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/Configuration/config.ini
new file mode 100644
index 0000000000..f437e830b5
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/Configuration/config.ini
@@ -0,0 +1,49 @@
+###############################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+###############################################################################
+
+#Product Runtime Configuration File
+
+osgi.splashPath=platform:/base/plugins/org.apache.qpid.management.ui
+eclipse.product=org.apache.qpid.management.ui.product
+osgi.bundles.defaultStartLevel=4
+osgi.bundles=jmxremote.sasl, \
+qpid-management-common, \
+org.apache.qpid.management.ui, \
+com.ibm.icu, \
+org.eclipse.core.commands, \
+org.eclipse.core.contenttype, \
+org.eclipse.core.databinding, \
+org.eclipse.core.expressions, \
+org.eclipse.core.jobs, \
+org.eclipse.core.runtime@start, \
+org.eclipse.core.runtime.compatibility.registry, \
+org.eclipse.equinox.app,org.eclipse.equinox.common, \
+org.eclipse.equinox.preferences, \
+org.eclipse.equinox.registry, \
+org.eclipse.help, \
+org.eclipse.jface, \
+org.eclipse.jface.databinding, \
+org.eclipse.swt, \
+org.eclipse.swt.gtk.linux.x86_64, \
+org.eclipse.ui, \
+org.eclipse.ui.forms, \
+org.eclipse.ui.workbench, \
+org.eclipse.equinox.launcher, \
+org.eclipse.equinox.launcher.gtk.linux.x86_64, \
+org.apache.commons.codec
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/libcairo-swt.so b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/libcairo-swt.so
new file mode 100644
index 0000000000..5734427fb8
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/libcairo-swt.so
Binary files differ
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc
new file mode 100644
index 0000000000..ff1f3a7507
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc
Binary files differ
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc.ini b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc.ini
new file mode 100644
index 0000000000..19ceb6f717
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/linux-gtk-x86_64/qpidmc.ini
@@ -0,0 +1,37 @@
+###############################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+###############################################################################
+
+-vmargs
+-Xms40m
+-Xmx256m
+-XX:MaxPermSize=256m
+-Dosgi.requiredJavaVersion=1.5
+-Declipse.consoleLog=true
+
+#===============================================
+# SSL trust store configuration options.
+#===============================================
+
+# Uncomment lines below to specify custom truststore for server SSL
+# certificate verification, eg when using self-signed server certs.
+#
+#-Djavax.net.ssl.trustStore=<path.to.truststore>
+#-Djavax.net.ssl.trustStorePassword=<truststore.password>
+
+
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Configuration/config.ini b/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Configuration/config.ini
index a7c671ce2d..3ac3aa20f3 100644
--- a/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Configuration/config.ini
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Configuration/config.ini
@@ -45,4 +45,5 @@ org.eclipse.ui, \
org.eclipse.ui.forms, \
org.eclipse.ui.workbench, \
org.eclipse.equinox.launcher, \
-org.eclipse.equinox.launcher.carbon.macosx
+org.eclipse.equinox.launcher.carbon.macosx, \
+org.apache.commons.codec
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/qpid-management-common-plugin/MANIFEST.MF b/qpid/java/management/eclipse-plugin/src/main/resources/qpid-management-common-plugin/MANIFEST.MF
index 5ef0c78606..818daef003 100644
--- a/qpid/java/management/eclipse-plugin/src/main/resources/qpid-management-common-plugin/MANIFEST.MF
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/qpid-management-common-plugin/MANIFEST.MF
@@ -8,4 +8,4 @@ Export-Package: org.apache.qpid.management.common,
org.apache.qpid.management.common.sasl
Bundle-Vendor:
Bundle-Localization: plugin
-Require-Bundle: jmxremote.sasl
+Require-Bundle: jmxremote.sasl;resolution:=optional
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Configuration/config.ini b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Configuration/config.ini
new file mode 100644
index 0000000000..a99a8b3f7d
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Configuration/config.ini
@@ -0,0 +1,49 @@
+###############################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+###############################################################################
+
+#Product Runtime Configuration File
+
+osgi.splashPath=platform:/base/plugins/org.apache.qpid.management.ui
+eclipse.product=org.apache.qpid.management.ui.product
+osgi.bundles.defaultStartLevel=4
+osgi.bundles=jmxremote.sasl, \
+qpid-management-common, \
+org.apache.qpid.management.ui, \
+com.ibm.icu, \
+org.eclipse.core.commands, \
+org.eclipse.core.contenttype, \
+org.eclipse.core.databinding, \
+org.eclipse.core.expressions, \
+org.eclipse.core.jobs, \
+org.eclipse.core.runtime@start, \
+org.eclipse.core.runtime.compatibility.registry, \
+org.eclipse.equinox.app,org.eclipse.equinox.common, \
+org.eclipse.equinox.preferences, \
+org.eclipse.equinox.registry, \
+org.eclipse.help, \
+org.eclipse.jface, \
+org.eclipse.jface.databinding, \
+org.eclipse.swt, \
+org.eclipse.swt.gtk.solaris.sparc, \
+org.eclipse.ui, \
+org.eclipse.ui.forms, \
+org.eclipse.ui.workbench, \
+org.eclipse.equinox.launcher, \
+org.eclipse.equinox.launcher.gtk.solaris.sparc, \
+org.apache.commons.codec
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.l.pm b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.l.pm
new file mode 100644
index 0000000000..995d7c9bb0
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.l.pm
@@ -0,0 +1,311 @@
+/* XPM */
+static char *ProductIcon48[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 257 2",
+" c black",
+". c gray100",
+"X c #69695A5AE8E8",
+"o c #494949499191",
+"O c #CECE9292BFBF",
+"+ c #E7E7CACAE0E0",
+"@ c #C8C88C8CBBBB",
+"# c #C2C28A8ABABA",
+"$ c #EAEAD7D7E8E8",
+"% c #CFCFA9A9CCCC",
+"& c #D9D9BCBCD8D8",
+"* c #B6B68787B9B9",
+"= c #C3C39999C7C7",
+"- c #A7A77D7DB5B5",
+"; c #BDBDA3A3CDCD",
+": c #D8D8CACAE3E3",
+"> c #A8A88D8DC4C4",
+", c #92927575B2B2",
+"< c #87876C6CAAAA",
+"1 c #9A9A8383BABA",
+"2 c #7B7B6363A3A3",
+"3 c #666654549595",
+"4 c #73735F5FADAD",
+"5 c #626251519292",
+"6 c #7F7F7272A7A7",
+"7 c #6D6D5E5E9E9E",
+"8 c #64645454A9A9",
+"9 c #77776969B1B1",
+"0 c #49493E3E8282",
+"q c #7D7D7373B6B6",
+"w c #5B5B4E4EADAD",
+"e c #55554949BABA",
+"r c #56564949BABA",
+"t c #56564A4ABABA",
+"y c #56564949B9B9",
+"u c #55554949B8B8",
+"i c #4F4F4444ACAC",
+"p c #53534848B4B4",
+"a c #53534848B3B3",
+"s c #54544949B5B5",
+"d c #52524747B0B0",
+"f c #52524747AFAF",
+"g c #54544949B3B3",
+"h c #DEDEDCDCEEEE",
+"j c #3E3E36369898",
+"k c #43433B3B9F9F",
+"l c #33332C2C7777",
+"z c #42423A3A9C9C",
+"x c #4A4A4040A8A8",
+"c c #55554A4ABABA",
+"v c #55554A4AB9B9",
+"b c #54544949B7B7",
+"n c #52524848B1B1",
+"m c #51514747AEAE",
+"M c #4E4E4545A9A9",
+"N c #49494141A0A0",
+"B c #52524848AFAF",
+"V c #51514848AEAE",
+"C c #50504747ACAC",
+"Z c #4F4F4646AAAA",
+"A c #51514848ADAD",
+"S c #50504747ABAB",
+"D c #50504848ACAC",
+"F c #50504747A9A9",
+"G c #4E4E4646A7A7",
+"H c #4E4E4545A4A4",
+"J c #4D4D4545A4A4",
+"K c #4F4F4747A8A8",
+"L c #4E4E4646A5A5",
+"P c #4D4D4545A3A3",
+"I c #3B3B35357D7D",
+"U c #4E4E4646A3A3",
+"Y c #55554D4D9F9F",
+"T c #4A4A43438989",
+"R c #51514B4B9090",
+"E c #67676060A5A5",
+"W c #1D1D18186A6A",
+"Q c #272722227D7D",
+"! c #282823237D7D",
+"~ c #2B2B26268181",
+"^ c #33332C2C8989",
+"/ c #3B3B36368E8E",
+"( c #454540409797",
+") c #4D4D4646A4A4",
+"_ c #4C4C4545A1A1",
+"` c #4D4D4646A2A2",
+"' c #4B4B4545A0A0",
+"] c #4D4D4646A1A1",
+"[ c #4C4C45459F9F",
+"{ c #4B4B45459E9E",
+"} c #4A4A44449C9C",
+"| c #494944449898",
+" . c #484843439696",
+".. c #4A4A45459999",
+"X. c #4F4F4A4AA0A0",
+"o. c #68686363AAAA",
+"O. c #21211D1D7676",
+"+. c #242420207575",
+"@. c #2D2D2A2A7F7F",
+"#. c #2D2D2A2A7B7B",
+"$. c #3D3D39398F8F",
+"%. c #484844449696",
+"&. c #474743439393",
+"*. c #464643439191",
+"=. c #454542428E8E",
+"-. c #4D4D4A4A9C9C",
+";. c #57575454A3A3",
+":. c #5A5A58589797",
+">. c #5F5F5D5D9999",
+",. c #85858282C1C1",
+"<. c #95959292C9C9",
+"1. c #B8B8B6B6DCDC",
+"2. c #070705055353",
+"3. c #080807075555",
+"4. c #0A0A09095757",
+"5. c #0C0C0B0B5858",
+"6. c #0F0F0D0D5C5C",
+"7. c #10100F0F5C5C",
+"8. c #131311116464",
+"9. c #141413136060",
+"0. c #141413135F5F",
+"q. c #171715156767",
+"w. c #161615156262",
+"e. c #161615156161",
+"r. c #181817176464",
+"t. c #1A1A19196666",
+"y. c #1C1C1A1A6464",
+"u. c #1D1D1C1C6868",
+"i. c #1F1F1E1E6A6A",
+"p. c #222221216C6C",
+"a. c #242423236F6F",
+"s. c #272725257171",
+"d. c #272726267272",
+"f. c #272726267171",
+"g. c #292928287474",
+"h. c #2A2A29297474",
+"j. c #2C2C2B2B7777",
+"k. c #2F2F2E2E7C7C",
+"l. c #2E2E2D2D7979",
+"z. c #343433337E7E",
+"x. c #393937378686",
+"c. c #373736368181",
+"v. c #3A3A39398484",
+"b. c #3A3A39398383",
+"n. c #3D3D3B3B8686",
+"m. c #424241418C8C",
+"M. c #424241418B8B",
+"N. c #444442428B8B",
+"B. c #434341418989",
+"V. c #454544448E8E",
+"C. c #454544448D8D",
+"Z. c #424241418787",
+"A. c #434342428888",
+"S. c #444442428787",
+"D. c #424241418585",
+"F. c #414140408383",
+"G. c #484847479090",
+"H. c #434342428686",
+"J. c #4A4A49499393",
+"K. c #464645458A8A",
+"L. c #4D4D4C4C9595",
+"P. c #54545252A0A0",
+"I. c #50504F4F9898",
+"U. c #58585757A0A0",
+"Y. c #525250509393",
+"T. c #5B5B5959A2A2",
+"R. c #585857579F9F",
+"E. c #62626161A9A9",
+"W. c #64646363ACAC",
+"Q. c #6B6B6A6AB2B2",
+"!. c #6B6B6A6AB1B1",
+"~. c #75757474B8B8",
+"^. c #7F7F7D7DBDBD",
+"/. c #9C9C9B9BCFCF",
+"(. c #0B0B0B0B5858",
+"). c #0D0D0D0D5A5A",
+"_. c #111111115E5E",
+"`. c #131313136060",
+"'. c #212121216D6D",
+"]. c #242424246F6F",
+"[. c #2B2B2C2C7777",
+"{. c #2B2B2B2B7777",
+"}. c #2C2C2C2C7777",
+"|. c #2E2E2E2E7979",
+" X c #313131317C7C",
+".X c #313131317B7B",
+"XX c #343434347E7E",
+"oX c #3C3C3C3C8686",
+"OX c #3F3F3F3F8989",
+"+X c #414142428B8B",
+"@X c #424242428B8B",
+"#X c #474747479090",
+"$X c #414141418484",
+"%X c #404040408181",
+"&X c #4A4A4A4A9494",
+"*X c #4A4A4A4A9393",
+"=X c #4D4D4D4D9696",
+"-X c #4F4F4F4F9898",
+";X c #505050509898",
+":X c #525252529B9B",
+">X c #555555559E9E",
+",X c #555555559D9D",
+"<X c #57575858A0A0",
+"1X c #58585858A0A0",
+"2X c #575758589F9F",
+"3X c #575757579F9F",
+"4X c #5A5A5A5AA2A2",
+"5X c #5D5D5D5DA5A5",
+"6X c #5F5F5F5FA7A7",
+"7X c #61616262AAAA",
+"8X c #61616161A9A9",
+"9X c #61616262A9A9",
+"0X c #62626262AAAA",
+"qX c #64646464ACAC",
+"wX c #62626262A9A9",
+"eX c #64646464ABAB",
+"rX c #66666666AEAE",
+"tX c #66666666ADAD",
+"yX c #68686868B0B0",
+"uX c #69696969AFAF",
+"iX c #6D6D6D6DB4B4",
+"pX c #6F6F6F6FB5B5",
+"aX c #73737373BABA",
+"sX c #71717171B7B7",
+"dX c #76767676BCBC",
+"fX c #79797979BFBF",
+"gX c #77777777B9B9",
+"hX c #80808080C1C1",
+"jX c #8C8C8C8CC5C5",
+"kX c #90909090C9C9",
+"lX c #98989898CBCB",
+"zX c #A0A0A0A0CFCF",
+"xX c #A5A5A5A5D3D3",
+"cX c #ABABABABD6D6",
+"vX c #C4C4C4C4E3E3",
+"bX c #D1D1D1D1E9E9",
+"nX c #E5E5E5E5F3F3",
+"mX c #9F9FA0A0D1D1",
+"MX c #B6B6C5C5E5E5",
+"NX c #8E8EA6A6D6D6",
+"BX c #9090A7A7D7D7",
+"VX c #9191A9A9D7D7",
+"CX c #9595ABABD8D8",
+"ZX c #9999AFAFDADA",
+"AX c #9D9DB2B2DCDC",
+"SX c #A1A1B5B5DDDD",
+"DX c #A5A5B8B8DEDE",
+"FX c #A9A9BBBBE0E0",
+"GX c #ACACBDBDE1E1",
+"HX c #B0B0C1C1E3E3",
+"JX c #B4B4C4C4E4E4",
+"KX c #B8B8C7C7E5E5",
+"LX c #BBBBC9C9E6E6",
+"PX c #AEAEC0C0E2E2",
+"IX c #B2B2C3C3E3E3",
+"UX c gray100",
+"YX c None",
+/* pixels */
+"YXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X YX",
+"X %X%X%XF.F.F.F.$XD.Z.Z.Z.B.B.B.N.N.=.=.=.*.*.*.&.&. . .| ....} } { { _ _ P P H G G G K S S C o ",
+"X %X%X%X%XF.F.$XD.D.Z.Z.B.A.B.N.N.N.=.=.=.*.*.&.&.%.%.%.| | ..} { { [ _ _ ` U J L G K F Z S C o ",
+"X %X%X%X%XF.F.F.D.D.H.Z.Z.A.B.N.N.N.C.=.=.*.*.&.&. . .%.| | ..} } { [ [ _ P P H G G K F S S C o ",
+"X %XF.%XF.F.$XF.$XZ.Z.Z.B.A.K.Y.7 , - - 1 1 ^.^.~.aX~.q 9 6XY { } { ' _ ] P P H L G K F Z S C o ",
+"X %XF.F.F.F.F.D.D.Z.Z.Z.K.:.1 ; % ; <.hXfXfXdXaXaXsXpXiX!.yXrXo.;.X.[ _ _ ` H H G K K F S S C o ",
+"X F.F.F.F.F.D.D.D.Z.H.Y.1 & & 1.cXmX/.kXfXdXaXaXsXpXiXQ.yXtXeXE.6X5XP.X._ ` J L G G K F Z S C o ",
+"X D.$XF.$XD.D.Z.Z.S.>.% + : vX1.1.cXmX/.dXaXaXsXpXiXQ.uXrXqX8X6X5XT.R.P.X.P ) H G K K S S S m o ",
+"X D.$XD.D.D.D.D.S.6 & $ h bXvXvX1.xX/.kXfXaXsXpXiXQ.yXrXW.E.6X5X4XU.,X:XI.-.` L G G K F Z C C o ",
+"X D.D.D.D.D.Z.H.6 & $ h h h bXvX1.cXmXkX,.dXpXiXQ.yXtXqXwX6X5XT.U.,X:XI.=X*X..` G K K Z S S m o ",
+"X Z.D.Z.H.Z.Z.7 & $ h h nXh bXvX1.cXmXkX,.gXiXQ.uXrXW.E.6X5X4XU.,X:X-XL.J.#XV. .P G F S S C m o ",
+"X Z.Z.Z.H.Z.R % + : bXh h h bXvX1.cX/.kXhX~.Q.yXrXqX9X6X5X4X2X,X:X;X=X*X#XV.M.OX( K Z S S C m o ",
+"X Z.Z.Z.A.A.* & & vXvXbXbXbXvXvX1.xXlXjX^.pXuXrXeXwX6X5X4XU.,X:X-XL.*XG.V.@XOXoXb.( Z S C C V o ",
+"X B.B.B.A.2 % % 1.1.vXvXvXvXvX1.cXzX<.,.gXiXrXW.E.6X5X4XU.,X:XI.=X*X#XV.@XOXn.b.c.x.N S S C m o ",
+"X B.B.B.S.* % ; xX1.1.1.1.1.cXcXzXlXjX^.pXrXeX7X6X5X4XR.,X:X-XL.J.#XV.@XOXn.b.c.XX X$.S C C m o ",
+"X N.N.N.2 O = /.mXxXcXcXcXcXxXzXlXjXhX~.uXeXE.6X5X4XU.,X:X-XL.J.#XV.M.OXn.v.c.z. X|.k.N D V f o ",
+"X N.N.N.- @ > kX<././.mXzXzXlX<.jXhXgXuXeXE.6X5X4X1X,X:XI.L.*X#XV.m.OXn.b.c.z. Xl.j.g./ C m V o ",
+"X N.N.R @ # ,.,.jXkXkX<.kXkXjX,.^.~.uXwXE.6X5X4X1X,X:XI.=XJ.#XC.M.OXn.v.c.z..X|.j.g.d.#.M m B o ",
+"X =.M.< @ * fXfXhXhX,.,.,.hX^.gXpXuXqX9X6X5X4XU.,X:XI.L.*XG.V.+XOXn.b.c.z..X|.[.g.d.a.p.z V B o ",
+"X =.N.- @ NXNXBXBXBXVXCXCXCXCXZXZXZXZXAXAXSXSXSXDXDXDXFXFXFXGXPXPXHXHXIXJXMXMXMXKXKXLXLXLXB d o ",
+"X =.=.* @ 1 dXdXaXaXsXpXiX!.yXrXeXwX6X5X4X<X,X:XI.=X*XG.V.M.OXn.v.c.XX.X|.j.g.d.a.p.i.u.@.f d o ",
+"X *.=.# @ ^.dXaXaXsXpXiXQ.yXrXeXwX6X5XT.U.,X:X-XL.&XG.C.m.OXoXv.c.z..X|.j.g.f.a.p.i.u.t.+.d d o ",
+"X *.*.@ @ NXNXNXBXVXVXCXCXCXCXZXZXZXZXAXAXAXSXSXDXDXDXFXFXGXGXPXPXHXHXJXJXJXMXKXKXKXLXLXLXd n o ",
+"X &.*.@ @ dXaXsXpXiXQ.yXtXeXE.6X5X4XU.>X:XI.L.*XG.V.m.OXoXv.c.z. X|.j.g.d.a.'.i.u.t.r.w.9.d n o ",
+"X &.&.@ @ ~.sXpXiXQ.yXtXW.E.6X5X4X1X,X:XI.=X*X#XC.m.OXn.b.c.z. X|.[.g.f.a.p.i.u.t.r.w.9.0.n a o ",
+"X &.&.@ @ NXNXBXBXVXVXVXCXCXCXZXZXZXZXAXAXSXSXSXDXDXDXFXFXGXGXPXPXHXIXIXJXMXMXKXKXKXLXLXLXn n o ",
+"X %. .# @ q iXQ.yXrXW.0X6X5X4XU.>X:XI.L.*X#XV.@XOXn.b.c.XX.X|.{.g.f.].'.i.u.t.r.w.0._.7.W n a o ",
+"X %. .* # , Q.yXtXeX7X6X5X4XU.,X:X-XL.*X#XV.@XOXn.b.c.XX Xl.{.g.d.a.p.i.u.t.r.e.0._.7.).+.a a o ",
+"X | | - # NXNXNXBXVXVXCXCXCXCXZXZXZXAXAXAXAXSXSXDXDXDXFXFXGXGXPXPXHXHXIXJXMXMXMXKXKXLXLXLXa a o ",
+"X | | < # - rXeX9X6X5X4XU.,X:X-XL.*X#XC.@XOXoXb.c.z. X|.j.h.s.a.'.i.u.t.r.w.9._.7.).5.4.j a p o ",
+"X | } Y # * 9 8X6X5X4X3X,X:XI.=X*XG.V.@XOXn.v.c.XX X|.j.g.f.a.p.i.u.t.r.e.0._.7.).5.4.q.i g p o ",
+"X } } | - # , 6X5X4XR.,X:XI.=X*XG.V.m.OXoXb.c.XX X|.j.g.f.a.p.i.u.t.r.e.9._.7.).5.4.3.~ a s s o ",
+"X } } } 4 # - E 4XU.>X:X-X=XJ.#XV.M.OXoXb.c.XX X|.{.h.d.a.'.i.u.t.r.e.9._.7.).5.4.3.6.z p s s o ",
+"X { { } } - # < U.,X:XI.=X*XG.V.+XOXoXb.c.z. X|.}.g.d.a.'.i.u.t.r.w.0._.7.).5.4.3.2.! g p s s o ",
+"X [ { ' [ 4 * - E :X;XL.J.#XV.m.OXoXb.c.z..X|.j.h.f.a.'.i.u.t.r.w.9._.6.).(.4.3.2.8.k p s s s o ",
+"X [ [ ' _ [ , * , ;XL.J.#XV.@XOXoXv.c.z..X|.{.g.f.a.p.i.u.t.r.w.`._.7.).(.4.3.2.2.^ s p s s s o ",
+"X _ _ _ _ P ] - * 2 *X#XV.m.OXn.v.c.XX X|.j.h.f.a.p.i.u.t.r.w.`._.7.).(.4.3.2.2.Q p s s s b u o ",
+"X ` ` ` ` ` ` 8 - - 7 V.@XOXoXv.c.XX.X|.j.g.d.a.'.i.u.t.r.w.0._.7.).5.4.3.2.2.O.x p s s s u u o ",
+"X P P ) P U U ) 8 - - 7 OXn.v.c.XX X|.j.h.f.a.p.i.u.t.r.w.0._.7.).5.4.3.2.2.O.x s s s s b u u o ",
+"X L L ) H ) L L L 8 1 - 7 b.c.z. X|.j.h.f.a.'.i.u.t.r.w.0._.7.).5.4.3.2.2.Q x p s s s b b u e o ",
+"X L G L G G G G G G G , * 2 T .Xl.j.h.f.a.p.i.u.t.r.e.0._.7.).5.4.3.2.8.^ p p s s s s u u e e o ",
+"X G G G G G G G K K M M 4 , , 3 I g.d.a.p.i.u.t.r.e.`._.7.).5.4.3.7.! k p s p s s s u u u e v o ",
+"X K G K K K K K K Z Z M F F 4 , < 3 I p.i.u.t.r.w.9._.7.).5.4.W ~ z a p p s s b s u u u e e e o ",
+"X F Z F F F F Z Z F F S S S S S w 9 < 2 5 0 l p.e.9.y.a.l ^ j i a p p p s s b b b u e v y r e o ",
+"X S Z Z S Z S Z S S S S S C C C A m d V f m B m B d d n d a a a p s p s s b u u u u e v e r t o ",
+"X S S S S S S S S S S C C C m m A V V B B B d d d n n a a a p p s p s s b u u u e e e c t r t o ",
+"X C C C C C C C C m C A m A m f V f f B d d d n n n a a a a s s s s s u b u u u u v t t r t t o ",
+"YXo o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o YX"
+};
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.m.pm b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.m.pm
new file mode 100644
index 0000000000..e64aa0cc06
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.m.pm
@@ -0,0 +1,295 @@
+/* XPM */
+static char *ProductIcon32[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 257 2",
+" c black",
+". c gray100",
+"X c #69695A5AE8E8",
+"o c #494949499191",
+"O c #E8E8CBCBE0E0",
+"+ c #DDDDB3B3D2D2",
+"@ c #F0F0DDDDEBEB",
+"# c #CDCD9191BEBE",
+"$ c #C8C88B8BBBBB",
+"% c #CACA9898C2C2",
+"& c #C3C38A8ABBBB",
+"* c #BABA8787B9B9",
+"= c #DCDCC4C4DEDE",
+"- c #C5C5A3A3CACA",
+"; c #ADAD8181B8B8",
+": c #A3A37A7AB5B5",
+"> c #E2E2D6D6E9E9",
+", c #B3B39A9AC4C4",
+"< c #EBEBE3E3F0F0",
+"1 c #C9C9B6B6D6D6",
+"2 c #96967676B8B8",
+"3 c #8C8C7171ABAB",
+"4 c #A4A49292BEBE",
+"5 c #7D7D6565A6A6",
+"6 c #83836D6DABAB",
+"7 c #9A9A8787C2C2",
+"8 c #7B7B6464B7B7",
+"9 c #5E5E50509191",
+"0 c #646457579A9A",
+"q c #85857B7BBEBE",
+"w c #7C7C7373B6B6",
+"e c #62625353D5D5",
+"r c #61615353D4D4",
+"t c #60605252D1D1",
+"y c #5F5F5252D0D0",
+"u c #5F5F5151CFCF",
+"i c #60605353D2D2",
+"p c #5F5F5252CFCF",
+"a c #5E5E5151CDCD",
+"s c #5C5C4F4FC7C7",
+"d c #5F5F5252CDCD",
+"f c #5E5E5151CBCB",
+"g c #5B5B4F4FC4C4",
+"h c #5A5A4E4EC1C1",
+"j c #71716969B0B0",
+"k c #48483E3EADAD",
+"l c #5D5D5151CDCD",
+"z c #5C5C5050C9C9",
+"x c #5D5D5151CBCB",
+"c c #5C5C5050C7C7",
+"v c #5B5B4F4FC6C6",
+"b c #5B5B5050C6C6",
+"n c #59594E4EC1C1",
+"m c #58584D4DBFBF",
+"M c #59594F4FC2C2",
+"N c #5A5A4F4FC2C2",
+"B c #58584D4DBCBC",
+"V c #57574D4DBCBC",
+"C c #59594E4EBEBE",
+"Z c #58584E4EBDBD",
+"A c #58584D4DBBBB",
+"S c #57574D4DBABA",
+"D c #56564D4DB9B9",
+"F c #56564C4CB6B6",
+"G c #55554C4CB6B6",
+"H c #54544B4BB4B4",
+"J c #54544B4BB1B1",
+"K c #53534B4BB1B1",
+"L c #52524A4AAEAE",
+"P c #51514949ACAC",
+"I c #51514949ABAB",
+"U c #474741418787",
+"Y c #32322C2C8F8F",
+"T c #2B2B25257777",
+"R c #36362F2F9696",
+"E c #2B2B26266E6E",
+"W c #4D4D4545ACAC",
+"Q c #55554D4DB8B8",
+"! c #54544C4CB4B4",
+"~ c #54544C4CB3B3",
+"^ c #51514A4AACAC",
+"/ c #51514A4AABAB",
+"( c #50504949A9A9",
+") c #4F4F4949A6A6",
+"_ c #4C4C4747A1A1",
+"` c #4E4E4848A3A3",
+"' c #4D4D4848A1A1",
+"] c #4B4B46469C9C",
+"[ c #4C4C47479E9E",
+"{ c #51514C4CA6A6",
+"} c #A9A9A6A6D5D5",
+"| c #1E1E1A1A6666",
+" . c #292925258181",
+".. c #3D3D39399292",
+"X. c #4A4A46469B9B",
+"o. c #53534E4EABAB",
+"O. c #494945459797",
+"+. c #4A4A46469999",
+"@. c #474744449494",
+"#. c #484845459494",
+"$. c #474744449292",
+"%. c #464643439090",
+"&. c #464642428D8D",
+"*. c #54545050A9A9",
+"=. c #474744448F8F",
+"-. c #4C4C49499999",
+";. c #57575454A6A6",
+":. c #5B5B5757AAAA",
+">. c #545451519B9B",
+",. c #5A5A57579C9C",
+"<. c #65656262A7A7",
+"1. c #68686666A2A2",
+"2. c #CACAC9C9E5E5",
+"3. c #050504045151",
+"4. c #080807075454",
+"5. c #0A0A09095858",
+"6. c #0C0C0A0A5858",
+"7. c #10100E0E6262",
+"8. c #0E0E0D0D5A5A",
+"9. c #121211115D5D",
+"0. c #131312125D5D",
+"q. c #161615156161",
+"w. c #171716166161",
+"e. c #1A1A19196565",
+"r. c #20201E1E7070",
+"t. c #1E1E1D1D6969",
+"y. c #2A2A29297676",
+"u. c #2F2F2D2D7676",
+"i. c #3A3A39398787",
+"p. c #3A3A39398383",
+"a. c #3F3F3E3E8888",
+"s. c #414140408989",
+"d. c #454543438D8D",
+"f. c #444442428B8B",
+"g. c #444443438C8C",
+"h. c #434342428A8A",
+"j. c #434341418888",
+"k. c #434342428989",
+"l. c #424241418787",
+"z. c #434342428787",
+"x. c #424241418585",
+"c. c #41413F3F8181",
+"v. c #414140408282",
+"b. c #484846468D8D",
+"n. c #494948489090",
+"m. c #4B4B4A4A9191",
+"M. c #4B4B49498E8E",
+"N. c #525251519A9A",
+"B. c #525251519999",
+"V. c #565654549A9A",
+"C. c #545453539494",
+"Z. c #60605F5FA7A7",
+"A. c #64646363ABAB",
+"S. c #5A5A59599797",
+"D. c #68686767ADAD",
+"F. c #6C6C6B6BB2B2",
+"G. c #5E5E5D5D9A9A",
+"H. c #76767575BABA",
+"J. c #78787777BBBB",
+"K. c #76767474B5B5",
+"L. c #7E7E7D7DBABA",
+"P. c #A5A5A4A4D2D2",
+"I. c #040404045252",
+"U. c #070707075454",
+"Y. c #070708085353",
+"T. c #080808085454",
+"R. c #0A0A0B0B5757",
+"E. c #0E0E0E0E5A5A",
+"W. c #111112125E5E",
+"Q. c #111111115E5E",
+"!. c #111111115D5D",
+"~. c #111112125D5D",
+"^. c #161616166868",
+"/. c #151516166161",
+"(. c #151515156161",
+"). c #19191A1A6565",
+"_. c #191919196565",
+"`. c #1A1A1A1A6464",
+"'. c #1D1D1E1E6969",
+"]. c #1E1E1E1E6969",
+"[. c #222222226D6D",
+"{. c #272727277171",
+"}. c #2B2B2C2C7676",
+"|. c #2B2B2B2B7676",
+" X c #2B2B2B2B7575",
+".X c #303030307A7A",
+"XX c #303030307979",
+"oX c #353535357F7F",
+"OX c #393939398383",
+"+X c #3A3A3A3A8383",
+"@X c #3F3F3F3F8787",
+"#X c #434343438C8C",
+"$X c #434344448C8C",
+"%X c #424242428686",
+"&X c #414141418484",
+"*X c #484848489191",
+"=X c #484849499090",
+"-X c #4D4D4D4D9696",
+";X c #515151519D9D",
+":X c #4D4D4D4D9595",
+">X c #515152529A9A",
+",X c #515152529999",
+"<X c #525252529A9A",
+"1X c #525252529999",
+"2X c #565657579E9E",
+"3X c #575757579D9D",
+"4X c #5B5B5B5BA2A2",
+"5X c #5F5F6060A6A6",
+"6X c #5F5F5F5FA6A6",
+"7X c #63636464AAAA",
+"8X c #64646464AAAA",
+"9X c #67676767AEAE",
+"0X c #67676868AEAE",
+"qX c #68686868AEAE",
+"wX c #6F6F6F6FB5B5",
+"eX c #6C6C6C6CB1B1",
+"rX c #73737373B8B8",
+"tX c #82828282BEBE",
+"yX c #86868686C2C2",
+"uX c #89898989C4C4",
+"iX c #98989898CBCB",
+"pX c #A0A0A0A0CFCF",
+"aX c #A9A9A9A9D5D5",
+"sX c #B0B0B0B0D8D8",
+"dX c #B8B8B8B8DDDD",
+"fX c #BDBDBDBDE0E0",
+"gX c #D9D9D9D9EDED",
+"hX c #90909191C6C6",
+"jX c #71718989BCBC",
+"kX c #73738B8BBFBF",
+"lX c #72728989BCBC",
+"zX c #79799090C3C3",
+"xX c #7E7E9595C7C7",
+"cX c #81819898CACA",
+"vX c #84849B9BCCCC",
+"bX c #8C8CA3A3D4D4",
+"nX c #71718A8ABCBC",
+"mX c #73738B8BBDBD",
+"MX c #75758D8DBFBF",
+"NX c #74748C8CBEBE",
+"BX c #76768E8EC0C0",
+"VX c #7C7C9494C6C6",
+"CX c #7B7B9393C4C4",
+"ZX c #7F7F9797C9C9",
+"AX c #82829A9ACBCB",
+"SX c #85859E9ECECE",
+"DX c #8888A0A0D1D1",
+"FX c #87879F9FD0D0",
+"GX c #8B8BA4A4D4D4",
+"HX c #8B8BA3A3D4D4",
+"JX c #8989A1A1D2D2",
+"KX c #8D8DA5A5D6D6",
+"LX c #8B8BA3A3D3D3",
+"PX c #8E8EA6A6D6D6",
+"IX c #8D8DA5A5D5D5",
+"UX c gray100",
+"YX c None",
+/* pixels */
+"YXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X YX",
+"X v.v.v.v.&Xl.z.k.&.d.%.$.@.O.+.] [ _ ` ) ( ^ L K ! G D V m m o ",
+"X c.c.c.v.&Xx.z.f.f.d.%.$.#.O.+.X.[ _ ` ) ( / L K H F D V C n o ",
+"X v.c.v.v.x.x.z.k.f.n.V.,.>.-.+.] [ _ ` ) ( ^ L K H G D V C h o ",
+"X &Xv.&Xx.x.l.j.M.1.4 - - , 7 q J.H.K.j :.*.P L K H F S B C n o ",
+"X x.&Xx.x.z.j.S., = = 1 } iXuXH.rXwXF.qX7XZ.;.o.J ! F S B m n o ",
+"X x.l.z.%Xz.G.1 @ > 2.dXaXiXuXrXwXF.qX8X5X4X2X;X{ H F S V C n o ",
+"X z.j.j.j.C.1 @ < gX2.fXaXpXuXwXeX9X7X5X4X2XN.:X*X_ D S Z m h o ",
+"X k.k.h.b., O > gXgX2.dXaXiXyXF.D.A.Z.4X3X1X:Xn.g.a._ V B m N o ",
+"X f.f.f.3 + = 2.2.2.fXsXpXhXtXD.8XZ.4X2X1X:X*X$X@Xp.i.W C n N o ",
+"X d.&.%.% + 1 dXdXdXsXP.iXyXK.8X5X4X2X>X:X*Xg.a.+XoX.X..m n N o ",
+"X %.=.5 % - P.} aXP.pXiXyXK.D.Z.4X3X1X-Xn.$X@X+XoX.X Xy.W h g o ",
+"X $.$.: # PXIXGXGXLXJXFXFXSXvXAXcXZXxXVXCXzXzXBXMXkXmXnXjXh g o ",
+"X #.@.* $ 7 yXuXyXtXL.K.D.6X4X2X1X:Xo g.a.OXoX.X|.{.[.t. .g v o ",
+"X O.#.$ $ q H.rXwXF.0XA.6X4X2X1X:Xo $Xa.p.oX.X|.{.[.'.`.r.g b o ",
+"X X.+.$ $ PXKXbXbXLXJXDXFXSXvXAXcXZXxXCXCXzXBXBXMXNXmXlXjXb c o ",
+"X ] ] $ $ H.wXF.0X7X6X4X2X<X:Xo #Xa.+XoX.X|.{.[.].)./.~.Q.c z o ",
+"X [ [ & & w F.qX7XZ.4X2X,X:Xo #Xa.+XoX.X}.{.[.'.e./.9.E.^.c z o ",
+"X ' _ * & PXKXbXHXLXJXDXSXSXvXAXcXZXxXVXCXzXzXBXMXNXkXjXjXz x o ",
+"X ` ` : & 2 8XZ.4X2XB.:X*Xg.@Xp.oX.X|.{.[.].).q.!.E.R.U.Y z f o ",
+"X ) ) 5 & ; <.4X2X>X:Xo #Xa.+XoXXX|.{.[.t._.q.~.E.R.4.5.k x a o ",
+"X ( ( I ; * 6 2X>X:X=X$X@X+XoX.X|.{.[.t.e./.W.E.R.Y.3. .z a a o ",
+"X I ^ / 8 * : 0 :X*X#X@X+XoX.X|.{.[.'._.(.~.E.R.T.3.7.k x a p o ",
+"X L L L ^ 2 * 3 m.$Xa.p.oX.X}.{.[.t.).(.~.E.6.T.3.I.R x a a y o ",
+"X J K K K K 2 * 5 s.OXoX.X}.{.[.'._.(.9.8.R.4.3.I.Y x l a p t o ",
+"X ~ H H ! ! ! 2 ; 5 U XX}.{.[.].e.(.W.E.R.U.3.7.R x l u u y t o ",
+"X G F G G G Q Q 8 : 3 9 u.[.]._./.Q.E.R.T.6. .k x a a u t t t o ",
+"X D S D S D S S S V 8 2 6 9 c.E w.0.| T Y k z z a a p t t i r o ",
+"X A V B V V V B B m m n n h h g g g c z z z l l d p y t i r r o ",
+"X m C C C C C C C n n n M N g g b c z z x a a a u y t t r r e o ",
+"X n n n n n h h h N N g g v b s z z z x a p p u t t r r r e e o ",
+"YXo o o o o o o o o o o o o o o o o o o o o o o o o o o o o o YX"
+};
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.s.pm b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.s.pm
new file mode 100644
index 0000000000..e2b9379f3a
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.s.pm
@@ -0,0 +1,287 @@
+/* XPM */
+static char *ProductIcon24[] = {
+/* columns rows colors chars-per-pixel */
+"24 24 257 2",
+" c black",
+". c gray100",
+"X c #69695A5AE8E8",
+"o c #494949499191",
+"O c #F1F1DFDFECEC",
+"+ c #D7D7ACACCDCD",
+"@ c #DFDFBBBBD6D6",
+"# c #E2E2C4C4DBDB",
+"$ c #CECE9C9CC4C4",
+"% c #C4C48B8BBABA",
+"& c #C2C28A8ABABA",
+"* c #C4C48E8EBCBC",
+"= c #BFBF8A8AB9B9",
+"- c #EBEBD9D9E9E9",
+"; c #BFBF8888B9B9",
+": c #D8D8B9B9D6D6",
+"> c #B9B98686B9B9",
+", c #B8B88989B9B9",
+"< c #BBBB9393BFBF",
+"1 c #A9A97B7BB2B2",
+"2 c #E4E4D4D4E7E7",
+"3 c #C6C6AFAFCECE",
+"4 c #A6A68080B6B6",
+"5 c #A2A27E7EB4B4",
+"6 c #9E9E7E7EB1B1",
+"7 c #ABAB9090BBBB",
+"8 c #B7B7A0A0C5C5",
+"9 c #9D9D7C7CB2B2",
+"0 c #AAAA8B8BBEBE",
+"q c #AAAA9090BCBC",
+"w c #8C8C6B6BABAB",
+"e c #90907070B1B1",
+"r c #C4C4B3B3D7D7",
+"t c #CDCDBFBFDDDD",
+"y c #EAEAE4E4F1F1",
+"u c #88886A6AADAD",
+"i c #9E9E8585C1C1",
+"p c #84846A6AAFAF",
+"a c #81816B6BAAAA",
+"s c #D7D7CFCFE6E6",
+"d c #81816969B1B1",
+"f c #78786363A5A5",
+"g c #6E6E5D5D9C9C",
+"h c #717160609D9D",
+"j c #83837474AAAA",
+"k c #6A6A5757A3A3",
+"l c #6E6E5E5EA0A0",
+"z c #5E5E50509292",
+"x c #88887B7BBCBC",
+"c c #68685858ABAB",
+"v c #5A5A4D4DA2A2",
+"b c #7D7D7373B4B4",
+"n c #5A5A4E4EA6A6",
+"m c #5F5F56569595",
+"M c #56564A4ABBBB",
+"N c #56564949B9B9",
+"B c #55554949B8B8",
+"V c #53534848B3B3",
+"C c #54544949B4B4",
+"Z c #52524747B0B0",
+"A c #52524747AFAF",
+"S c #5B5B53539393",
+"D c #3E3E36369797",
+"F c #49494040A6A6",
+"G c #48484040A5A5",
+"H c #55554A4ABABA",
+"J c #54544949B7B7",
+"K c #53534949B4B4",
+"L c #51514747AFAF",
+"P c #52524848B1B1",
+"I c #51514848B0B0",
+"U c #51514848AEAE",
+"Y c #51514747ADAD",
+"T c #51514848ADAD",
+"R c #4F4F4747ABAB",
+"E c #50504747ABAB",
+"W c #50504646A9A9",
+"Q c #4F4F4646A8A8",
+"! c #4E4E4646A7A7",
+"~ c #4E4E4545A4A4",
+"^ c #4D4D4545A4A4",
+"/ c #4E4E4646A5A5",
+"( c #4D4D4545A1A1",
+") c #3D3D36367E7E",
+"_ c #4B4B44449C9C",
+"` c #2A2A25257F7F",
+"' c #3E3E37379898",
+"] c #474740409C9C",
+"[ c #4D4D4646A4A4",
+"{ c #4C4C4545A2A2",
+"} c #4D4D4646A2A2",
+"| c #4D4D4646A1A1",
+" . c #4B4B45459F9F",
+".. c #4C4C45459F9F",
+"X. c #4C4C46469F9F",
+"o. c #4B4B45459D9D",
+"O. c #494943439898",
+"+. c #494944449A9A",
+"@. c #4A4A45459A9A",
+"#. c #494944449898",
+"$. c #484843439696",
+"%. c #494944449797",
+"&. c #484843439595",
+"*. c #51514C4CA1A1",
+"=. c #6B6B6767AEAE",
+"-. c #95959191C9C9",
+";. c #23231F1F7676",
+":. c #21211E1E7070",
+">. c #292925257F7F",
+",. c #252521217070",
+"<. c #242421216D6D",
+"1. c #2B2B27278080",
+"2. c #393935358C8C",
+"3. c #444440409494",
+"4. c #3B3B38388282",
+"5. c #474743439494",
+"6. c #484844449595",
+"7. c #474743439393",
+"8. c #474744449393",
+"9. c #464643439191",
+"0. c #454542428F8F",
+"q. c #4A4A47479898",
+"w. c #464643438F8F",
+"e. c #454542428D8D",
+"r. c #444441418B8B",
+"t. c #484844449191",
+"y. c #444441418989",
+"u. c #494946469090",
+"i. c #4C4C48489393",
+"p. c #51514E4E9E9E",
+"a. c #73737070B6B6",
+"s. c #77777474BBBB",
+"d. c #A0A09E9ED1D1",
+"f. c #D6D6D5D5EBEB",
+"g. c #0E0E0D0D5A5A",
+"h. c #11110F0F5E5E",
+"j. c #121211115E5E",
+"k. c #131312125F5F",
+"l. c #171716166363",
+"z. c #1D1D1B1B6868",
+"x. c #1D1D1C1C6868",
+"c. c #222221216E6E",
+"v. c #222221216D6D",
+"b. c #282827277474",
+"n. c #282827277373",
+"m. c #292928287373",
+"M. c #2F2F2E2E7979",
+"N. c #353534347F7F",
+"B. c #363635358181",
+"V. c #3C3C3B3B8585",
+"C. c #424241418C8C",
+"Z. c #424241418B8B",
+"A. c #444442428B8B",
+"S. c #434341418989",
+"D. c #434342428989",
+"F. c #424241418787",
+"G. c #414140408484",
+"H. c #474745458D8D",
+"J. c #434342428787",
+"K. c #424241418585",
+"L. c #414140408282",
+"P. c #494948489191",
+"I. c #4F4F4E4E9797",
+"U. c #59595757A6A6",
+"Y. c #5F5F5D5DA4A4",
+"T. c #6C6C6B6BB3B3",
+"R. c #7C7C7B7BB9B9",
+"E. c #A8A8A7A7D3D3",
+"W. c #0D0D0D0D5A5A",
+"Q. c #1F1F1F1F6C6C",
+"!. c #222222226E6E",
+"~. c #3B3B3B3B8585",
+"^. c #414141418C8C",
+"/. c #414141418B8B",
+"(. c #424242428B8B",
+"). c #484848489292",
+"_. c #404040408181",
+"`. c #4E4E4E4E9898",
+"'. c #555555559E9E",
+"]. c #555555559D9D",
+"[. c #5B5B5B5BA3A3",
+"{. c #5C5C5C5CA3A3",
+"}. c #61616161A9A9",
+"|. c #66666666AEAE",
+" X c #66666666ADAD",
+".X c #6B6B6B6BB2B2",
+"XX c #70707070B7B7",
+"oX c #6A6A6A6AADAD",
+"OX c #74747474BBBB",
+"+X c #89898989C2C2",
+"@X c #90909090C8C8",
+"#X c #8F8F8F8FC6C6",
+"$X c #92929292C6C6",
+"%X c #9F9F9F9FCFCF",
+"&X c #A5A5A5A5D2D2",
+"*X c #B5B5B5B5DBDB",
+"=X c #B8B8B8B8DEDE",
+"-X c #B7B7B7B7DCDC",
+";X c #BBBBBBBBDEDE",
+":X c #BDBDBDBDDFDF",
+">X c #C9C9C9C9E5E5",
+",X c #D1D1D1D1EAEA",
+"<X c #7C7C7D7DBABA",
+"1X c #89898A8AC7C7",
+"2X c #8F8F9090C7C7",
+"3X c #A3A3A4A4D3D3",
+"4X c #A2A2B5B5DEDE",
+"5X c #ADADBDBDE1E1",
+"6X c #B9B9C7C7E5E5",
+"7X c #BABAC8C8E6E6",
+"8X c #8E8EA6A6D6D6",
+"9X c #9090A7A7D7D7",
+"0X c #9191A9A9D7D7",
+"qX c #9292A9A9D8D8",
+"wX c #9494ABABD8D8",
+"eX c #9898AEAED9D9",
+"rX c #9B9BB0B0DADA",
+"tX c #9E9EB3B3DCDC",
+"yX c #A1A1B5B5DDDD",
+"uX c #A5A5B8B8DEDE",
+"iX c #A8A8BBBBE0E0",
+"pX c #ACACBEBEE1E1",
+"aX c #AFAFC0C0E3E3",
+"sX c #B3B3C3C3E4E4",
+"dX c #B2B2C2C2E3E3",
+"fX c #B5B5C5C5E5E5",
+"gX c #B8B8C7C7E6E6",
+"hX c #B6B6C5C5E4E4",
+"jX c #9797AEAED9D9",
+"kX c #A1A1B6B6DDDD",
+"lX c #A8A8BBBBDFDF",
+"zX c gray100",
+"xX c black",
+"cX c black",
+"vX c black",
+"bX c black",
+"nX c black",
+"mX c black",
+"MX c black",
+"NX c black",
+"BX c black",
+"VX c black",
+"CX c black",
+"ZX c black",
+"AX c black",
+"SX c black",
+"DX c black",
+"FX c black",
+"GX c black",
+"HX c black",
+"JX c black",
+"KX c black",
+"LX c black",
+"PX c black",
+"IX c black",
+"UX c black",
+"YX c None",
+/* pixels */
+"YXX X X X X X X X X X X X X X X X X X X X X X YX",
+"X _._.L.G.K.F.D.A.e.0.9.&.$.%.+._ ..{ ^ ! W E o ",
+"X L.L.L.G.F.F.D.r.e.0.9.7.&.O.@.o. .{ ~ ! Q E o ",
+"X L.G.G.K.F.S.y.r.e.w.9.5.$.+.@.o...( ~ ! W E o ",
+"X G.K.K.F.J.D.h 6 0 i x s.a.=.U.*...} ~ ! W E o ",
+"X K.F.F.F.S 7 : r d.1XOXXX.X|.}.[.p.| / ! W E o ",
+"X F.F.F.m 3 - s =X3X@XXXT. X}.[.].I.q.{ Q E T o ",
+"X S.D.H.8 O y ,X;X&X2X.X|.}.[.].I.P.C.3.Q E Y o ",
+"X A.r.j # 2 f.>X*X%X+X|.}.[.].I.P.^.~.B.] E Y o ",
+"X e.u.q @ t :X-XE.$X<X}.[.].`.P.Z.V.N.M.2.Y L o ",
+"X 0.i.< + 8X8XqXwXeXrXtX4XuXlXpXaXsXfXgX7XY A o ",
+"X 9.t.* $ -.#X+XR.oX{.'.`.P.(.~.N.M.m.c.Q.T Z o ",
+"X 8.7.; % 8X9X0XwXeXrXtXyXuXiXpXaXdXfXgX7XL Z o ",
+"X 6.&.1 & b X}.[.'.I.P./.~.N.M.n.!.x.l.:.I P o ",
+"X #.#.w = 8X9XqXwXjXrXtXkXuXiX5XaXsXhX6X7XP V o ",
+"X +.+.k > 5 Y.].I.)./.~.N.M.b.v.x.l.k.h.' V C o ",
+"X o.o.o.u , a I.).Z.V.N.M.n.c.z.l.j.W.` P V C o ",
+"X .. .X.v e 4 l ^.V.N.M.m.!.x.l.j.g.;.F V C J o ",
+"X ( | ( ( n p 9 g 4.M.n.c.x.l.j.h.>.G V K C J o ",
+"X ~ [ [ ^ / / c d f z ) <.z.,.1.D P V C C B B o ",
+"X ! Q ! Q Q Q Q W E E Y T A Z P V V K C J B B o ",
+"X Q W Q W R W E E T T T L Z P V V K J J J B N o ",
+"X R E E E E E Y Y U L Z P P P C V J J B B H M o ",
+"YXo o o o o o o o o o o o o o o o o o o o o o YX"
+};
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.t.pm b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.t.pm
new file mode 100644
index 0000000000..3f6b21f428
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/Qpidmc.t.pm
@@ -0,0 +1,279 @@
+/* XPM */
+static char *ProductIcon16[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 257 2",
+" c black",
+". c gray100",
+"X c #E2E2C0C0D9D9",
+"o c #EDEDD9D9E8E8",
+"O c #D5D5ABABCDCD",
+"+ c #E2E2C3C3DCDC",
+"@ c #C5C58E8EBCBC",
+"# c #D4D4ABABCDCD",
+"$ c #CACA9F9FC6C6",
+"% c #D6D6B4B4D3D3",
+"& c #CACAA0A0C8C8",
+"* c #C6C69D9DC6C6",
+"= c #C5C59F9FC8C8",
+"- c #CCCCACACCECE",
+"; c #CCCCB0B0D3D3",
+": c #A6A68383B3B3",
+"> c #BABA9A9AC6C6",
+", c #B7B79A9AC2C2",
+"< c #E3E3D5D5E9E9",
+"1 c #B0B08E8EC0C0",
+"2 c #9F9F8080B8B8",
+"3 c #AFAF9898C1C1",
+"4 c #DBDBCFCFE5E5",
+"5 c #96967878B2B2",
+"6 c #9A9A7E7EBABA",
+"7 c #8E8E7878AFAF",
+"8 c #91917F7FBDBD",
+"9 c #D3D3CCCCE4E4",
+"0 c #535348488B8B",
+"q c #69695A5AE8E8",
+"w c #55554949B9B9",
+"e c #55554949B8B8",
+"r c #54544848B6B6",
+"t c #53534848B4B4",
+"y c #54544848B4B4",
+"u c #53534848B3B3",
+"i c #53534848B2B2",
+"p c #52524747AFAF",
+"a c #53534848B1B1",
+"s c #54544949B8B8",
+"d c #54544949B6B6",
+"f c #52524848B3B3",
+"g c #52524848B2B2",
+"h c #53534949B3B3",
+"j c #52524848B1B1",
+"k c #52524848B0B0",
+"l c #51514747AEAE",
+"z c #52524848AFAF",
+"x c #51514848AEAE",
+"c c #51514747ADAD",
+"v c #51514747ACAC",
+"b c #4F4F4646AAAA",
+"n c #51514848ADAD",
+"m c #50504747ABAB",
+"M c #50504747AAAA",
+"N c #4F4F4646A8A8",
+"B c #50504747A9A9",
+"V c #4E4E4646A7A7",
+"C c #4E4E4646A6A6",
+"Z c #4F4F4646A6A6",
+"A c #4F4F4747A7A7",
+"S c #4D4D4545A3A3",
+"D c #4D4D4545A2A2",
+"F c #4C4C45459E9E",
+"G c #74746E6EB3B3",
+"H c #2E2E29298383",
+"J c #383832329090",
+"K c #464640409999",
+"L c #4D4D4646A2A2",
+"P c #4E4E4747A3A3",
+"I c #4B4B45459F9F",
+"U c #4B4B45459E9E",
+"Y c #4C4C46469F9F",
+"T c #4A4A44449B9B",
+"R c #4A4A44449A9A",
+"E c #494943439797",
+"W c #494944449797",
+"Q c #484843439494",
+"! c #78787474B8B8",
+"~ c #272724247878",
+"^ c #2D2D2A2A7575",
+"/ c #484844449797",
+"( c #474743439393",
+") c #454542429090",
+"_ c #4B4B48489A9A",
+"` c #464643438F8F",
+"' c #464643438E8E",
+"] c #454542428C8C",
+"[ c #51514D4DA0A0",
+"{ c #5C5C5959A5A5",
+"} c #535350509090",
+"| c #C8C8C7C7E3E3",
+" . c #121211115D5D",
+".. c #1A1A19196565",
+"X. c #242422226D6D",
+"o. c #3F3F3E3E8888",
+"O. c #444442428D8D",
+"+. c #444442428989",
+"@. c #424241418787",
+"#. c #454543438A8A",
+"$. c #434342428888",
+"%. c #424241418686",
+"&. c #414140408484",
+"*. c #414140408383",
+"=. c #424240408383",
+"-. c #414140408282",
+";. c #474746468D8D",
+":. c #464644448989",
+">. c #525251519999",
+",. c #64646363AAAA",
+"<. c #61615F5FA2A2",
+"1. c #6E6E6C6CB2B2",
+"2. c #A5A5A4A4D3D3",
+"3. c #B0B0AFAFD6D6",
+"4. c #111112125D5D",
+"5. c #19191A1A6565",
+"6. c #1E1E1E1E6C6C",
+"7. c #222222226D6D",
+"8. c #2B2B2B2B7676",
+"9. c #2B2B2B2B7575",
+"0. c #2B2B2C2C7575",
+"q. c #343435357F7F",
+"w. c #343435357E7E",
+"e. c #353535357F7F",
+"r. c #3E3E3E3E8888",
+"t. c #3E3E3E3E8787",
+"y. c #414141418484",
+"u. c #404040408282",
+"i. c #484849499191",
+"p. c #494949499191",
+"a. c #484848489090",
+"s. c #484849499090",
+"d. c #404040408080",
+"f. c #525252529A9A",
+"g. c #525252529999",
+"h. c #5B5B5B5BA3A3",
+"j. c #5B5B5B5BA2A2",
+"k. c #64646464ABAB",
+"l. c #63636464AAAA",
+"z. c #6B6B6C6CB2B2",
+"x. c #72727373B9B9",
+"c. c #71717171A4A4",
+"v. c #78787878ABAB",
+"b. c #7F7F7F7FB1B1",
+"n. c #8C8C8C8CBEBE",
+"m. c #A5A5A5A5D2D2",
+"M. c #C9C9C9C9E5E5",
+"N. c #85858686B7B7",
+"B. c #91919292C4C4",
+"V. c #71718989BCBC",
+"C. c #73738B8BBEBE",
+"Z. c #75758D8DC0C0",
+"A. c #78789090C3C3",
+"S. c #7A7A9292C5C5",
+"D. c #71718A8ABDBD",
+"F. c #76768E8EC0C0",
+"G. c #78789090C2C2",
+"H. c #7B7B9393C5C5",
+"J. c #7D7D9595C7C7",
+"K. c #80809999CACA",
+"L. c #7E7E9696C7C7",
+"P. c #83839B9BCDCD",
+"I. c #83839B9BCCCC",
+"U. c #86869E9ECFCF",
+"Y. c #8888A1A1D1D1",
+"T. c #8A8AA2A2D3D3",
+"R. c #8989A1A1D1D1",
+"E. c #8B8BA3A3D3D3",
+"W. c gray100",
+"Q. c black",
+"!. c black",
+"~. c black",
+"^. c black",
+"/. c black",
+"(. c black",
+"). c black",
+"_. c black",
+"`. c black",
+"'. c black",
+"]. c black",
+"[. c black",
+"{. c black",
+"}. c black",
+"|. c black",
+" X c black",
+".X c black",
+"XX c black",
+"oX c black",
+"OX c black",
+"+X c black",
+"@X c black",
+"#X c black",
+"$X c black",
+"%X c black",
+"&X c black",
+"*X c black",
+"=X c black",
+"-X c black",
+";X c black",
+":X c black",
+">X c black",
+",X c black",
+"<X c black",
+"1X c black",
+"2X c black",
+"3X c black",
+"4X c black",
+"5X c black",
+"6X c black",
+"7X c black",
+"8X c black",
+"9X c black",
+"0X c black",
+"qX c black",
+"wX c black",
+"eX c black",
+"rX c black",
+"tX c black",
+"yX c black",
+"uX c black",
+"iX c black",
+"pX c black",
+"aX c black",
+"sX c black",
+"dX c black",
+"fX c black",
+"gX c black",
+"hX c black",
+"jX c black",
+"kX c black",
+"lX c black",
+"zX c black",
+"xX c black",
+"cX c black",
+"vX c black",
+"bX c black",
+"nX c black",
+"mX c black",
+"MX c black",
+"NX c black",
+"BX c black",
+"VX c black",
+"CX c black",
+"ZX c black",
+"AX c black",
+"SX c black",
+"DX c black",
+"FX c black",
+"GX c black",
+"HX c black",
+"JX c black",
+"KX c black",
+"LX c black",
+"PX c black",
+"IX c black",
+"UX c black",
+"YX c None",
+/* pixels */
+"YXq q q q q q q q q q q q q q YX",
+"q d.-.y.%.+.O.` ( E R U D C B p.",
+"q u.*.&.$.#.] ) Q W T F L V M p.",
+"q =.y.} , % ; 8 ! 1.{ [ S Z b p.",
+"q @.:.- o 4 2.x.z.,.j.>._ A m p.",
+"q +.: X < M.m.z.l.j.g.s.r.K v p.",
+"q ' $ + 9 | 3.B.n.N.b.v.c.<.n p.",
+"q ` O T.Y.U.P.K.L.S.G.F.C.D.l p.",
+"q ( # @ G k.h.g.i.t.e.9.7.6.z p.",
+"q / * E.R.U.I.K.J.H.A.Z.C.V.a p.",
+"q T 2 & 5 f.a.o.q.8.7...4.J u p.",
+"q I Y 1 = 7 ;.w.0.7.5. .H f y p.",
+"q L D P 6 > 3 0 ^ X.~ J i t d p.",
+"q C C V A N M m n p k g y r e p.",
+"q M b M m m c x p j h y d s w p.",
+"YXp.p.p.p.p.p.p.p.p.p.p.p.p.p.YX"
+};
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc
new file mode 100755
index 0000000000..b88ff49e8e
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc
Binary files differ
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc.ini b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc.ini
new file mode 100644
index 0000000000..cfa715e5a8
--- /dev/null
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/solaris-gtk-sparc/qpidmc.ini
@@ -0,0 +1,40 @@
+###############################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+###############################################################################
+-startup
+plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar
+--launcher.library
+plugins/org.eclipse.equinox.launcher.gtk.solaris.sparc_1.0.101.R34x_v20080731
+-vmargs
+-Xms40m
+-Xmx256m
+-XX:MaxPermSize=256m
+-Dosgi.requiredJavaVersion=1.5
+-Declipse.consoleLog=true
+
+#===============================================
+# SSL trust store configuration options.
+#===============================================
+
+# Uncomment lines below to specify custom truststore for server SSL
+# certificate verification, eg when using self-signed server certs.
+#
+#-Djavax.net.ssl.trustStore=<path.to.truststore>
+#-Djavax.net.ssl.trustStorePassword=<truststore.password>
+
+
diff --git a/qpid/java/management/eclipse-plugin/src/main/resources/win32-win32-x86/Configuration/config.ini b/qpid/java/management/eclipse-plugin/src/main/resources/win32-win32-x86/Configuration/config.ini
index d00d756706..a61bea2fa8 100644
--- a/qpid/java/management/eclipse-plugin/src/main/resources/win32-win32-x86/Configuration/config.ini
+++ b/qpid/java/management/eclipse-plugin/src/main/resources/win32-win32-x86/Configuration/config.ini
@@ -45,4 +45,5 @@ org.eclipse.ui, \
org.eclipse.ui.forms, \
org.eclipse.ui.workbench, \
org.eclipse.equinox.launcher, \
-org.eclipse.equinox.launcher.win32.win32.x86
+org.eclipse.equinox.launcher.win32.win32.x86, \
+org.apache.commons.codec