Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault2010-09-01 16:39:27 +0000
committerPascal Rapicault2010-09-01 16:39:27 +0000
commit937b336cd746da24da8a4f88107105f40503941d (patch)
treeb739db826cc242e5f78618e653137e2eaa1f345d
parent7436683ee5e3a9ed0e831651576563b594c1ac1b (diff)
downloadrt.equinox.p2-937b336cd746da24da8a4f88107105f40503941d.tar.gz
rt.equinox.p2-937b336cd746da24da8a4f88107105f40503941d.tar.xz
rt.equinox.p2-937b336cd746da24da8a4f88107105f40503941d.zip
Bug 317760 - SimpleArtifactRepository behaviour change
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/LocationTest.java47
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/.blobstore/5e/00c3579a3138001f1093800c21638bce1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/packedSiblingsWithUUID/artifacts.xml26
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="(&amp; (classifier=osgi.bundle) (format=packed))" output="${repoUrl}/plugins/${id}_${version}.jar.pack.gz" />
+ <rule filter="(&amp; (classifier=osgi.bundle))" output="${repoUrl}/plugins/${id}_${version}.jar" />
+ <rule filter="(&amp; (classifier=binary))" output="${repoUrl}/binary/${id}_${version}" />
+ <rule filter="(&amp; (classifier=org.eclipse.update.feature) (format=packed))" output="${repoUrl}/features/${id}_${version}.jar.pack.gz" />
+ <rule filter="(&amp; (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>

Back to the top