Blob Blame History Raw
From 69b028840c120ea2516eeed37e6e5f9f251704cb Mon Sep 17 00:00:00 2001
From: Mat Booth <mat.booth@redhat.com>
Date: Wed, 25 Mar 2020 11:26:45 +0000
Subject: [PATCH 5/6] Port to latest version of maven-archetypes

---
 .../org.eclipse.m2e.archetype.common/pom.xml  |   9 +-
 .../MavenArchetypesPreferencePage.java        |  93 +--------
 .../MavenProjectWizardArchetypePage.java      |  14 +-
 .../m2e/core/internal/ExtensionReader.java    |  27 +--
 .../eclipse/m2e/core/internal/Messages.java   |   2 -
 .../archetype/ArchetypeCatalogFactory.java    | 192 +++---------------
 .../archetype/ArchetypeCatalogsWriter.java    |  49 +----
 .../internal/archetype/ArchetypeManager.java  |   4 +-
 .../index/nexus/NexusIndexManager.java        |   2 +-
 9 files changed, 51 insertions(+), 341 deletions(-)

diff --git a/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml b/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml
index 96ec268..6bb1bd0 100644
--- a/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml
+++ b/m2e-maven-runtime/org.eclipse.m2e.archetype.common/pom.xml
@@ -24,7 +24,7 @@
   <name>Maven Archetype Common Bundle</name>
 
   <properties>
-    <archetype-common.version>2.4</archetype-common.version>
+    <archetype-common.version>3.2.0</archetype-common.version>
   </properties>
 
   <dependencies>
@@ -34,11 +34,6 @@
       <version>${archetype-common.version}</version>
       <optional>true</optional>
       <exclusions>
-        <exclusion>
-          <!-- there is newer velocity with different groupId that we want -->
-          <artifactId>velocity</artifactId>
-          <groupId>velocity</groupId>
-        </exclusion>
         <exclusion>
           <artifactId>plexus-container-default</artifactId>
           <groupId>org.codehaus.plexus</groupId>
@@ -76,12 +71,10 @@
               archetype-common,
               archetype-catalog,
               archetype-descriptor,
-              archetype-registry,
               maven-invoker,
               commons-collections,
               commons-io,
               commons-lang,
-              dom4j;version=2.1.3,
               jchardet,
               jdom,
               oro,
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/preferences/MavenArchetypesPreferencePage.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/preferences/MavenArchetypesPreferencePage.java
index 0c95b17..486e3c9 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/preferences/MavenArchetypesPreferencePage.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/preferences/MavenArchetypesPreferencePage.java
@@ -55,8 +55,6 @@ import org.eclipse.ui.browser.IWebBrowser;
 
 import org.eclipse.m2e.core.internal.MavenPluginActivator;
 import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory.LocalCatalogFactory;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory.RemoteCatalogFactory;
 import org.eclipse.m2e.core.internal.archetype.ArchetypeManager;
 import org.eclipse.m2e.core.internal.preferences.MavenPreferenceConstants;
 import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
@@ -174,84 +172,6 @@ public class MavenArchetypesPreferencePage extends FieldEditorPreferencePage imp
     typeColumn.setWidth(250);
     typeColumn.setText(""); //$NON-NLS-1$
 
