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.osgi.util.NLS; import org.eclipse.ui.progress.UIJob; import com.tibco.as.spacebar.ui.handlers.metaspace.MetaspaceRule; import com.tibco.as.spacebar.ui.model.Metaspace; public class DisconnectJob extends UIJob { private Metaspace metaspace; public DisconnectJob(Metaspace metaspace) { super("Disconnect metaspace"); setUser(true); setRule(new MetaspaceRule(metaspace)); this.metaspace = metaspace; } @Override public IStatus runInUIThread(IProgressMonitor monitor) { monitor.beginTask(getName(), IProgressMonitor.UNKNOWN); try { if (metaspace.isConnected()) { metaspace.getConnection().close(); metaspace.setConnection(null); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } catch (Throwable e) { String message = NLS.bind("Could not disconnect metaspace ''{0}''", metaspace.getConnection().getMetaspaceName()); return SpaceBarPlugin.logException(message, e); } finally { monitor.done(); } } }