Author: adietish
Date: 2011-12-22 10:41:43 -0500 (Thu, 22 Dec 2011)
New Revision: 37530
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AbstractImportApplicationOperation.java
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AddToExistingProjectOperation.java
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportNewProjectOperation.java
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizard.java
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizardModel.java
Log:
[JBIDE-10549] implemented reporting of subtask when importing new project/enabling
existing project.
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AbstractImportApplicationOperation.java
===================================================================
---
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AbstractImportApplicationOperation.java 2011-12-22
14:40:21 UTC (rev 37529)
+++
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AbstractImportApplicationOperation.java 2011-12-22
15:41:43 UTC (rev 37530)
@@ -27,7 +27,6 @@
import org.eclipse.osgi.util.NLS;
import com.openshift.express.client.IApplication;
-import com.openshift.express.client.IUser;
import com.openshift.express.client.OpenShiftException;
/**
@@ -40,14 +39,11 @@
private String projectName;
private IApplication application;
private String remoteName;
- private IUser user;
- public AbstractImportApplicationOperation(String projectName, IApplication application,
String remoteName,
- IUser user) {
+ public AbstractImportApplicationOperation(String projectName, IApplication application,
String remoteName) {
this.projectName = projectName;
this.application = application;
this.remoteName = remoteName;
- this.user = user;
}
/**
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AddToExistingProjectOperation.java
===================================================================
---
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AddToExistingProjectOperation.java 2011-12-22
14:40:21 UTC (rev 37529)
+++
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/AddToExistingProjectOperation.java 2011-12-22
15:41:43 UTC (rev 37530)
@@ -41,7 +41,7 @@
public AddToExistingProjectOperation(String projectName, IApplication application,
String remoteName,
IUser user) {
- super(projectName, application, remoteName, user);
+ super(projectName, application, remoteName);
}
/**
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportNewProjectOperation.java
===================================================================
---
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportNewProjectOperation.java 2011-12-22
14:40:21 UTC (rev 37529)
+++
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportNewProjectOperation.java 2011-12-22
15:41:43 UTC (rev 37530)
@@ -31,7 +31,6 @@
import
org.jboss.tools.openshift.express.internal.ui.wizard.appimport.project.MavenProjectImportOperation;
import com.openshift.express.client.IApplication;
-import com.openshift.express.client.IUser;
import com.openshift.express.client.OpenShiftException;
/**
@@ -42,8 +41,8 @@
private File cloneDestination;
public ImportNewProjectOperation(String projectName, IApplication application, String
remoteName,
- File cloneDestination, IUser user) {
- super(projectName, application, remoteName, user);
+ File cloneDestination) {
+ super(projectName, application, remoteName);
this.cloneDestination = cloneDestination;
}
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizard.java
===================================================================
---
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizard.java 2011-12-22
14:40:21 UTC (rev 37529)
+++
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizard.java 2011-12-22
15:41:43 UTC (rev 37530)
@@ -13,7 +13,7 @@
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.URISyntaxException;
-import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.eclipse.core.resources.WorkspaceJob;
@@ -30,6 +30,8 @@
import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
+import org.jboss.tools.common.ui.DelegatingProgressMonitor;
+import org.jboss.tools.common.ui.JobUtils;
import org.jboss.tools.common.ui.WizardUtils;
import org.jboss.tools.openshift.express.internal.ui.ImportFailedException;
import org.jboss.tools.openshift.express.internal.ui.OpenShiftUIActivator;
@@ -59,70 +61,12 @@
@Override
public boolean performFinish() {
try {
- final ArrayBlockingQueue<IStatus> queue = new
ArrayBlockingQueue<IStatus>(1);
- WizardUtils.runInWizard(
- new WorkspaceJob("Importing project to workspace...") {
-
- @Override
- public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
- IStatus status = Status.OK_STATUS;
- status = performOperations(monitor, status);
- if (!status.isOK()) {
- OpenShiftUIActivator.log(status);
- }
- queue.offer(status);
- return status;
- }
-
- private IStatus performOperations(IProgressMonitor monitor, IStatus status) {
- try {
- if (model.isNewProject()) {
- model.importProject(monitor);
- } else {
- if (!askForConfirmation(model.getApplicationName(), model.getProjectName())) {
- return Status.CANCEL_STATUS;
- }
- model.addToExistingProject(monitor);
- }
- return Status.OK_STATUS;
- } catch (final WontOverwriteException e) {
- openWarning("Project already present", e.getMessage());
- return Status.CANCEL_STATUS;
- } catch (final ImportFailedException e) {
- return OpenShiftUIActivator.createErrorStatus(
- "Could not import maven project {0}.", e,
- model.getProjectName());
- } catch (IOException e) {
- return OpenShiftUIActivator.createErrorStatus(
- "Could not copy openshift configuration files to project {0}", e,
- model.getProjectName());
- } catch (OpenShiftException e) {
- return OpenShiftUIActivator.createErrorStatus(
- "Could not import project to the workspace.", e);
- } catch (URISyntaxException e) {
- return OpenShiftUIActivator.createErrorStatus(
- "The url of the remote git repository is not valid", e);
- } catch (InvocationTargetException e) {
- if (isTransportException(e)) {
- TransportException te = getTransportException(e);
- return OpenShiftUIActivator
- .createErrorStatus(
- "Could not clone the repository. Authentication failed.\n"
- + " Please make sure that you added your private key to the ssh
preferences.",
- te);
- } else {
- return OpenShiftUIActivator.createErrorStatus(
- "An exception occurred while creating local git repository.", e);
- }
- } catch (Exception e) {
- return OpenShiftUIActivator.createErrorStatus(
- "Could not import project to the workspace.", e);
- }
- }
- }, getContainer());
- IStatus status = queue.poll(10, TimeUnit.SECONDS);
- return status != null
- && status.isOK();
+ final DelegatingProgressMonitor delegatingMonitor = new DelegatingProgressMonitor();
+ Future<IStatus> jobResult =
+ WizardUtils.runInWizard(
+ new ImportJob(delegatingMonitor),
+ delegatingMonitor, getContainer());
+ return JobUtils.isOk(jobResult.get(10, TimeUnit.SECONDS));
} catch (Exception e) {
ErrorDialog.openError(getShell(), "Error", "Could not create local git
repository.",
new Status(IStatus.ERROR, OpenShiftUIActivator.PLUGIN_ID,
@@ -132,19 +76,21 @@
}
private boolean askForConfirmation(final String applicationName, final String
projectName) {
- final boolean[] confirmed = new boolean[1];
+ final boolean[] confirmed = new boolean[1];
getShell().getDisplay().syncExec(new Runnable() {
@Override
public void run() {
- confirmed[0] = MessageDialog.openConfirm(getShell(),
- NLS.bind("Import OpenShift Application ", applicationName),
+ confirmed[0] = MessageDialog.openConfirm(getShell(),
+ NLS.bind("Import OpenShift Application ", applicationName),
NLS.bind(
"OpenShift application {0} will be enabled on project {1} by copying
OpenShift " +
- "configuration and enable Git for the project.\n " +
- "This cannot be undone. Do you wish to continue ?", applicationName,
projectName));
- }});
- return confirmed[0];
+ "configuration and enable Git for the project.\n " +
+ "This cannot be undone. Do you wish to continue ?", applicationName,
+ projectName));
+ }
+ });
+ return confirmed[0];
}
private void openWarning(final String title, final String message) {
@@ -176,4 +122,70 @@
}
return null;
}
+
+ /**
+ * A workspace job that will create a new project or enable the selected
+ * project to be used with OpenShift.
+ */
+ private class ImportJob extends WorkspaceJob {
+
+ private DelegatingProgressMonitor delegatingMonitor;
+
+ public ImportJob(DelegatingProgressMonitor delegatingMonitor) {
+ super("Importing project to workspace...");
+ this.delegatingMonitor = delegatingMonitor;
+ }
+
+ @Override
+ public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
+ try {
+ delegatingMonitor.add(monitor);
+
+ if (model.isNewProject()) {
+ model.importProject(delegatingMonitor);
+ } else {
+ if (!askForConfirmation(model.getApplicationName(), model.getProjectName())) {
+ return Status.CANCEL_STATUS;
+ }
+ model.addToExistingProject(delegatingMonitor);
+ }
+
+ return Status.OK_STATUS;
+ } catch (final WontOverwriteException e) {
+ openWarning("Project already present", e.getMessage());
+ return Status.CANCEL_STATUS;
+ } catch (final ImportFailedException e) {
+ return OpenShiftUIActivator.createErrorStatus(
+ "Could not import maven project {0}.", e,
+ model.getProjectName());
+ } catch (IOException e) {
+ return OpenShiftUIActivator.createErrorStatus(
+ "Could not copy openshift configuration files to project {0}", e,
+ model.getProjectName());
+ } catch (OpenShiftException e) {
+ return OpenShiftUIActivator.createErrorStatus(
+ "Could not import project to the workspace.", e);
+ } catch (URISyntaxException e) {
+ return OpenShiftUIActivator.createErrorStatus(
+ "The url of the remote git repository is not valid", e);
+ } catch (InvocationTargetException e) {
+ if (isTransportException(e)) {
+ TransportException te = getTransportException(e);
+ return OpenShiftUIActivator
+ .createErrorStatus(
+ "Could not clone the repository. Authentication failed.\n"
+ + " Please make sure that you added your private key to the ssh
preferences.",
+ te);
+ } else {
+ return OpenShiftUIActivator.createErrorStatus(
+ "An exception occurred while creating local git repository.", e);
+ }
+ } catch (Exception e) {
+ return OpenShiftUIActivator.createErrorStatus(
+ "Could not import project to the workspace.", e);
+ } finally {
+ delegatingMonitor.done();
+ }
+ }
+ }
}
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizardModel.java
===================================================================
---
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizardModel.java 2011-12-22
14:40:21 UTC (rev 37529)
+++
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/appimport/ImportProjectWizardModel.java 2011-12-22
15:41:43 UTC (rev 37530)
@@ -68,8 +68,8 @@
List<IProject> importedProjects = new ImportNewProjectOperation(getProjectName()
, getApplication()
, getRemoteName()
- , getRepositoryFile()
- , getUser()).execute(monitor);
+ , getRepositoryFile())
+ .execute(monitor);
createServerAdapter(monitor, importedProjects);
}
@@ -232,7 +232,7 @@
public String getMode() {
return (String) getProperty(AdapterWizardPageModel.MODE);
}
-
+
public boolean isCreateServer() {
Boolean isCreateServer = (Boolean) getProperty(CREATE_SERVER);
return isCreateServer != null