-    Button enableAllBtn = new Button(composite, SWT.NONE);
-    enableAllBtn.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
-    enableAllBtn.setText(Messages.MavenArchetypesPreferencePage_btnEnableAll);
-    enableAllBtn.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> toggleRepositories(true)));
-
-    Button disableAllBtn = new Button(composite, SWT.NONE);
-    disableAllBtn.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
-    disableAllBtn.setText(Messages.MavenArchetypesPreferencePage_btnDisableAll);
-    disableAllBtn.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> toggleRepositories(false)));
-
-    Button addLocalButton = new Button(composite, SWT.NONE);
-    addLocalButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
-    addLocalButton.setText(Messages.MavenArchetypesPreferencePage_btnAddLocal);
-    addLocalButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
-      LocalArchetypeCatalogDialog dialog = new LocalArchetypeCatalogDialog(getShell(), null);
-      if(dialog.open() == Window.OK) {
-        addCatalogFactory(dialog.getArchetypeCatalogFactory());
-      }
-    }));
-
-    Button addRemoteButton = new Button(composite, SWT.NONE);
-    addRemoteButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
-    addRemoteButton.setText(Messages.MavenArchetypesPreferencePage_btnAddRemote);
-    addRemoteButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
-      RemoteArchetypeCatalogDialog dialog = new RemoteArchetypeCatalogDialog(getShell(), null);
-      if(dialog.open() == Window.OK) {
-        addCatalogFactory(dialog.getArchetypeCatalogFactory());
-      }
-    }));
-
-    final Button editButton = new Button(composite, SWT.NONE);
-    editButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
-    editButton.setEnabled(false);
-    editButton.setText(Messages.MavenArchetypesPreferencePage_btnEdit);
-    editButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
-      ArchetypeCatalogFactory factory = getSelectedArchetypeCatalogFactory();
-      ArchetypeCatalogFactory newFactory = null;
-      if(factory instanceof LocalCatalogFactory) {
-        LocalArchetypeCatalogDialog dialog = new LocalArchetypeCatalogDialog(getShell(), factory);
-        if(dialog.open() == Window.OK) {
-          newFactory = dialog.getArchetypeCatalogFactory();
-        }
-      } else if(factory instanceof RemoteCatalogFactory) {
-        RemoteArchetypeCatalogDialog dialog = new RemoteArchetypeCatalogDialog(getShell(), factory);
-        if(dialog.open() == Window.OK) {
-          newFactory = dialog.getArchetypeCatalogFactory();
-        }
-      }
-      if(newFactory != null) {
-        int n = archetypeCatalogs.indexOf(factory);
-        if(n > -1) {
-          archetypeCatalogs.set(n, newFactory);
-          archetypesViewer.setInput(archetypeCatalogs);
-          archetypesViewer.setSelection(new StructuredSelection(newFactory), true);
-        }
-      }
-    }));
-
-    final Button removeButton = new Button(composite, SWT.NONE);
-    removeButton.setEnabled(false);
-    removeButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, true));
-    removeButton.setText(Messages.MavenArchetypesPreferencePage_btnRemove);
-    removeButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
-      ArchetypeCatalogFactory factory = getSelectedArchetypeCatalogFactory();
-      archetypeCatalogs.remove(factory);
-      archetypesViewer.setInput(archetypeCatalogs);
-      archetypesViewer.setSelection(null, true);
-    }));
-
-    archetypesViewer.addSelectionChangedListener(event -> {
-      if(archetypesViewer.getSelection() instanceof IStructuredSelection) {
-        ArchetypeCatalogFactory factory = getSelectedArchetypeCatalogFactory();
-        boolean isEnabled = factory != null && factory.isEditable();
-        removeButton.setEnabled(isEnabled);
-        editButton.setEnabled(isEnabled);
-      }
-    });
-
     archetypesViewer.addCheckStateListener((event) -> {
       archetypesViewer.refresh(event.getElement(), true);
     });
@@ -294,18 +214,7 @@ public class MavenArchetypesPreferencePage extends FieldEditorPreferencePage imp
     public String getColumnText(Object element, int columnIndex) {
       ArchetypeCatalogFactory factory = (ArchetypeCatalogFactory) element;
       String description = factory.getDescription();
-      String text;
-      if(factory instanceof LocalCatalogFactory) {
-        text = NLS.bind(Messages.MavenArchetypesPreferencePage_local, description);
-      } else if(factory instanceof RemoteCatalogFactory) {
-        if(factory.isEditable()) {
-          text = NLS.bind(Messages.MavenArchetypesPreferencePage_remote, description);
-        } else {
-          text = NLS.bind(Messages.MavenArchetypesPreferencePage_packaged, description);
-        }
-      } else {
-        text = description;
-      }
+      String text = description;
 
       return factory.isEditable() ? text : NLS.bind(Messages.MavenArchetypesPreferencePage_SystemLabel, text);
     }
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypePage.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypePage.java
index 90547dd..acd296f 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypePage.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypePage.java
@@ -82,11 +82,13 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.project.ProjectBuildingRequest;
 
 import org.eclipse.m2e.core.MavenPlugin;
 import org.eclipse.m2e.core.archetype.ArchetypeUtil;
 import org.eclipse.m2e.core.embedder.ArtifactKey;
 import org.eclipse.m2e.core.embedder.IMaven;
+import org.eclipse.m2e.core.embedder.IMavenExecutionContext;
 import org.eclipse.m2e.core.internal.MavenPluginActivator;
 import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory;
 import org.eclipse.m2e.core.internal.archetype.ArchetypeManager;
