diff options
author | Pascal Rapicault | 2010-09-01 16:39:27 +0000 |
---|---|---|
committer | Pascal Rapicault | 2010-09-01 16:39:27 +0000 |
commit | 937b336cd746da24da8a4f88107105f40503941d (patch) | |
tree | b739db826cc242e5f78618e653137e2eaa1f345d | |
parent | 7436683ee5e3a9ed0e831651576563b594c1ac1b (diff) | |
download | rt.equinox.p2-937b336cd746da24da8a4f88107105f40503941d.tar.gz rt.equinox.p2-937b336cd746da24da8a4f88107105f40503941d.tar.xz rt.equinox.p2-937b336cd746da24da8a4f88107105f40503941d.zip |
Bug 317760 - SimpleArtifactRepository behaviour change
6 files changed, 79 insertions, 21 deletions
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java index 7e7494c34..5a02762fd 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java @@ -679,15 +679,15 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme } public synchronized URI getLocation(IArtifactDescriptor descriptor) { - if (flatButPackedEnabled(descriptor)) { - return getLocationForPackedButFlatArtifacts(descriptor); - } - // if the artifact has a uuid then use it String uuid = descriptor.getProperty(ARTIFACT_UUID); if (uuid != null) return blobStore.fileFor(bytesFromHexString(uuid)); + if (flatButPackedEnabled(descriptor)) { + return getLocationForPackedButFlatArtifacts(descriptor); + } + try { // if the artifact is just a reference then return the reference location if (descriptor instanceof SimpleArtifactDescriptor) { diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java index 8c6cb05a2..b22de467c 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java @@ -30,6 +30,7 @@ public class AllTests extends TestCase { suite.addTestSuite(CorruptedJar.class); suite.addTestSuite(FoldersRepositoryTest.class); suite.addTestSuite(JarURLArtifactRepositoryTest.class); + suite.addTestSuite(LocationTest.class); suite.addTestSuite(MD5Tests.class); suite.addTestSuite(MirrorSelectorTest.class); suite.addTestSuite(MirrorRequestTest.class); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/LocationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/LocationTest.java new file mode 100644 index 000000000..bf42d4204 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/LocationTest.java @@ -0,0 +1,47 @@ +package org.eclipse.equinox.p2.tests.artifact.repository;
+
+import java.io.File;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest;
+import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository;
+import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+
+public class LocationTest extends AbstractProvisioningTest {
+ private static final String testDataLocation = "testData/artifactRepo/packedSiblingsWithUUID";
+ private File targetLocation;
+ private IArtifactRepository targetRepository, sourceRepository;
+
+ public void setUp() throws Exception {
+ super.setUp();
+ targetLocation = File.createTempFile("target", ".repo");
+ targetLocation.delete();
+ targetLocation.mkdirs();
+ targetRepository = new SimpleArtifactRepository(getAgent(), "TargetRepo", targetLocation.toURI(), null);
+
+ IArtifactRepositoryManager mgr = getArtifactRepositoryManager();
+ sourceRepository = mgr.loadRepository((getTestData("EmptyJar repo", testDataLocation).toURI()), null);
+
+ }
+
+ protected void tearDown() throws Exception {
+ getArtifactRepositoryManager().removeRepository(targetLocation.toURI());
+ getArtifactRepositoryManager().removeRepository(sourceRepository.getLocation());
+ AbstractProvisioningTest.delete(targetLocation);
+ super.tearDown();
+ }
+
+ public void testLocation() throws Exception {
+ IArtifactKey key = new ArtifactKey("osgi.bundle", "org.springframework.ide.eclipse", Version.parseVersion("2.3.2.201003220227-RELEASE"));
+ assertTrue(sourceRepository.contains(key));
+ MirrorRequest req = new MirrorRequest(key, targetRepository, null, null);
+ req.perform(sourceRepository, new NullProgressMonitor());
+ IStatus status = req.getResult();
+ assertTrue(status.getMessage(), status.isOK());
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java index eb44203ee..531d73710 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java @@ -1378,21 +1378,4 @@ public class ArtifactMirrorApplicationTest extends AbstractProvisioningTest { fail("Error mirroring", e); } } - - public void testArtifactMirrorUUID_bug306056() throws Exception { - sourceRepoLocation = getTestData("0.0", "/testData/mirror/mirrorSourceUUID"); - String[] args = new String[] {"-destination", destRepoLocation.getAbsolutePath(), "-source", sourceRepoLocation.getAbsolutePath()}; - runMirrorApplication("Mirroring UUID", args); - - IArtifactRepository repo = loadArtifactRepository(destRepoLocation.toURI()); - Set<IArtifactKey> keys = repo.query(ArtifactKeyQuery.ALL_KEYS, null).toUnmodifiableSet(); - assertEquals(keys.size(), 1); - for (IArtifactKey key : keys) { - IArtifactDescriptor[] artifactDescriptors = repo.getArtifactDescriptors(key); - assertEquals(artifactDescriptors.length, 2); - for (int i = 0; i < artifactDescriptors.length; i++) { - assertNull(artifactDescriptors[i].getProperty("artifact.uuid")); - } - } - } }
\ No newline at end of file diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/.blobstore/5e/00c3579a3138001f1093800c21638bce b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/.blobstore/5e/00c3579a3138001f1093800c21638bce new file mode 100644 index 000000000..c57eff55e --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/.blobstore/5e/00c3579a3138001f1093800c21638bce @@ -0,0 +1 @@ +Hello World!
\ No newline at end of file diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/artifacts.xml new file mode 100644 index 000000000..3152de6f9 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/artifacts.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<?artifactRepository class='org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository' version='1.0.0'?>
+<repository type="org.eclipse.equinox.p2.artifact.repository.simpleRepository" name="P2 Third Party 2" version="1">
+ <artifacts size="1">
+ <artifact classifier="osgi.bundle" id="org.springframework.ide.eclipse" version="2.3.2.201003220227-RELEASE">
+ <properties size="4">
+ <property value="19735" name="artifact.size" />
+ <property value="18193" name="download.size" />
+ <property value="packed" name="format" />
+ <property value="00c3579a3138001f1093800c21638bce" name="artifact.uuid" />
+ </properties>
+ </artifact>
+ </artifacts>
+ <mappings size="5">
+ <rule filter="(& (classifier=osgi.bundle) (format=packed))" output="${repoUrl}/plugins/${id}_${version}.jar.pack.gz" />
+ <rule filter="(& (classifier=osgi.bundle))" output="${repoUrl}/plugins/${id}_${version}.jar" />
+ <rule filter="(& (classifier=binary))" output="${repoUrl}/binary/${id}_${version}" />
+ <rule filter="(& (classifier=org.eclipse.update.feature) (format=packed))" output="${repoUrl}/features/${id}_${version}.jar.pack.gz" />
+ <rule filter="(& (classifier=org.eclipse.update.feature))" output="${repoUrl}/features/${id}_${version}.jar" />
+ </mappings>
+ <properties size="3">
+ <property value="1277315460101" name="p2.timestamp" />
+ <property value="true" name="publishPackFilesAsSiblings" />
+ <property value="false" name="p2.compressed" />
+ </properties>
+</repository>
|