in eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ChooseArchetypeWizardPage.java [295:369]
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
Logger logger = Activator.getDefault().getPluginLogger();
monitor.beginTask("Discovering archetypes...", 5);
// rely on internal API, until https://github.com/eclipse-m2e/m2e-core/issues/921 is solved
ArchetypePlugin archetypeManager = M2EUIPluginActivator.getDefault().getArchetypePlugin();
monitor.worked(1);
Collection<ArchetypeCatalogFactory> archetypeCatalogs = archetypeManager.getActiveArchetypeCatalogs();
monitor.worked(2);
ArrayList<Archetype> candidates = new ArrayList<>();
for (ArchetypeCatalogFactory catalogFactory : archetypeCatalogs) {
try {
ArchetypeCatalog catalog = catalogFactory.getArchetypeCatalog();
@SuppressWarnings("unchecked")
java.util.List<Archetype> arcs = catalog.getArchetypes();
logger.trace("Catalog factory {0} provided {1} archetypes", catalogFactory,
arcs != null ? arcs.size() : 0);
if (arcs != null) {
candidates.addAll(arcs);
}
} catch (CoreException ce) {
throw new InvocationTargetException(ce);
}
}
monitor.worked(1);
boolean changed = false;
logger.trace("Considering {0} archetypes from {1} archetype catalogs", candidates.size(),
archetypeCatalogs.size());
for (Archetype candidate : candidates) {
if (getWizard().acceptsArchetype(candidate)) {
String key = keyFor(candidate);
Archetype old = archetypesMap.put(key, candidate);
logger.trace("Registered archetype {0}", candidate);
if (old == null || !old.equals(candidate)) {
changed = true;
}
logger.trace("Old archetype was {0}, changed = {1}", old, changed);
}
}
monitor.worked(1);
if (changed || archetypesMap.isEmpty()) {
logger.trace("Triggering refresh since changed is true");
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
Set<String> keys = archetypesMap.keySet();
knownArchetypes.removeAll();
for (String aKey : keys) {
knownArchetypes.add(aKey);
}
knownArchetypes.pack();
if (knownArchetypes.getItemCount() == 0) {
setErrorMessage("No suitable archetypes found. Please make sure that the proper maven repositories are configured and indexes are up to date.");
} else {
knownArchetypes.select(0);
updateStatus(null);
}
}
});
}
monitor.done();
}