diff --git a/maven/src/org/netbeans/modules/maven/newproject/ArchetypeWizardUtils.java b/maven/src/org/netbeans/modules/maven/newproject/ArchetypeWizardUtils.java --- a/maven/src/org/netbeans/modules/maven/newproject/ArchetypeWizardUtils.java +++ b/maven/src/org/netbeans/modules/maven/newproject/ArchetypeWizardUtils.java @@ -53,6 +53,9 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.jar.JarFile; import java.util.logging.Level; import java.util.logging.LogRecord; @@ -67,6 +70,7 @@ import org.netbeans.api.progress.ProgressHandle; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; +import org.netbeans.api.project.ui.OpenProjects; import org.netbeans.modules.maven.api.ModelUtils; import org.netbeans.modules.maven.api.NbMavenProject; import org.netbeans.modules.maven.api.archetype.ProjectInfo; @@ -83,6 +87,8 @@ import org.openide.filesystems.FileUtil; import org.openide.util.Exceptions; import org.openide.util.NbBundle; +import org.openide.util.Task; +import org.openide.util.TaskListener; import org.openide.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -199,7 +205,8 @@ EA_ARCH.setArtifactId("pom-root"); //NOI18N } - private static void runArchetype(File directory, ProjectInfo vi, Archetype arch, @NullAllowed Map additional) throws IOException { + private static void runArchetype(final File projDir, ProjectInfo vi, Archetype arch, @NullAllowed Map additional) throws IOException { + File directory = projDir.getParentFile(); BeanRunConfig config = new BeanRunConfig(); config.setProperty("archetypeGroupId", arch.getGroupId()); //NOI18N config.setProperty("archetypeArtifactId", arch.getArtifactId()); //NOI18N @@ -235,7 +242,33 @@ config.setTaskDisplayName(NbBundle.getMessage(ArchetypeWizardUtils.class, "RUN_Maven")); ExecutorTask task = RunUtils.executeMaven(config); //NOI18N - task.result(); + final AtomicBoolean stoppedWaiting = new AtomicBoolean(); + final CountDownLatch latch = new CountDownLatch(1); + task.addTaskListener(new TaskListener() { + @Override public void taskFinished(Task task) { + boolean openLater = stoppedWaiting.get(); + latch.countDown(); + if (openLater) { + // #191951: took too long and wizard closed early, try to open created projects now + try { + for (FileObject d : openProjects(projDir, null)) { + Project p = ProjectManager.getDefault().findProject(d); + if (p != null) { + OpenProjects.getDefault().open(new Project[] {p}, false); + } + } + } catch (IOException x) { + LOG.log(Level.INFO, "could not find/load projects in " + projDir, x); + } + } + } + }); + try { + latch.await(10, TimeUnit.SECONDS); + } catch (InterruptedException x) { + LOG.log(Level.INFO, null, x); + } + stoppedWaiting.set(true); } static Map getAdditionalProperties(Artifact art) { @@ -360,7 +393,7 @@ } handle.progress(NbBundle.getMessage(MavenWizardIterator.class, "PRG_Processing_Archetype"), ++progressCounter); - runArchetype(parent, vi, arch, additional); + runArchetype(projDir, vi, arch, additional); handle.progress(++progressCounter); }