Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Kaegi2008-01-10 04:19:03 +0000
committerSimon Kaegi2008-01-10 04:19:03 +0000
commit75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d (patch)
treed42b4f903ecee3e4ea5488e5ac2605b36c754464
parent336861a60a86dacb34c798956c713192da65b437 (diff)
downloadrt.equinox.p2-75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d.tar.gz
rt.equinox.p2-75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d.tar.xz
rt.equinox.p2-75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d.zip
Adding checksum support
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepository.java16
2 files changed, 22 insertions, 9 deletions
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java
index 1093bb3d9..e7bb70dc8 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java
@@ -14,6 +14,7 @@ import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
+import java.util.zip.*;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
@@ -51,11 +52,17 @@ public class UpdateSiteArtifactRepository extends AbstractRepository implements
DefaultSiteParser siteParser = new DefaultSiteParser();
long start = System.currentTimeMillis();
- InputStream is = new BufferedInputStream(location.openStream());
+ Checksum checksum = new CRC32();
+ InputStream is = new CheckedInputStream(new BufferedInputStream(location.openStream()), checksum);
SiteModel siteModel = siteParser.parse(is);
- System.out.println("Time Fetching Site " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
+ System.out.println("Time Fetching Artifact Site " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
- // For now we will always refresh the contents. We can do a checksum here.
+ String savedChecksum = (String) artifactRepository.getProperties().get("site.checksum");
+ String checksumString = Long.toString(checksum.getValue());
+ if (savedChecksum != null && savedChecksum.equals(checksumString))
+ return;
+
+ artifactRepository.setProperty("site.checksum", checksumString);
artifactRepository.removeAll();
SiteFeature[] siteFeatures = siteModel.getFeatures();
@@ -91,7 +98,7 @@ public class UpdateSiteArtifactRepository extends AbstractRepository implements
IArtifactDescriptor[] descriptors = (IArtifactDescriptor[]) allSiteArtifacts.toArray(new IArtifactDescriptor[allSiteArtifacts.size()]);
artifactRepository.addDescriptors(descriptors);
- System.out.println("Time Fetching Site and Features for " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
+ System.out.println("Time Fetching Artifact Site and Features for " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
} catch (IOException e) {
// TODO Auto-generated catch block
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepository.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepository.java
index 884211964..0391d53b1 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepository.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepository.java
@@ -14,6 +14,7 @@ import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
+import java.util.zip.*;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
import org.eclipse.equinox.internal.p2.metadata.generator.features.*;
@@ -56,11 +57,17 @@ public class UpdateSiteMetadataRepository extends AbstractRepository implements
DefaultSiteParser siteParser = new DefaultSiteParser();
long start = System.currentTimeMillis();
- InputStream is = new BufferedInputStream(location.openStream());
+ Checksum checksum = new CRC32();
+ InputStream is = new CheckedInputStream(new BufferedInputStream(location.openStream()), checksum);
SiteModel siteModel = siteParser.parse(is);
- System.out.println("Time Fetching Site " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
+ System.out.println("Time Fetching Metadata Site " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
- // For now we will always refresh the contents. We can do a checksum here.
+ String savedChecksum = (String) metadataRepository.getProperties().get("site.checksum");
+ String checksumString = Long.toString(checksum.getValue());
+ if (savedChecksum != null && savedChecksum.equals(checksumString))
+ return;
+
+ metadataRepository.setProperty("site.checksum", checksumString);
metadataRepository.removeAll();
Map categoryNameToFeatureIUs = new HashMap();
@@ -80,7 +87,6 @@ public class UpdateSiteMetadataRepository extends AbstractRepository implements
System.out.println(siteFeature.getFeatureIdentifier());
URL featureURL = new URL(location, siteFeature.getURLString());
Feature feature = parseFeature(featureParser, featureURL);
-
FeatureEntry[] featureEntries = feature.getEntries();
for (int j = 0; j < featureEntries.length; j++) {
FeatureEntry entry = featureEntries[j];
@@ -119,7 +125,7 @@ public class UpdateSiteMetadataRepository extends AbstractRepository implements
IInstallableUnit[] ius = (IInstallableUnit[]) allSiteIUs.toArray(new IInstallableUnit[allSiteIUs.size()]);
metadataRepository.addInstallableUnits(ius);
- System.out.println("Time Fetching Site and Features for " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
+ System.out.println("Time Fetching Metadata Site and Features for " + location + " was: " + (System.currentTimeMillis() - start) + " ms");
} catch (IOException e) {
// TODO Auto-generated catch block

Back to the top