summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Oberlies2012-09-28 13:41:24 (EDT)
committerTobias Oberlies2012-09-28 14:03:32 (EDT)
commit1c6723a02e376f32c75daada80b9acc46bd1cd01 (patch)
treedade709ca1cdbbbf80d688be3e322d72e67673aa
parentd3f8376c143849bf553164fe053febd5cd602fbf (diff)
downloadrt.equinox.p2-1c6723a02e376f32c75daada80b9acc46bd1cd01.zip
rt.equinox.p2-1c6723a02e376f32c75daada80b9acc46bd1cd01.tar.gz
rt.equinox.p2-1c6723a02e376f32c75daada80b9acc46bd1cd01.tar.bz2
356561 Require that all children of a composite repository can be loadedv20120928-180332
- Loading a composite repository now fails if any of its children cannot be loaded. So in case of transient network problems, a p2 operation now fails fast, instead of generating obscure (and possibly severe, yet unnoticed) follow-up problems. - p2 repository providers who rely on the old, lenient behaviour may re-enable it by adding the property 'p2.atomic.composite.loading' with value 'false' in their compositeContent.xml/ compositeArtifact.xml. - p2 clients who need to communicate with broken composite repositories which are out of maintenance can revert to the old behaviour by setting the system property eclipse.p2.atomic.composite.loading.default=false. Bug: 356561 Composite Repositories have non-deterministic content by default
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepository.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/Bad/missingRequiredAttribute/compositeArtifacts.xml1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/good.remote/compositeArtifacts.xml1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/three/artifacts.xml (renamed from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/three/artifacts.xml)0
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/compositeArtifacts.xml (renamed from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeArtifacts.xml)5
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/one/artifacts.xml (renamed from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/one/artifacts.xml)0
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeContent.xml13
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/Bad/missingRequiredAttribute/compositeContent.xml1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/good.remote/compositeContent.xml1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/three/content.xml (renamed from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/one/content.xml)0
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/compositeContent.xml (renamed from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeContent.xml)1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/one/content.xml (renamed from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/one/content.xml)0
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/compositeContent.xml14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/one/content.xml128
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/three/content.xml128
20 files changed, 25 insertions, 298 deletions
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java
index c1cddee..4a126c0 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java
@@ -39,7 +39,9 @@ public class CompositeArtifactRepository extends AbstractArtifactRepository impl
static final public String CONTENT_FILENAME = "compositeArtifacts"; //$NON-NLS-1$
public static final String PI_REPOSITORY_TYPE = "compositeArtifactRepository"; //$NON-NLS-1$
static final public String PROP_ATOMIC_LOADING = "p2.atomic.composite.loading"; //$NON-NLS-1$
- static final public boolean ATOMIC_LOADING_DEFAULT = false;
+
+ // by default, require that all children of a composite can be loaded; default may be changed to enforce old behavior (see bug 356561)
+ static final public boolean ATOMIC_LOADING_DEFAULT = !"false".equals(Activator.getContext().getProperty("eclipse.p2.atomic.composite.loading.default")); //$NON-NLS-1$//$NON-NLS-2$;
// keep a list of the child URIs. they can be absolute or relative. they may or may not point
// to a valid reachable repo
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepository.java b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepository.java
index ad4de6f..a1ac236 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepository.java
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/CompositeMetadataRepository.java
@@ -37,7 +37,9 @@ public class CompositeMetadataRepository extends AbstractMetadataRepository impl
static final public String REPOSITORY_TYPE = CompositeMetadataRepository.class.getName();
static final public String PI_REPOSITORY_TYPE = "compositeMetadataRepository"; //$NON-NLS-1$
static final public String PROP_ATOMIC_LOADING = "p2.atomic.composite.loading"; //$NON-NLS-1$
- static final public boolean ATOMIC_LOADING_DEFAULT = false;
+
+ // by default, require that all children of a composite can be loaded; default may be changed to enforce old behavior (see bug 356561)
+ static final public boolean ATOMIC_LOADING_DEFAULT = !"false".equals(Activator.getContext().getProperty("eclipse.p2.atomic.composite.loading.default")); //$NON-NLS-1$//$NON-NLS-2$;
static final private Integer REPOSITORY_VERSION = new Integer(1);
static final public String XML_EXTENSION = ".xml"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
index e7ff46d..b7fe6ef 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
@@ -603,7 +603,7 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
//ensure correct properties
assertEquals("2.0", "artifact name", compRepo.getName());
Map properties = compRepo.getProperties();
- assertEquals("2.1", 2, properties.size());
+ assertEquals("2.1", 3, properties.size());
String timestamp = (String) properties.get(IRepository.PROP_TIMESTAMP);
assertNotNull("2.2", timestamp);
assertEquals("2.3", "1234", timestamp);
@@ -1358,11 +1358,11 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
IArtifactRepository repo = null;
IArtifactRepositoryManager manager = getArtifactRepositoryManager();
- File repoFile = getTestData("Strict composite with missing child", "/testData/artifactRepo/compositeBadChildrenStrict");
+ File repoFile = getTestData("Strict composite with missing child", "/testData/artifactRepo/compositeBadChildren");
URI correctChildURI = URIUtil.append(repoFile.toURI(), "one");
URI repoURI = repoFile.getAbsoluteFile().toURI();
- File alreadyLoadedChildFile = getTestData("Strict composite with missing child", "/testData/artifactRepo/compositeBadChildrenStrict/three");
+ File alreadyLoadedChildFile = getTestData("Strict composite with missing child", "/testData/artifactRepo/compositeBadChildren/three");
IArtifactRepository alreadyLoadedChild = manager.loadRepository(alreadyLoadedChildFile.toURI(), null);
assertNotNull(alreadyLoadedChild);
URI previouslyAddedChildURI = URIUtil.append(repoFile.toURI(), "three");
@@ -1388,7 +1388,7 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
IArtifactRepository repo = null;
IArtifactRepositoryManager manager = getArtifactRepositoryManager();
- File repoFile = getTestData("Composite with missing child", "/testData/artifactRepo/compositeBadChildren");
+ File repoFile = getTestData("Composite with missing child", "/testData/artifactRepo/compositeBadChildrenLenient");
URI correctChildURI = URIUtil.append(repoFile.toURI(), "one");
assertFalse("Child should not be available in repo manager", manager.contains(correctChildURI));
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java
index eb7f650..e52d7b4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java
@@ -332,7 +332,7 @@ public class CompositeMetadataRepositoryTest extends AbstractProvisioningTest {
//ensure correct properties
assertEquals("2.0", "metadata name", compRepo.getName());
Map properties = compRepo.getProperties();
- assertEquals("2.1", 2, properties.size());
+ assertEquals("2.1", 3, properties.size());
String timestamp = (String) properties.get(IRepository.PROP_TIMESTAMP);
assertNotNull("2.2", timestamp);
assertEquals("2.3", "1234", timestamp);
@@ -685,11 +685,11 @@ public class CompositeMetadataRepositoryTest extends AbstractProvisioningTest {
IMetadataRepository repo = null;
IMetadataRepositoryManager manager = getMetadataRepositoryManager();
- File repoFile = getTestData("Strict composite with missing child", "/testData/metadataRepo/compositeBadChildrenStrict");
+ File repoFile = getTestData("Strict composite with missing child", "/testData/metadataRepo/compositeBadChildren");
URI correctChildURI = URIUtil.append(repoFile.toURI(), "one");
URI repoURI = repoFile.getAbsoluteFile().toURI();
- File alreadyLoadedChildFile = getTestData("Strict composite with missing child", "/testData/metadataRepo/compositeBadChildrenStrict/three");
+ File alreadyLoadedChildFile = getTestData("Strict composite with missing child", "/testData/metadataRepo/compositeBadChildren/three");
IMetadataRepository alreadyLoadedChild = manager.loadRepository(alreadyLoadedChildFile.toURI(), null);
assertNotNull(alreadyLoadedChild);
URI previouslyAddedChildURI = URIUtil.append(repoFile.toURI(), "three");
@@ -715,7 +715,7 @@ public class CompositeMetadataRepositoryTest extends AbstractProvisioningTest {
IMetadataRepository repo = null;
IMetadataRepositoryManager manager = getMetadataRepositoryManager();
- File repoFile = getTestData("Composite with missing child", "/testData/metadataRepo/compositeBadChildren");
+ File repoFile = getTestData("Composite with missing child", "/testData/metadataRepo/compositeBadChildrenLenient");
URI correctChildURI = URIUtil.append(repoFile.toURI(), "one");
assertFalse("Child should not be available in repo manager", manager.contains(correctChildURI));
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/Bad/missingRequiredAttribute/compositeArtifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/Bad/missingRequiredAttribute/compositeArtifacts.xml
index af008b2..0bd2598 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/Bad/missingRequiredAttribute/compositeArtifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/Bad/missingRequiredAttribute/compositeArtifacts.xml
@@ -4,6 +4,7 @@
<properties size='2'>
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1237472710130'/>
+ <property name='p2.atomic.composite.loading' value='false'/>
</properties>
<children size='1'>
<child location='http://www.eclipse.org/bar'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/good.remote/compositeArtifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/good.remote/compositeArtifacts.xml
index aabbcfe..2bdddd0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/good.remote/compositeArtifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/good.remote/compositeArtifacts.xml
@@ -4,6 +4,7 @@
<properties size='2'>
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1234'/>
+ <property name='p2.atomic.composite.loading' value='false'/>
</properties>
<children size='2'>
<child location='http://www.eclipse.org/foo'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml
index 26105ad..72be2b0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml
@@ -5,8 +5,9 @@
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1234'/>
</properties>
- <children size='2'>
+ <children size='3'>
<child location='one'/>
<child location='two'/>
+ <child location='three'/>
</children>
</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/three/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/three/artifacts.xml
index 6c73323..6c73323 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/three/artifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/three/artifacts.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeArtifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/compositeArtifacts.xml
index 8b544da..e798958 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeArtifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/compositeArtifacts.xml
@@ -4,11 +4,10 @@
<properties size='2'>
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1234'/>
- <property name='p2.atomic.composite.loading' value='true'/>
+ <property name='p2.atomic.composite.loading' value='false'/>
</properties>
- <children size='3'>
+ <children size='2'>
<child location='one'/>
<child location='two'/>
- <child location='three'/>
</children>
</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/one/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/one/artifacts.xml
index 19e55d7..19e55d7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/one/artifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/one/artifacts.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeContent.xml
deleted file mode 100644
index 733bd2a..0000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/compositeContent.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<?compositeMetadataRepository version='1.0.0'?>
-<repository name='metadata name' type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository' version='1.0.0'>
- <properties size='2'>
- <property name='p2.compressed' value='false'/>
- <property name='p2.timestamp' value='1234'/>
- <property name='p2.atomic.composite.loading' value='true'/>
- </properties>
- <children size='2'>
- <child location='one'/>
- <child location='two'/>
- </children>
-</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/Bad/missingRequiredAttribute/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/Bad/missingRequiredAttribute/compositeContent.xml
index 5f44a08..72ed55b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/Bad/missingRequiredAttribute/compositeContent.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/Bad/missingRequiredAttribute/compositeContent.xml
@@ -4,6 +4,7 @@
<properties size='2'>
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1226685461796'/>
+ <property name='p2.atomic.composite.loading' value='false'/>
</properties>
<UNRECOGNIZEDTAG>
</UNRECOGNIZEDTAG>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/good.remote/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/good.remote/compositeContent.xml
index a88ee35..455a25f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/good.remote/compositeContent.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/good.remote/compositeContent.xml
@@ -4,6 +4,7 @@
<properties size='2'>
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1234'/>
+ <property name='p2.atomic.composite.loading' value='false'/>
</properties>
<children size='2'>
<child location='http://www.eclipse.org/foo'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml
index af4be35..1d2b887 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml
@@ -5,8 +5,9 @@
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1234'/>
</properties>
- <children size='2'>
+ <children size='3'>
<child location='one'/>
<child location='two'/>
+ <child location='three'/>
</children>
</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/one/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/three/content.xml
index 41f172f..41f172f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/one/content.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/three/content.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/compositeContent.xml
index af4be35..a4e2588 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeContent.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/compositeContent.xml
@@ -4,6 +4,7 @@
<properties size='2'>
<property name='p2.compressed' value='false'/>
<property name='p2.timestamp' value='1234'/>
+ <property name='p2.atomic.composite.loading' value='false'/>
</properties>
<children size='2'>
<child location='one'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/one/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/one/content.xml
index 41f172f..41f172f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenStrict/one/content.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/one/content.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/compositeContent.xml
deleted file mode 100644
index 4209828..0000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/compositeContent.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<?compositeMetadataRepository version='1.0.0'?>
-<repository name='metadata name' type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository' version='1.0.0'>
- <properties size='2'>
- <property name='p2.compressed' value='false'/>
- <property name='p2.timestamp' value='1234'/>
- <property name='p2.atomic.composite.loading' value='true'/>
- </properties>
- <children size='3'>
- <child location='one'/>
- <child location='two'/>
- <child location='three'/>
- </children>
-</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/one/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/one/content.xml
deleted file mode 100644
index 41f172f..0000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/one/content.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<?metadataRepository class='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1.0.0'?>
-<repository name='Good Test Repository' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1' description='Good test repository description'>
- <properties size='3'>
- <property name='p2.system' value='true'/>
- <property name='p2.timestamp' value='1221680367875'/>
- <property name='site.checksum' value='2404093275'/>
- </properties>
- <units size='5'>
- <unit id='test.feature.feature.jar' version='1.0.0'>
- <provides size='3'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.jar' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='feature' version='1.0.0'/>
- <provided namespace='org.eclipse.update.feature' name='test.feature' version='1.0.0'/>
- </provides>
- <filter>
- (org.eclipse.update.install.features=true)
- </filter>
- <artifacts size='1'>
- <artifact classifier='org.eclipse.update.feature' id='test.feature' version='1.0.0'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='zipped'>
- true
- </instruction>
- </instructions>
- </touchpointData>
- <licenses size='1'>
- <license url='http://www.example.com/license'>
- [Enter License Description here.]
- </license>
- </licenses>
- <copyright url='http://www.example.com/copyright'>
- [Enter Copyright Description here.]
- </copyright>
- </unit>
- <unit id='test.bundle' version='1.0.0' singleton='false'>
- <update id='test.bundle' range='[0.0.0,1.0.0)' severity='0'/>
- <properties size='1'>
- <property name='org.eclipse.equinox.p2.partial.iu' value='true'/>
- </properties>
- <provides size='3'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.bundle' version='1.0.0'/>
- <provided namespace='osgi.bundle' name='test.bundle' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- </provides>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='test.bundle' version='1.0.0'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
- <unit id='test.fragment' version='1.0.0' singleton='false'>
- <update id='test.fragment' range='[0.0.0,1.0.0)' severity='0'/>
- <properties size='1'>
- <property name='org.eclipse.equinox.p2.partial.iu' value='true'/>
- </properties>
- <provides size='3'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.fragment' version='1.0.0'/>
- <provided namespace='osgi.bundle' name='test.fragment' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- </provides>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='test.fragment' version='1.0.0'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
- <unit id='test.feature.feature.group' version='1.0.0' singleton='false'>
- <update id='test.feature.feature.group' range='[0.0.0,1.0.0)' severity='0'/>
- <properties size='5'>
- <property name='org.eclipse.equinox.p2.name' value='%featurename'/>
- <property name='org.eclipse.equinox.p2.description' value='[Enter Feature Description here.]'/>
- <property name='org.eclipse.equinox.p2.description.url' value='http://www.example.com/description'/>
- <property name='org.eclipse.equinox.p2.type.group' value='true'/>
- <property name='df_LT.featurename' value='j the feature'/>
- </properties>
- <provides size='2'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.group' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <requires size='3'>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.bundle' range='[1.0.0,1.0.0]'/>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.fragment' range='[1.0.0,1.0.0]'/>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.jar' range='[1.0.0,1.0.0]'>
- <filter>
- (org.eclipse.update.install.features=true)
- </filter>
- </required>
- </requires>
- <touchpoint id='null' version='0.0.0'/>
- <licenses size='1'>
- <license url='http://www.example.com/license'>
- [Enter License Description here.]
- </license>
- </licenses>
- <copyright url='http://www.example.com/copyright'>
- [Enter Copyright Description here.]
- </copyright>
- </unit>
- <unit id='Default' version='0.0.0'>
- <properties size='3'>
- <property name='org.eclipse.equinox.p2.name' value='Uncategorized'/>
- <property name='org.eclipse.equinox.p2.description' value='Default category for otherwise uncategorized features'/>
- <property name='org.eclipse.equinox.p2.type.category' value='true'/>
- </properties>
- <provides size='1'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='Default' version='0.0.0'/>
- </provides>
- <requires size='1'>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.group' range='[1.0.0,1.0.0]'/>
- </requires>
- <touchpoint id='null' version='0.0.0'/>
- </unit>
- </units>
-</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/three/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/three/content.xml
deleted file mode 100644
index 41f172f..0000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenStrict/three/content.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<?metadataRepository class='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1.0.0'?>
-<repository name='Good Test Repository' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1' description='Good test repository description'>
- <properties size='3'>
- <property name='p2.system' value='true'/>
- <property name='p2.timestamp' value='1221680367875'/>
- <property name='site.checksum' value='2404093275'/>
- </properties>
- <units size='5'>
- <unit id='test.feature.feature.jar' version='1.0.0'>
- <provides size='3'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.jar' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='feature' version='1.0.0'/>
- <provided namespace='org.eclipse.update.feature' name='test.feature' version='1.0.0'/>
- </provides>
- <filter>
- (org.eclipse.update.install.features=true)
- </filter>
- <artifacts size='1'>
- <artifact classifier='org.eclipse.update.feature' id='test.feature' version='1.0.0'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='zipped'>
- true
- </instruction>
- </instructions>
- </touchpointData>
- <licenses size='1'>
- <license url='http://www.example.com/license'>
- [Enter License Description here.]
- </license>
- </licenses>
- <copyright url='http://www.example.com/copyright'>
- [Enter Copyright Description here.]
- </copyright>
- </unit>
- <unit id='test.bundle' version='1.0.0' singleton='false'>
- <update id='test.bundle' range='[0.0.0,1.0.0)' severity='0'/>
- <properties size='1'>
- <property name='org.eclipse.equinox.p2.partial.iu' value='true'/>
- </properties>
- <provides size='3'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.bundle' version='1.0.0'/>
- <provided namespace='osgi.bundle' name='test.bundle' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- </provides>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='test.bundle' version='1.0.0'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
- <unit id='test.fragment' version='1.0.0' singleton='false'>
- <update id='test.fragment' range='[0.0.0,1.0.0)' severity='0'/>
- <properties size='1'>
- <property name='org.eclipse.equinox.p2.partial.iu' value='true'/>
- </properties>
- <provides size='3'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.fragment' version='1.0.0'/>
- <provided namespace='osgi.bundle' name='test.fragment' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- </provides>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='test.fragment' version='1.0.0'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
- <unit id='test.feature.feature.group' version='1.0.0' singleton='false'>
- <update id='test.feature.feature.group' range='[0.0.0,1.0.0)' severity='0'/>
- <properties size='5'>
- <property name='org.eclipse.equinox.p2.name' value='%featurename'/>
- <property name='org.eclipse.equinox.p2.description' value='[Enter Feature Description here.]'/>
- <property name='org.eclipse.equinox.p2.description.url' value='http://www.example.com/description'/>
- <property name='org.eclipse.equinox.p2.type.group' value='true'/>
- <property name='df_LT.featurename' value='j the feature'/>
- </properties>
- <provides size='2'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.group' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <requires size='3'>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.bundle' range='[1.0.0,1.0.0]'/>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.fragment' range='[1.0.0,1.0.0]'/>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.jar' range='[1.0.0,1.0.0]'>
- <filter>
- (org.eclipse.update.install.features=true)
- </filter>
- </required>
- </requires>
- <touchpoint id='null' version='0.0.0'/>
- <licenses size='1'>
- <license url='http://www.example.com/license'>
- [Enter License Description here.]
- </license>
- </licenses>
- <copyright url='http://www.example.com/copyright'>
- [Enter Copyright Description here.]
- </copyright>
- </unit>
- <unit id='Default' version='0.0.0'>
- <properties size='3'>
- <property name='org.eclipse.equinox.p2.name' value='Uncategorized'/>
- <property name='org.eclipse.equinox.p2.description' value='Default category for otherwise uncategorized features'/>
- <property name='org.eclipse.equinox.p2.type.category' value='true'/>
- </properties>
- <provides size='1'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='Default' version='0.0.0'/>
- </provides>
- <requires size='1'>
- <required namespace='org.eclipse.equinox.p2.iu' name='test.feature.feature.group' range='[1.0.0,1.0.0]'/>
- </requires>
- <touchpoint id='null' version='0.0.0'/>
- </unit>
- </units>
-</repository>