[Releng] Update the product catalog generator.
diff --git a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java
index 86c99d5..f53f8b3 100644
--- a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java
+++ b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java
@@ -49,6 +49,7 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.URIConverter;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -124,7 +125,7 @@
 
   private static final URI ECLIPSE_PROJECT_URI = URI.createURI("http://download.eclipse.org/eclipse/updates");
 
-  private static final URI ECLIPSE_BRANDING_NOTIFICATION_URI = URI.createURI("https://www.eclipse.org/donate/ide/?scope=${scope}&campaign=2020-06");
+  private static final URI ECLIPSE_BRANDING_NOTIFICATION_URI = URI.createURI("https://www.eclipse.org/setups/donate/?scope=${scope}&campaign=2020-06");
 
   private static final String ICON_DEFAULT = ICON_URL_PREFIX + "committers.png";
 
@@ -186,10 +187,14 @@
 
   private final String[] TRAINS = getTrains();
 
+  private URIConverter uriConverter;
+
   public Object start(IApplicationContext context) throws Exception
   {
     System.out.println("user.home=" + System.getProperty("user.home"));
 
+    uriConverter = SetupCoreUtil.createResourceSet().getURIConverter();
+
     String[] arguments = (String[])context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
     if (arguments != null)
     {
@@ -273,7 +278,7 @@
   private String[] getTrains()
   {
     return new String[] { "juno", "kepler", "luna", "mars", "neon", "oxygen", "photon", "2018-09", "2018-12", "2019-03", "2019-06", "2019-09", "2019-12",
-        "2020-03", "2020-06" };
+        "2020-03", "2020-06", "2020-09" };
   }
 
   private URI getEclipsePlatformSite(String train)
@@ -632,7 +637,7 @@
       StringBuilder log = new StringBuilder();
 
       URI originalEPPURI = URI.createURI(PACKAGES + "/" + train);
-      URI eppURI = originalEPPURI;
+      URI eppURI = uriConverter.normalize(originalEPPURI);
       log.append(eppURI);
       boolean isStaging = train.equals(stagingTrain);
       if (isStaging)
@@ -1007,7 +1012,7 @@
   private IMetadataRepository loadLatestRepository(IMetadataRepositoryManager manager, URI eppURI, URI releaseURI, boolean loadLatestChild)
       throws URISyntaxException, ProvisionException
   {
-    IMetadataRepository releaseMetaDataRepository = manager.loadRepository(new java.net.URI(releaseURI.toString()), null);
+    IMetadataRepository releaseMetaDataRepository = manager.loadRepository(new java.net.URI(uriConverter.normalize(releaseURI).toString()), null);
     IMetadataRepository result = releaseMetaDataRepository;
     if (loadLatestChild && releaseMetaDataRepository instanceof ICompositeRepository<?>)
     {
@@ -1140,7 +1145,7 @@
     productCatalogBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_URI, ECLIPSE_BRANDING_NOTIFICATION_URI.toString());
     productCatalogBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_LABEL, "DONATE");
     productCatalogBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_TOOLTIP, "Donate to the Eclipse Community");
-    productCatalogBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_ANIMATION_STYLE, "NONE");
+    productCatalogBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_ANIMATION_STYLE, "REPEAT");
     // productCatalogBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_COLOR, "color://rgb/172/5/209");
     // brandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_SCOPE, productCatalog.getLabel());
 
@@ -1154,7 +1159,7 @@
         // A copy of the annotations on the catalog because these end up in another catalog.
         productBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_URI, ECLIPSE_BRANDING_NOTIFICATION_URI.toString());
         productBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_LABEL, "DONATE");
-        productBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_ANIMATION_STYLE, "NONE");
+        productBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_ANIMATION_STYLE, "REPEAT");
         // productBrandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_COLOR, "color://rgb/12/184/198");
         // brandingInfos.put(AnnotationConstants.KEY_NOTIFICATION_SCOPE, product.getLabel());
       }
@@ -1275,7 +1280,9 @@
         }
       }
 
-      packageRepository.setURL(eppURI.toString());
+      // We only have URI mappings for a train that does not yet exist, so redirect it to the current released on.
+      URI actualEPPURI = uriConverter.getURIMap().values().contains(eppURI) ? URI.createURI(PACKAGES + "/" + getMostRecentReleasedTrain()) : eppURI;
+      packageRepository.setURL(actualEPPURI.toString());
     }
 
     Repository releaseRepository = P2Factory.eINSTANCE.createRepository();