137538 mirror command mirrors nothing if one part missing
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java
index d429916..0649c4a 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/Utilities.java
@@ -220,7 +220,14 @@
}
status = new Status(IStatus.ERROR, id, code, completeString.toString(), e);
}
- return new CoreException(status);
+ CoreException ce = new CoreException(status);
+ if ( e instanceof CoreException) {
+ ce.initCause(e.getCause());
+ } else {
+ ce.initCause(e);
+ }
+ e.setStackTrace(e.getStackTrace());
+ return ce;
}
/**
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorCommand.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorCommand.java
index d3dc35e..d760e0f 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorCommand.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorCommand.java
@@ -10,16 +10,28 @@
*******************************************************************************/
package org.eclipse.update.internal.mirror;
-import java.io.*;
-import java.net.*;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.standalone.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.PluginVersionIdentifier;
+import org.eclipse.update.core.ISite;
+import org.eclipse.update.core.ISiteFeatureReference;
+import org.eclipse.update.core.JarContentReference;
+import org.eclipse.update.core.SiteFeatureReference;
+import org.eclipse.update.core.SiteFeatureReferenceModel;
+import org.eclipse.update.core.SiteManager;
+import org.eclipse.update.core.Utilities;
+import org.eclipse.update.core.VersionedIdentifier;
+import org.eclipse.update.core.model.InvalidSiteTypeException;
+import org.eclipse.update.internal.core.UpdateCore;
+import org.eclipse.update.standalone.ScriptedCommand;
+import org.eclipse.update.standalone.StandaloneUpdateApplication;
/**
* Mirrors a remote site locally.
@@ -31,6 +43,7 @@
private String fromSiteUrl;
private String toSiteDir;
private String mirrorURL;
+ private boolean ignoreNonPresentPlugins = false;
private MirrorSite mirrorSite;
public MirrorCommand(
@@ -38,12 +51,14 @@
String featureVersion,
String fromSiteUrl,
String toSiteDir,
- String mirrorUrl) {
+ String mirrorUrl,
+ String ignoreNonPresentPlugins) {
this.featureId = featureId;
this.featureVersion = featureVersion;
this.fromSiteUrl = fromSiteUrl;
this.toSiteDir = toSiteDir;
this.mirrorURL = mirrorUrl;
+ this.ignoreNonPresentPlugins = (ignoreNonPresentPlugins != null) && (ignoreNonPresentPlugins.equals("true"));
}
/**
@@ -124,6 +139,7 @@
try {
mirrorSite =
(MirrorSite) factory.createSite(new File(toSiteDir));
+ mirrorSite.setIgnoreNonPresentPlugins(ignoreNonPresentPlugins);
} catch (InvalidSiteTypeException iste) {
}
System.out.println(" Done."); //$NON-NLS-1$
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorSite.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorSite.java
index 3d4adba..83f3b2a 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorSite.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/mirror/MirrorSite.java
@@ -10,19 +10,45 @@
*******************************************************************************/
package org.eclipse.update.internal.mirror;
-import java.io.*;
-import java.net.*;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.standalone.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.update.core.ContentReference;
+import org.eclipse.update.core.ICategory;
+import org.eclipse.update.core.IFeature;
+import org.eclipse.update.core.IFeatureContentProvider;
+import org.eclipse.update.core.IFeatureReference;
+import org.eclipse.update.core.INonPluginEntry;
+import org.eclipse.update.core.IPluginEntry;
+import org.eclipse.update.core.ISite;
+import org.eclipse.update.core.ISiteFeatureReference;
+import org.eclipse.update.core.IURLEntry;
+import org.eclipse.update.core.IVerificationListener;
+import org.eclipse.update.core.Site;
+import org.eclipse.update.core.SiteFeatureReferenceModel;
+import org.eclipse.update.core.Utilities;
+import org.eclipse.update.core.VersionedIdentifier;
+import org.eclipse.update.core.model.CategoryModel;
+import org.eclipse.update.core.model.SiteModelFactory;
+import org.eclipse.update.core.model.URLEntryModel;
+import org.eclipse.update.internal.core.FatalIOException;
+import org.eclipse.update.internal.core.ISiteContentConsumer;
+import org.eclipse.update.internal.core.UpdateCore;
+import org.eclipse.update.internal.core.UpdateManagerUtils;
+import org.eclipse.update.standalone.StandaloneUpdateApplication;
/**
* Local mirror site. Read/Write
@@ -35,6 +61,7 @@
*/
private Collection downloadedPluginEntries = new ArrayList();
private Collection downloadedFeatureReferenceModels = new ArrayList();
+ private boolean ignoreNonPresentPlugins;
public MirrorSite(SiteModelFactory factory) {
this.factory = factory;
}
@@ -216,7 +243,15 @@
+ " ..."); //$NON-NLS-1$
// download plugin archives
for (int i = 0; i < pluginsToInstall.length; i++) {
- provider.getPluginEntryArchiveReferences(pluginsToInstall[i], null);
+ try {
+ provider.getPluginEntryArchiveReferences(pluginsToInstall[i], null);
+ } catch (CoreException ce) {
+ if ( ignoreNonPresentPlugins && (ce.getCause() != null) && (ce.getCause() instanceof FatalIOException) ) {
+ System.out.println("Could not mirror plug-in " + pluginsToInstall[i].getVersionedIdentifier().toString() + ". It does not exist on the given site");
+ } else {
+ throw ce;
+ }
+ }
}
System.out.println(
@@ -253,12 +288,18 @@
+ " ..."); //$NON-NLS-1$
// store plugins' archives
for (int i = 0; i < pluginsToInstall.length; i++) {
- ContentReference[] references =
- provider.getPluginEntryArchiveReferences(
- pluginsToInstall[i],
- null);
- storePluginArchive(references[0]);
- addDownloadedPluginEntry(pluginsToInstall[i]);
+ try {
+ ContentReference[] references = provider.getPluginEntryArchiveReferences( pluginsToInstall[i], null);
+ storePluginArchive(references[0]);
+ addDownloadedPluginEntry(pluginsToInstall[i]);
+ } catch (CoreException ce) {
+ if ( ignoreNonPresentPlugins && (ce.getCause() != null) && (ce.getCause() instanceof FatalIOException) ) {
+ System.out.println("Could not write plug-in " + pluginsToInstall[i].getVersionedIdentifier().toString() + ". It does not exist on the given site");
+ } else {
+ System.out.println("ignoreNonPresentPlugins:"+ignoreNonPresentPlugins);
+ throw ce;
+ }
+ }
}
System.out.println(
@@ -752,4 +793,9 @@
writer.println(" />"); //$NON-NLS-1$
}
}
+
+ public void setIgnoreNonPresentPlugins(boolean ignoreNonPresentPlugins) {
+ this.ignoreNonPresentPlugins = ignoreNonPresentPlugins;
+
+ }
}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java
index 45e60f5..8b099ac 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/CmdLineArgs.java
@@ -10,12 +10,14 @@
*******************************************************************************/
package org.eclipse.update.standalone;
-import java.net.*;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.HashMap;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.mirror.*;
+import org.eclipse.update.core.Utilities;
+import org.eclipse.update.internal.core.Messages;
+import org.eclipse.update.internal.core.UpdateCore;
+import org.eclipse.update.internal.mirror.MirrorCommand;
/**
* This class parses the command line arguments for update standalone commands
@@ -47,9 +49,11 @@
return;
}
}
+
if (isValidParam(args[i])) {
options.put(args[i], args[i + 1]);
i++;
+
}
// -to should specify a directory
// if -to specifies file URL, change it to a directory
@@ -71,7 +75,8 @@
|| param.equals("-from") //$NON-NLS-1$
|| param.equals("-featureId") //$NON-NLS-1$
|| param.equals("-verifyOnly") //$NON-NLS-1$
- || param.equals("-mirrorURL"); //$NON-NLS-1$
+ || param.equals("-mirrorURL") //$NON-NLS-1$
+ || param.equals("-ignoreMissingPlugins"); //$NON-NLS-1$
}
private boolean isValidCommand(String cmd) {
@@ -127,7 +132,8 @@
(String) options.get("-version"), //$NON-NLS-1$
(String) options.get("-from"), //$NON-NLS-1$
(String) options.get("-to"), //$NON-NLS-1$
- (String) options.get("-mirrorURL")); //$NON-NLS-1$
+ (String) options.get("-mirrorURL"), //$NON-NLS-1$
+ (String) options.get("-ignoreMissingPlugins")); //$NON-NLS-1$
else if (cmd.equals("uninstall")) //$NON-NLS-1$
return new UninstallCommand(
(String) options.get("-featureId"), //$NON-NLS-1$