[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