diff options
author | Simon Kaegi | 2008-01-10 04:19:03 +0000 |
---|---|---|
committer | Simon Kaegi | 2008-01-10 04:19:03 +0000 |
commit | 75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d (patch) | |
tree | d42b4f903ecee3e4ea5488e5ac2605b36c754464 | |
parent | 336861a60a86dacb34c798956c713192da65b437 (diff) | |
download | rt.equinox.p2-75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d.tar.gz rt.equinox.p2-75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d.tar.xz rt.equinox.p2-75e504c6c26eb0b6ad96ba4202faa9fb02a07a1d.zip |
Adding checksum support
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 |