@@ -846,9 +848,15 @@ public class MavenProjectWizardArchetypePage extends AbstractMavenWizardPage imp
             archetype.setArtifactId(archetypeArtifactId);
             archetype.setVersion(archetypeVersion);
             archetype.setRepository(repositoryUrl);
-            org.apache.maven.archetype.ArchetypeManager archetyper = MavenPluginActivator.getDefault()
-                .getArchetypeManager().getArchetyper();
-            archetyper.updateLocalCatalog(archetype);
+
+            IMavenExecutionContext ctx = maven.createExecutionContext();
+            Void v = ctx.execute((context, pm) -> {
+              org.apache.maven.archetype.ArchetypeManager archetyper = MavenPluginActivator.getDefault()
+                  .getArchetypeManager().getArchetyper();
+              ProjectBuildingRequest projectBuildingRequest = context.newProjectBuildingRequest();
+              archetyper.updateLocalCatalog(projectBuildingRequest, archetype);
+              return null;
+            }, new NullProgressMonitor());
 
             archetypesCache.clear();
 
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/ExtensionReader.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/ExtensionReader.java
index a7a4fd4..0afbc71 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/ExtensionReader.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/ExtensionReader.java
@@ -13,11 +13,9 @@
 
 package org.eclipse.m2e.core.internal;
 
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.osgi.framework.Bundle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -84,29 +82,8 @@ public class ExtensionReader {
 
   private static ArchetypeCatalogFactory readArchetypeCatalogs(IConfigurationElement element,
       IContributor contributor) {
-    if(ELEMENT_LOCAL_ARCHETYPE.equals(element.getName())) {
-      String name = element.getAttribute(ATTR_NAME);
-      if(name != null) {
-        Bundle[] bundles = Platform.getBundles(contributor.getName(), null);
-        URL catalogUrl = null;
-        for(int i = 0; i < bundles.length; i++ ) {
-          Bundle bundle = bundles[i];
-          catalogUrl = bundle.getEntry(name);
-          if(catalogUrl != null) {
-            String description = element.getAttribute(ATTR_DESCRIPTION);
-            String url = catalogUrl.toString();
-            return new ArchetypeCatalogFactory.LocalCatalogFactory(url, description, false);
-          }
-        }
-        log.error("Unable to find Archetype catalog " + name + " in " + contributor.getName());
-      }
-    } else if(ELEMENT_REMOTE_ARCHETYPE.equals(element.getName())) {
-      String url = element.getAttribute(ATTR_URL);
-      if(url != null) {
-        String description = element.getAttribute(ATTR_DESCRIPTION);
-        return new ArchetypeCatalogFactory.RemoteCatalogFactory(url, description, false);
-      }
-    }
+    log.error("Local and remote Archetype catalogs specified by URL from " + contributor.getName()
+        + " are no longer supported");
     return null;
   }
 
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/Messages.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/Messages.java
index 0f486cd..069e210 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/Messages.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/Messages.java
@@ -50,8 +50,6 @@ public class Messages extends NLS {
 
   public static String ArchetypeCatalogFactory_internal;
 
-  public static String ArchetypeCatalogFactory_local;
-
   public static String ArchetypeCatalogFactory_remote;
 
   public static String ArchetypeCatalogsWriter_error_parse;
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogFactory.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogFactory.java
index 8c82854..6772ad0 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogFactory.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogFactory.java
@@ -13,28 +13,24 @@
 
 package org.eclipse.m2e.core.internal.archetype;
 
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.osgi.util.NLS;
 
 import org.apache.maven.archetype.ArchetypeManager;
-import org.apache.maven.archetype.catalog.Archetype;
 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
-import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Reader;
 import org.apache.maven.archetype.source.ArchetypeDataSource;
 import org.apache.maven.archetype.source.ArchetypeDataSourceException;
+import org.apache.maven.project.ProjectBuildingRequest;
 
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.embedder.IMaven;
+import org.eclipse.m2e.core.embedder.IMavenExecutionContext;
 import org.eclipse.m2e.core.internal.IMavenConstants;
 import org.eclipse.m2e.core.internal.MavenPluginActivator;
 import org.eclipse.m2e.core.internal.Messages;
@@ -106,14 +102,20 @@ public abstract class ArchetypeCatalogFactory {
     }
 
     public ArchetypeCatalog getArchetypeCatalog() throws CoreException {
-      try {
-        ArchetypeDataSource source = MavenPluginActivator.getDefault().getIndexManager().getArchetypeCatalog();
-        return source.getArchetypeCatalog(new Properties());
-      } catch(ArchetypeDataSourceException ex) {
-        String msg = NLS.bind(Messages.ArchetypeCatalogFactory_error_missing_catalog, ex.getMessage());
-        log.error(msg, ex);
-        throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, msg, ex));
-      }
+      final IMaven maven = MavenPlugin.getMaven();
+      IMavenExecutionContext ctx = maven.createExecutionContext();
+      ArchetypeCatalog cat = ctx.execute((context, pm) -> {
+        try {
+          ArchetypeDataSource source = MavenPluginActivator.getDefault().getIndexManager().getArchetypeCatalog();
+          ProjectBuildingRequest projectBuildingRequest = context.newProjectBuildingRequest();
+          return source.getArchetypeCatalog(projectBuildingRequest);
+        } catch(ArchetypeDataSourceException ex) {
+          String msg = NLS.bind(Messages.ArchetypeCatalogFactory_error_missing_catalog, ex.getMessage());
+          log.error(msg, ex);
+          throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, msg, ex));
+        }
+      }, new NullProgressMonitor());
+      return cat;
     }
 
   }
