Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Bricon2015-02-14 00:41:09 +0000
committerFred Bricon2015-02-19 22:40:21 +0000
commitd61eb55886b0b3829ccd946b692b5d1536e85610 (patch)
treed7895133a7a06376df46848aec510f323f66268e
parent432370256a099978714d7c0b29c9c20eb3cc2ed6 (diff)
downloadm2e-core-d61eb55886b0b3829ccd946b692b5d1536e85610.tar.gz
m2e-core-d61eb55886b0b3829ccd946b692b5d1536e85610.tar.xz
m2e-core-d61eb55886b0b3829ccd946b692b5d1536e85610.zip
459046 : trigger LM discovery on project creation
Change-Id: Ie79a73cddd9c50711a24388e4f89f0d77a76367f Signed-off-by: Fred Bricon <fbricon@gmail.com>
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/AbstractCreateMavenProjectJob.java17
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/ImportMavenProjectsJob.java30
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MappingDiscoveryJob.java83
-rw-r--r--org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizard.java51
4 files changed, 108 insertions, 73 deletions
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/AbstractCreateMavenProjectJob.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/AbstractCreateMavenProjectJob.java
index 4ebd8565..7fa1afc2 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/AbstractCreateMavenProjectJob.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/AbstractCreateMavenProjectJob.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008-2010 Sonatype, Inc.
+ * Copyright (c) 2008-2015 Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@ package org.eclipse.m2e.core.ui.internal.wizards;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.eclipse.core.resources.IProject;
@@ -32,6 +33,8 @@ public abstract class AbstractCreateMavenProjectJob extends WorkspaceJob {
private final List<IWorkingSet> workingSets;
+ private List<IProject> createdProjects;
+
public AbstractCreateMavenProjectJob(String name, List<IWorkingSet> workingSets) {
super(name);
this.workingSets = workingSets;
@@ -40,6 +43,7 @@ public abstract class AbstractCreateMavenProjectJob extends WorkspaceJob {
@Override
public final IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
setProperty(IProgressConstants.ACTION_PROPERTY, new OpenMavenConsoleAction());
+ createdProjects = null;
AbstractCreateMavenProjectsOperation op = new AbstractCreateMavenProjectsOperation(workingSets) {
@Override
protected List<IProject> doCreateMavenProjects(IProgressMonitor monitor) throws CoreException {
@@ -48,6 +52,10 @@ public abstract class AbstractCreateMavenProjectJob extends WorkspaceJob {
};
try {
op.run(monitor);
+ List<IProject> projects = op.getCreatedProjects();
+ if(projects != null) {
+ createdProjects = Collections.unmodifiableList(projects);
+ }
} catch(InvocationTargetException e) {
return AbstractCreateMavenProjectsOperation.toStatus(e);
} catch(InterruptedException e) {
@@ -62,4 +70,11 @@ public abstract class AbstractCreateMavenProjectJob extends WorkspaceJob {
return AbstractCreateMavenProjectsOperation.toProjects(results);
}
+ /**
+ * @return an unmodifiable list of created projects, or <code>null</code>
+ * @since 1.6
+ */
+ public List<IProject> getCreatedProjects() {
+ return createdProjects;
+ }
}
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/ImportMavenProjectsJob.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/ImportMavenProjectsJob.java
index 9c42c5c4..aa2852e3 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/ImportMavenProjectsJob.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/ImportMavenProjectsJob.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010-2013 Sonatype, Inc. and others.
+ * Copyright (c) 2010-2015 Sonatype, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -23,14 +23,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.internal.lifecyclemapping.discovery.LifecycleMappingDiscoveryRequest;
import org.eclipse.m2e.core.project.IMavenProjectImportResult;
import org.eclipse.m2e.core.project.MavenProjectInfo;
import org.eclipse.m2e.core.project.ProjectImportConfiguration;
@@ -81,27 +76,8 @@ public class ImportMavenProjectsJob extends WorkspaceJob {
try {
importOperation.run(monitor);
List<IProject> createdProjects = importOperation.getCreatedProjects();
- //Detect and resolve Lifecycle Mapping issues
- LifecycleMappingDiscoveryRequest discoveryRequest = LifecycleMappingDiscoveryHelper
- .createLifecycleMappingDiscoveryRequest(createdProjects, monitor);
- if(discoveryRequest.isMappingComplete()) {
- return Status.OK_STATUS;
- }
- //LifecycleMappingHelper will discover proposals only if discovery service is available
- LifecycleMappingDiscoveryHelper.discoverProposals(discoveryRequest, monitor);
- final MavenDiscoveryProposalWizard proposalWizard = new MavenDiscoveryProposalWizard(createdProjects,
- discoveryRequest);
- proposalWizard.init(null, null);
- //Some errors were detected
-
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- final IWorkbench workbench = PlatformUI.getWorkbench();
- WizardDialog dialog = new WizardDialog(workbench.getActiveWorkbenchWindow().getShell(), proposalWizard);
- dialog.open();
- }
- });
+ MappingDiscoveryJob discoveryJob = new MappingDiscoveryJob(createdProjects);
+ discoveryJob.schedule();
} catch(InvocationTargetException e) {
return AbstractCreateMavenProjectsOperation.toStatus(e);
} catch(InterruptedException e) {
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MappingDiscoveryJob.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MappingDiscoveryJob.java
new file mode 100644
index 00000000..b03ec3d2
--- /dev/null
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MappingDiscoveryJob.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2010-2015 Sonatype, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ * Fred Bricon (Red Hat Inc.)-extracted mapping discovery to workspace job
+ *******************************************************************************/
+
+package org.eclipse.m2e.core.ui.internal.wizards;
+
+import java.util.Collection;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.WorkspaceJob;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.m2e.core.internal.lifecyclemapping.discovery.LifecycleMappingDiscoveryRequest;
+
+
+/**
+ * Lifecycle Mapping Discovery Job
+ *
+ * @author Fred Bricon
+ * @since 1.6.0
+ */
+public class MappingDiscoveryJob extends WorkspaceJob {
+
+ private Collection<IProject> projects;
+
+ public MappingDiscoveryJob(Collection<IProject> projects) {
+ super("Discover lifecycle mappings");
+ this.projects = projects;
+
+ }
+
+ public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
+ //Detect and resolve Lifecycle Mapping issues
+ LifecycleMappingDiscoveryRequest discoveryRequest = LifecycleMappingDiscoveryHelper
+ .createLifecycleMappingDiscoveryRequest(projects, monitor);
+ if(discoveryRequest.isMappingComplete()) {
+ return Status.OK_STATUS;
+ }
+ //Some errors were detected
+ discoverProposals(discoveryRequest, monitor);
+
+ openProposalWizard(projects, discoveryRequest);
+
+ return Status.OK_STATUS;
+ }
+
+ protected void discoverProposals(LifecycleMappingDiscoveryRequest discoveryRequest, IProgressMonitor monitor)
+ throws CoreException {
+ //LifecycleMappingHelper will discover proposals only if discovery service is available
+ LifecycleMappingDiscoveryHelper.discoverProposals(discoveryRequest, monitor);
+ }
+
+ protected void openProposalWizard(Collection<IProject> projects, LifecycleMappingDiscoveryRequest discoveryRequest) {
+
+ final MavenDiscoveryProposalWizard proposalWizard = new MavenDiscoveryProposalWizard(projects, discoveryRequest);
+ proposalWizard.init(null, null);
+
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ final IWorkbench workbench = PlatformUI.getWorkbench();
+ WizardDialog dialog = new WizardDialog(workbench.getActiveWorkbenchWindow().getShell(), proposalWizard);
+ dialog.open();
+ }
+ });
+ }
+
+}
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizard.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizard.java
index 685fa7d5..b04e75de 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizard.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizard.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008-2010 Sonatype, Inc.
+ * Copyright (c) 2008-2015 Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -24,7 +24,6 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -213,7 +212,7 @@ public class MavenProjectWizard extends AbstractMavenProjectWizard implements IN
return false;
}
- final Job job;
+ final AbstractCreateMavenProjectJob job;
if(simpleProject.getSelection()) {
final String[] folders = artifactPage.getFolders();
@@ -260,55 +259,17 @@ public class MavenProjectWizard extends AbstractMavenProjectWizard implements IN
}
});
}
+
+ MappingDiscoveryJob discoveryJob = new MappingDiscoveryJob(job.getCreatedProjects());
+ discoveryJob.schedule();
+
}
});
job.setRule(MavenPlugin.getProjectConfigurationManager().getRule());
job.schedule();
-// ProjectListener listener = new ProjectListener();
-// workspace.addResourceChangeListener(listener, IResourceChangeEvent.POST_CHANGE);
-// try {
-// job.setRule(plugin.getProjectConfigurationManager().getRule());
-// job.schedule();
-//
-// // MNGECLIPSE-766 wait until new project is created
-// while(listener.getNewProject() == null && (job.getState() & (Job.WAITING | Job.RUNNING)) > 0) {
-// try {
-// Thread.sleep(100L);
-// } catch (InterruptedException ex) {
-// // ignore
-// }
-// }
-//
-// } finally {
-// workspace.removeResourceChangeListener(listener);
-// }
-
return true;
}
-// static class ProjectListener implements IResourceChangeListener {
-// private IProject newProject = null;
-//
-// public void resourceChanged(IResourceChangeEvent event) {
-// IResourceDelta root = event.getDelta();
-// IResourceDelta[] projectDeltas = root.getAffectedChildren();
-// for (int i = 0; i < projectDeltas.length; i++) {
-// IResourceDelta delta = projectDeltas[i];
-// IResource resource = delta.getResource();
-// if (delta.getKind() == IResourceDelta.ADDED) {
-// newProject = (IProject)resource;
-// }
-// }
-// }
-// /**
-// * Gets the newProject.
-// * @return Returns a IProject
-// */
-// public IProject getNewProject() {
-// return newProject;
-// }
-// }
-
}

Back to the top