package com.tibco.as.spacebar.ui; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.osgi.util.NLS; import com.tibco.as.spacebar.ui.handlers.metaspace.MetaspaceRule; import com.tibco.as.spacebar.ui.model.Connection; import com.tibco.as.spacebar.ui.model.Metaspace; import com.tibco.as.util.Utils; public class ConnectJob extends Job { private Metaspace metaspace; public ConnectJob(Metaspace metaspace) { super("Connect metaspace"); setUser(true); setRule(new MetaspaceRule(metaspace)); this.metaspace = metaspace; } @Override public IStatus run(IProgressMonitor monitor) { String metaspaceName = Utils.getMetaspaceName(metaspace .getMetaspaceName()); monitor.beginTask( NLS.bind("Connecting to metaspace ''{0}''", metaspaceName), IProgressMonitor.UNKNOWN); if (metaspace.isConnected()) { return Status.OK_STATUS; } try { Connection connection = new Connection(metaspace); connection.open(); metaspace.setConnection(connection); } catch (ExceptionInInitializerError e) { String message = SpaceBarPlugin .getEnvironmentVariableErrorMessage(SpaceBarPlugin .getSharedLibraryEnvironmentVariableName()); return SpaceBarPlugin.createStatus(e, message); } catch (NoClassDefFoundError e) { return SpaceBarPlugin.createClasspathErrorStatus(e); } catch (NoSuchMethodError e) { return SpaceBarPlugin.createStatus(e, "Incompatible ActiveSpaces version"); } catch (Throwable e) { return SpaceBarPlugin.createStatus(e, NLS.bind( "Could not connect to metaspace ''{0}''", metaspaceName)); } finally { monitor.done(); } return Status.OK_STATUS; } }