@@ -143,156 +145,14 @@ public abstract class ArchetypeCatalogFactory {
       super(ID, Messages.ArchetypeCatalogFactory_default_local, false);
     }
 
-    public ArchetypeCatalog getArchetypeCatalog() {
-      return getArchetyper().getDefaultLocalCatalog();
-    }
-  }
-
-  /**
-   * Factory for local ArchetypeCatalog
-   */
-  public static class LocalCatalogFactory extends ArchetypeCatalogFactory {
-
-    public LocalCatalogFactory(String path, String description, boolean editable) {
-      this(path, description, editable, true);
-    }
-
-    public LocalCatalogFactory(String path, String description, boolean editable, boolean enabled) {
-      super(path, description == null || description.trim().length() == 0
-          ? NLS.bind(Messages.ArchetypeCatalogFactory_local, path)
-          : description, editable, enabled);
-    }
-
     public ArchetypeCatalog getArchetypeCatalog() throws CoreException {
-      ArchetypeCatalog catalog = getEmbeddedCatalog();
-      if(catalog == null) {
-        //local but not embedded catalog
-        catalog = getArchetyper().getLocalCatalog(getId());
-      }
-      return catalog;
-    }
-
-    private ArchetypeCatalog getEmbeddedCatalog() throws CoreException {
-      URL url = getEmbeddedUrl();
-      if(url == null) {
-        //Not an embedded catalog, nothing else to do
-        return null;
-      }
-      try (InputStream is = new BufferedInputStream(url.openStream())) {
-        return new ArchetypeCatalogXpp3Reader().read(is);
-      } catch(Exception ex) {
-        String msg = NLS.bind(Messages.ArchetypeCatalogFactory_error_missing_catalog, ex.getMessage());
-        log.error(msg, ex);
-        throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, msg, ex));
-      }
-    }
-
-    private URL getEmbeddedUrl() {
-      String path = getId();
-      if(path != null && path.startsWith("bundleentry://")) {
-        try {
-          return new URL(path);
-        } catch(Exception ex) {
-          log.error(ex.getMessage(), ex);
-        }
-      }
-      return null;
-    }
-  }
-
-  /**
-   * Factory for remote ArchetypeCatalog
-   */
-  public static class RemoteCatalogFactory extends ArchetypeCatalogFactory {
-
-    private String repositoryUrl = null;
-
-    public RemoteCatalogFactory(String url, String description, boolean editable) {
-      this(url, description, editable, true);
-    }
-
-    public RemoteCatalogFactory(String url, String description, boolean editable, boolean enabled) {
-      super(url, description == null || description.trim().length() == 0
-          ? NLS.bind(Messages.ArchetypeCatalogFactory_remote, url)
-          : description, editable, enabled);
-      repositoryUrl = parseCatalogUrl(url);
-    }
-
-    /**
-     * @param url
-     * @return
-     */
-    private String parseCatalogUrl(String url) {
-      if(url == null) {
-        return null;
-      }
-      int length = url.length();
-      if(length > 1 && url.endsWith("/")) //$NON-NLS-1$
-      {
-        return url.substring(0, url.length() - 1);
-      }
-      int idx = url.lastIndexOf("/"); //$NON-NLS-1$
-      idx = (idx > 0) ? idx : 0;
-      if(url.lastIndexOf(".") >= idx) { //$NON-NLS-1$
-        //Assume last fragment of the url is a file, let's keep its parent folder
-        return url.substring(0, idx);
-      }
-      return url;
-    }
-
-    public ArchetypeCatalog getArchetypeCatalog() {
-      String url = getId();
-      int idx = url.lastIndexOf("/archetype-catalog.xml");
-      if(idx > -1) {
-        url = url.substring(0, idx);
-      }
-      final ArchetypeCatalog catalog = getArchetyper().getRemoteCatalog(url);
-      final String remoteUrl = url;
-      @SuppressWarnings("serial")
-      ArchetypeCatalog catalogWrapper = new ArchetypeCatalog() {
-        public void addArchetype(Archetype archetype) {
-          catalog.addArchetype(archetype);
-        }
-
-        public List<Archetype> getArchetypes() {
-          List<Archetype> archetypes = new ArrayList<>(catalog.getArchetypes());
-          for(Archetype arch : archetypes) {
-            if(arch.getRepository() == null || arch.getRepository().trim().isEmpty()) {
-              arch.setRepository(remoteUrl);
-            }
-          }
-          return archetypes;
-        }
-
-        public String getModelEncoding() {
-          return catalog.getModelEncoding();
-        }
-
-        public void removeArchetype(Archetype archetype) {
-          catalog.removeArchetype(archetype);
-        }
-
-        public void setModelEncoding(String modelEncoding) {
-          catalog.setModelEncoding(modelEncoding);
-        }
-
-        public void setArchetypes(List<Archetype> archetypes) {
-          catalog.setArchetypes(archetypes);
-        }
-
-        public String toString() {
-          return catalog.toString();
-        }
-      };
-
-      return catalogWrapper;
-    }
-
-    /**
-     * @return the url of the remote repository hosting the catalog
-     */
-    public String getRepositoryUrl() {
-      return repositoryUrl;
+      final IMaven maven = MavenPlugin.getMaven();
+      IMavenExecutionContext ctx = maven.createExecutionContext();
+      ArchetypeCatalog cat = ctx.execute((context, pm) -> {
+        ProjectBuildingRequest projectBuildingRequest = context.newProjectBuildingRequest();
+        return getArchetyper().getLocalCatalog(projectBuildingRequest);
+      }, new NullProgressMonitor());
+      return cat;
     }
   }
 
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogsWriter.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogsWriter.java
index 2adb946..31ef580 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogsWriter.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeCatalogsWriter.java
@@ -45,8 +45,6 @@ import org.xml.sax.helpers.XMLFilterImpl;
 import org.eclipse.osgi.util.NLS;
 
 import org.eclipse.m2e.core.internal.Messages;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory.LocalCatalogFactory;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory.RemoteCatalogFactory;
 
 
 /**
@@ -63,14 +61,8 @@ public class ArchetypeCatalogsWriter {
 
   private static final String ATT_CATALOG_TYPE = "type"; //$NON-NLS-1$
 
-  private static final String ATT_CATALOG_LOCATION = "location"; //$NON-NLS-1$
-
   public static final String ATT_CATALOG_DESCRIPTION = "description"; //$NON-NLS-1$
 
-  private static final String TYPE_LOCAL = "local"; //$NON-NLS-1$
-
-  private static final String TYPE_REMOTE = "remote"; //$NON-NLS-1$
-
   private static final String TYPE_SYSTEM = "system"; //$NON-NLS-1$
 
   public static final String ATT_CATALOG_ID = "id";
@@ -127,20 +119,8 @@ public class ArchetypeCatalogsWriter {
 
       for(ArchetypeCatalogFactory factory : this.catalogs) {
         AttributesImpl attrs = new AttributesImpl();
-        if(factory.isEditable()) {
-          if(factory instanceof LocalCatalogFactory) {
-            attrs.addAttribute(null, ATT_CATALOG_TYPE, ATT_CATALOG_TYPE, null, TYPE_LOCAL);
-            attrs.addAttribute(null, ATT_CATALOG_LOCATION, ATT_CATALOG_LOCATION, null, factory.getId());
-            attrs.addAttribute(null, ATT_CATALOG_DESCRIPTION, ATT_CATALOG_DESCRIPTION, null, factory.getDescription());
-          } else if(factory instanceof RemoteCatalogFactory) {
-            attrs.addAttribute(null, ATT_CATALOG_TYPE, ATT_CATALOG_TYPE, null, TYPE_REMOTE);
-            attrs.addAttribute(null, ATT_CATALOG_LOCATION, ATT_CATALOG_LOCATION, null, factory.getId());
-            attrs.addAttribute(null, ATT_CATALOG_DESCRIPTION, ATT_CATALOG_DESCRIPTION, null, factory.getDescription());
-          }
-        } else {
-          attrs.addAttribute(null, ATT_CATALOG_TYPE, ATT_CATALOG_TYPE, null, TYPE_SYSTEM);
-          attrs.addAttribute(null, ATT_CATALOG_ID, ATT_CATALOG_ID, null, factory.getId());
-        }
+        attrs.addAttribute(null, ATT_CATALOG_TYPE, ATT_CATALOG_TYPE, null, TYPE_SYSTEM);
+        attrs.addAttribute(null, ATT_CATALOG_ID, ATT_CATALOG_ID, null, factory.getId());
         attrs.addAttribute(null, ATT_CATALOG_ENABLED, ATT_CATALOG_ENABLED, null, Boolean.toString(factory.isEnabled()));
         handler.startElement(null, ELEMENT_CATALOG, ELEMENT_CATALOG, attrs);
         handler.endElement(null, ELEMENT_CATALOG, ELEMENT_CATALOG);
@@ -165,28 +145,13 @@ public class ArchetypeCatalogsWriter {
 
     public void startElement(String uri, String localName, String qName, Attributes attributes) {
       if(ELEMENT_CATALOG.equals(qName) && attributes != null) {
-        String type = attributes.getValue(ATT_CATALOG_TYPE);
         String enabledStr = attributes.getValue(ATT_CATALOG_ENABLED);
         boolean enabled = enabledStr==null||Boolean.parseBoolean(enabledStr);
-        if(TYPE_LOCAL.equals(type)) {
-          String path = attributes.getValue(ATT_CATALOG_LOCATION);
-          if(path != null) {
-            String description = attributes.getValue(ATT_CATALOG_DESCRIPTION);
-            catalogs.add(new LocalCatalogFactory(path, description, true, enabled));
-          }
-        } else if(TYPE_REMOTE.equals(type)) {
-          String url = attributes.getValue(ATT_CATALOG_LOCATION);
-          if(url != null) {
-            String description = attributes.getValue(ATT_CATALOG_DESCRIPTION);
-            catalogs.add(new RemoteCatalogFactory(url, description, true, enabled));
-          }
-        } else {
-          String id = attributes.getValue(ATT_CATALOG_ID);
-          if(id != null && !id.isEmpty()) {
-            ArchetypeCatalogFactory catalog = existingCatalogs.get(id);
-            if(catalog != null) {
-              catalog.setEnabled(enabled);
-            }
+        String id = attributes.getValue(ATT_CATALOG_ID);
+        if(id != null && !id.isEmpty()) {
+          ArchetypeCatalogFactory catalog = existingCatalogs.get(id);
+          if(catalog != null) {
+            catalog.setEnabled(enabled);
           }
         }
       }
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java
index d14614f..25ce804 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/archetype/ArchetypeManager.java
@@ -180,11 +180,11 @@ public class ArchetypeManager {
     try {
       return maven.execute((context, monitor1) -> {
         ArtifactRepository localRepository = context.getLocalRepository();
-        if(aaMgr.isFileSetArchetype(groupId, artifactId, version, null, localRepository, repositories)) {
+        if(aaMgr.isFileSetArchetype(groupId, artifactId, version, null, localRepository, repositories, context.newProjectBuildingRequest())) {
           ArchetypeDescriptor descriptor;
           try {
             descriptor = aaMgr.getFileSetArchetypeDescriptor(groupId, artifactId, version, null, localRepository,
-                repositories);
+                repositories, context.newProjectBuildingRequest());
           } catch(UnknownArchetype ex) {
             throw new WrappedUnknownArchetype(ex);
           }
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java
index e7e0688..61e3762 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/NexusIndexManager.java
@@ -1313,7 +1313,7 @@ public class NexusIndexManager implements IndexManager, IMavenProjectChangedList
    */
   public ArchetypeDataSource getArchetypeCatalog() {
     try {
-      return container.lookup(ArchetypeDataSource.class, "nexus");
+      return container.lookup(ArchetypeDataSource.class, "remote-catalog");
     } catch(ComponentLookupException ex) {
       throw new NoSuchComponentException(ex);
     }
-- 
2.28.0