[jbosstools-commits] JBoss Tools SVN: r41422 - in trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui: wizard and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri May 25 09:58:32 EDT 2012


Author: adietish
Date: 2012-05-25 09:58:32 -0400 (Fri, 25 May 2012)
New Revision: 41422

Modified:
   trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/CreateApplicationJob.java
   trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/WaitForApplicationJob.java
   trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/OpenShiftExpressApplicationWizard.java
Log:
[JBIDE-11314] fixed monitor cancelling

Modified: trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/CreateApplicationJob.java
===================================================================
--- trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/CreateApplicationJob.java	2012-05-25 13:55:35 UTC (rev 41421)
+++ trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/CreateApplicationJob.java	2012-05-25 13:58:32 UTC (rev 41422)
@@ -11,7 +11,6 @@
 package org.jboss.tools.openshift.express.internal.ui.job;
 
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.ReentrantLock;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -38,7 +37,7 @@
  */
 public class CreateApplicationJob extends AbstractDelegatingMonitorJob {
 
-	public static final int CLOSE_WIZARD = 2;
+	public static final int TIMEOUTED_CANCELLED = 1;
 
 	private UserDelegate user;
 	private String name;
@@ -46,7 +45,6 @@
 	private ApplicationScale scale;
 	private IGearProfile gear;
 	private IApplication application;
-	private ReentrantLock lock = new ReentrantLock();
 
 	public CreateApplicationJob(final String name, final ICartridge cartridge, final ApplicationScale scale,
 			final IGearProfile gear, UserDelegate user) {
@@ -61,7 +59,6 @@
 	@Override
 	protected IStatus doRun(IProgressMonitor monitor) {
 		try {
-			lock.lock();
 			try {
 				this.application = user.createApplication(name, cartridge, scale, gear);
 			} catch (OpenShiftTimeoutException e) {
@@ -69,21 +66,23 @@
 			}
 
 			if (application == null) {
-				int errorCode = monitor.isCanceled() ? CLOSE_WIZARD : 0;
+				int errorCode = monitor.isCanceled() ? TIMEOUTED_CANCELLED : 0;
 				return new Status(IStatus.CANCEL, OpenShiftUIActivator.PLUGIN_ID, errorCode,
 						NLS.bind("User cancelled creation of application {0}", name), null);
 			} else {
 				return Status.OK_STATUS;
 			}
 		} catch (Exception e) {
+			safeRefreshDomain();
 			return OpenShiftUIActivator.createErrorStatus(
 					OpenShiftExpressUIMessages.COULD_NOT_CREATE_APPLICATION, e, name);
-		} finally {
-			lock.unlock();
 		}
 	}
 
 	private IApplication refreshAndCreateApplication(IProgressMonitor monitor) throws OpenShiftException {
+		if (monitor.isCanceled()) {
+			return null;
+		}
 		IApplication application = null;
 		do {
 			try {
@@ -103,14 +102,18 @@
 		return application;
 	}
 
-	public IApplication getApplication() {
+	private void safeRefreshDomain() {
 		try {
-			lock.lock();
-			return application;
-		} finally {
-			lock.unlock();
+			IDomain domain = user.getDefaultDomain();
+			domain.refresh();
+		} catch (OpenShiftException e) {
+			OpenShiftUIActivator.log(e);
 		}
 	}
+	
+	public IApplication getApplication() {
+		return application;
+	}
 
 	protected boolean openKeepTryingDialog() {
 		final AtomicBoolean keepTrying = new AtomicBoolean(false);

Modified: trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/WaitForApplicationJob.java
===================================================================
--- trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/WaitForApplicationJob.java	2012-05-25 13:55:35 UTC (rev 41421)
+++ trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/job/WaitForApplicationJob.java	2012-05-25 13:58:32 UTC (rev 41422)
@@ -32,6 +32,8 @@
  */
 public class WaitForApplicationJob extends AbstractDelegatingMonitorJob {
 
+	public static final int TIMEOUTED_CANCELLED = 1;
+
 	private static final int APP_REACHABLE_TIMEOUT = 180 * 1000;
 	private IApplication application;
 	private Shell shell;
@@ -48,8 +50,12 @@
 		try {
 			while (!application.waitForAccessible(APP_REACHABLE_TIMEOUT)) {
 				if (!openKeepWaitingDialog()) {
-					return OpenShiftUIActivator.createCancelStatus(NLS.bind(
-							OpenShiftExpressUIMessages.APPLICATION_NOT_ANSWERING, application.getName()));
+					return new Status(
+							IStatus.CANCEL,
+							OpenShiftUIActivator.PLUGIN_ID,
+							TIMEOUTED_CANCELLED,
+							NLS.bind(OpenShiftExpressUIMessages.APPLICATION_NOT_ANSWERING, application.getName()),
+							null);
 				}
 			}
 		} catch (OpenShiftException e) {

Modified: trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/OpenShiftExpressApplicationWizard.java
===================================================================
--- trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/OpenShiftExpressApplicationWizard.java	2012-05-25 13:55:35 UTC (rev 41421)
+++ trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/OpenShiftExpressApplicationWizard.java	2012-05-25 13:58:32 UTC (rev 41422)
@@ -141,42 +141,50 @@
 
 	@Override
 	public boolean performFinish() {
-		boolean success = getWizardModel().isUseExistingApplication();
-		if (!success) {
+		boolean useExistingApp = getWizardModel().isUseExistingApplication();
+		if (!useExistingApp) {
 
 			IStatus status = createApplication();
 			if (JobUtils.isCancel(status)
-					&& CreateApplicationJob.CLOSE_WIZARD == status.getCode()) {
-				getContainer().getShell().close();
+				&& CreateApplicationJob.TIMEOUTED_CANCELLED == status.getCode()) {
+					getContainer().getShell().close();
 			} else if (!JobUtils.isOk(status)) {
 				safeRefreshUser();
 				return false;
 			}
 
-			if (success = waitForApplication(wizardModel.getApplication())) {
-				success = addRemoveCartridges(
-						getWizardModel().getApplication(), getWizardModel().getSelectedEmbeddableCartridges());
-			} else {
+			status = waitForApplication(wizardModel.getApplication());
+			if (JobUtils.isCancel(status) 
+					&& WaitForApplicationJob.TIMEOUTED_CANCELLED == status.getCode()) {
 				getContainer().getShell().close();
+			} else if (!JobUtils.isOk(status)) {
+				safeRefreshUser();
+				return false;
 			}
+
+			if (!addRemoveCartridges(
+					getWizardModel().getApplication(), getWizardModel().getSelectedEmbeddableCartridges())) {
+				return false;
+			}
 		}
 
-		if (success) {
-			success = importProject();
+		if (useExistingApp) {
+			useExistingApp = importProject();
 		}
 
 		wizardModel.addUserToModel();
-		return success;
+		return useExistingApp;
 	}
 
-	private boolean waitForApplication(IApplication application) {
+	private IStatus waitForApplication(IApplication application) {
 		try {
 			AbstractDelegatingMonitorJob job = new WaitForApplicationJob(application, getShell());
 			IStatus status = WizardUtils.runInWizard(
 					job, job.getDelegatingProgressMonitor(), getContainer(), APP_WAIT_TIMEOUT);
-			return status.isOK();
+			return status;
 		} catch (Exception e) {
-			return false;
+			return OpenShiftUIActivator.createErrorStatus(
+					NLS.bind("Could not wait for application {0} to become reachable", application.getName()), e);
 		}
 	}
 
@@ -197,7 +205,7 @@
 		try {
 			CreateApplicationJob job = new CreateApplicationJob(
 					wizardModel.getApplicationName()
-					, wizardModel.getApplicationCartridge() 
+					, wizardModel.getApplicationCartridge()
 					, wizardModel.getApplicationScale()
 					, wizardModel.getApplicationGearProfile()
 					, wizardModel.getUser());
@@ -211,19 +219,21 @@
 		}
 	}
 
-	private boolean addRemoveCartridges(final IApplication application,final Set<IEmbeddableCartridge> selectedCartridges) {
-			try {
-				EmbedCartridgesJob job = new EmbedCartridgesJob(
-						new ArrayList<IEmbeddableCartridge>(wizardModel.getSelectedEmbeddableCartridges()), 
-						wizardModel.getApplication());
-				IStatus result = WizardUtils.runInWizard(job, job.getDelegatingProgressMonitor(), getContainer(), EMBED_CARTRIDGES_TIMEOUT);
-				if (result.isOK()) {
-					openLogDialog(job.getAddedCartridges());
-				}
-				return result.isOK();
-			} catch (Exception e) {
-				return false;
+	private boolean addRemoveCartridges(final IApplication application,
+			final Set<IEmbeddableCartridge> selectedCartridges) {
+		try {
+			EmbedCartridgesJob job = new EmbedCartridgesJob(
+					new ArrayList<IEmbeddableCartridge>(wizardModel.getSelectedEmbeddableCartridges()),
+					wizardModel.getApplication());
+			IStatus result = WizardUtils.runInWizard(job, job.getDelegatingProgressMonitor(), getContainer(),
+					EMBED_CARTRIDGES_TIMEOUT);
+			if (result.isOK()) {
+				openLogDialog(job.getAddedCartridges());
 			}
+			return result.isOK();
+		} catch (Exception e) {
+			return false;
+		}
 	}
 
 	private void openLogDialog(final List<IEmbeddedCartridge> embeddableCartridges) {
@@ -247,7 +257,7 @@
 			OpenShiftUIActivator.log(e);
 		}
 	}
-	
+
 	/**
 	 * A workspace job that will create a new project or enable the selected
 	 * project to be used with OpenShift.



More information about the jbosstools-commits mailing list