356561 Revert default of composite loading back to non-atomic

- There has been a suggestion of how to fix non-atomic loading (i.e.
  implement it in a way that network problems are not silently ignored),
  so we may keep non-atomic loading as the default.

Bug: 356561 Composite repositories ignores errors when loading children
(errors are treated like missing children)
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 2a87012..e174050 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
@@ -40,8 +40,7 @@
 	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$
 
-	// 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 public boolean ATOMIC_LOADING_DEFAULT = Boolean.parseBoolean(Activator.getContext().getProperty("eclipse.p2.atomic.composite.loading.default")); //$NON-NLS-1$
 
 	// 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 a1ac236..ff4d5f2 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
@@ -38,8 +38,7 @@
 	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$
 
-	// 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 public boolean ATOMIC_LOADING_DEFAULT = Boolean.parseBoolean(Activator.getContext().getProperty("eclipse.p2.atomic.composite.loading.default")); //$NON-NLS-1$
 
 	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 23769f6..0e329b7 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
@@ -1386,11 +1386,11 @@
 		IArtifactRepository repo = null;
 		IArtifactRepositoryManager manager = getArtifactRepositoryManager();
 
-		File repoFile = getTestData("Strict composite with missing child", "/testData/artifactRepo/compositeBadChildren");
+		File repoFile = getTestData("Atomic composite with missing child", "/testData/artifactRepo/composite/missingChild/atomicLoading");
 		URI correctChildURI = URIUtil.append(repoFile.toURI(), "one");
 		URI repoURI = repoFile.getAbsoluteFile().toURI();
 
-		File alreadyLoadedChildFile = getTestData("Strict composite with missing child", "/testData/artifactRepo/compositeBadChildren/three");
+		File alreadyLoadedChildFile = getTestData("Atomic composite with missing child", "/testData/artifactRepo/composite/missingChild/atomicLoading/three");
 		IArtifactRepository alreadyLoadedChild = manager.loadRepository(alreadyLoadedChildFile.toURI(), null);
 		assertNotNull(alreadyLoadedChild);
 		URI previouslyAddedChildURI = URIUtil.append(repoFile.toURI(), "three");
@@ -1406,7 +1406,7 @@
 		}
 		assertNull(repo);
 		assertTrue("an exception should have been reported", exception);
-		assertFalse("Successfully loaded child should be removed when composite loading mode is set to strict", manager.contains(correctChildURI));
+		assertFalse("Successfully loaded child should be removed when composite loading mode is set to atomic", manager.contains(correctChildURI));
 		assertTrue("Periously loaded child should remain in repo manager", manager.contains(previouslyAddedChildURI));
 
 	}
@@ -1416,7 +1416,7 @@
 		IArtifactRepository repo = null;
 		IArtifactRepositoryManager manager = getArtifactRepositoryManager();
 
-		File repoFile = getTestData("Composite with missing child", "/testData/artifactRepo/compositeBadChildrenLenient");
+		File repoFile = getTestData("Composite with missing child", "/testData/artifactRepo/composite/missingChild/nonAtomicLoading");
 		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 e52d7b4..e01be13 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
@@ -685,11 +685,11 @@
 		IMetadataRepository repo = null;
 		IMetadataRepositoryManager manager = getMetadataRepositoryManager();
 
-		File repoFile = getTestData("Strict composite with missing child", "/testData/metadataRepo/compositeBadChildren");
+		File repoFile = getTestData("Atomic composite with missing child", "/testData/metadataRepo/composite/missingChild/atomicLoading");
 		URI correctChildURI = URIUtil.append(repoFile.toURI(), "one");
 		URI repoURI = repoFile.getAbsoluteFile().toURI();
 
-		File alreadyLoadedChildFile = getTestData("Strict composite with missing child", "/testData/metadataRepo/compositeBadChildren/three");
+		File alreadyLoadedChildFile = getTestData("Atomic composite with missing child", "/testData/metadataRepo/composite/missingChild/atomicLoading/three");
 		IMetadataRepository alreadyLoadedChild = manager.loadRepository(alreadyLoadedChildFile.toURI(), null);
 		assertNotNull(alreadyLoadedChild);
 		URI previouslyAddedChildURI = URIUtil.append(repoFile.toURI(), "three");
@@ -705,7 +705,7 @@
 		}
 		assertNull(repo);
 		assertTrue("an exception should have been reported", exception);
-		assertFalse("Successfully loaded child should be removed when composite loading mode is set to strict", manager.contains(correctChildURI));
+		assertFalse("Successfully loaded child should be removed when composite loading mode is set to atomic", manager.contains(correctChildURI));
 		assertTrue("Periously loaded child should remain in repo manager", manager.contains(previouslyAddedChildURI));
 
 	}
@@ -715,7 +715,7 @@
 		IMetadataRepository repo = null;
 		IMetadataRepositoryManager manager = getMetadataRepositoryManager();
 
-		File repoFile = getTestData("Composite with missing child", "/testData/metadataRepo/compositeBadChildrenLenient");
+		File repoFile = getTestData("Composite with missing child", "/testData/metadataRepo/composite/missingChild/nonAtomicLoading");
 		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/compositeBadChildren/compositeArtifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/compositeArtifacts.xml
similarity index 88%
rename from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/compositeArtifacts.xml
index 72be2b0..8b544da 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/compositeArtifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/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='true'/>
   </properties>
   <children size='3'>
     <child location='one'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/one/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/one/artifacts.xml
similarity index 100%
rename from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/one/artifacts.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/one/artifacts.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/three/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/three/artifacts.xml
similarity index 100%
rename from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/three/artifacts.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/atomicLoading/three/artifacts.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/compositeArtifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/nonAtomicLoading/compositeArtifacts.xml
similarity index 82%
rename from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/compositeArtifacts.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/nonAtomicLoading/compositeArtifacts.xml
index e798958..cacef3f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/compositeArtifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/nonAtomicLoading/compositeArtifacts.xml
@@ -4,7 +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'/>
+    <!--  this is the default: <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/compositeBadChildren/one/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/nonAtomicLoading/one/artifacts.xml
similarity index 100%
copy from bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildren/one/artifacts.xml
copy to bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/composite/missingChild/nonAtomicLoading/one/artifacts.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/one/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/one/artifacts.xml
deleted file mode 100644
index 19e55d7..0000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/compositeBadChildrenLenient/one/artifacts.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<?artifactRepository class='org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository' version='1.0.0'?>
-<repository name='Good Test Repository' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1' description='Good test repository description'>
-  <properties size='3'>
-    <property name='p2.compressed' value='false'/>
-    <property name='p2.timestamp' value='1218734853468'/>
-    <property name='p2.system' value='false'/>
-  </properties>
-  <mappings size='3'>
-    <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))' output='${repoUrl}/features/${id}_${version}.jar'/>
-  </mappings>
-  <artifacts size='2'>
-    <artifact classifier='osgi.bundle' id='aaPlugin' version='1.0.0'>
-      <properties size='3'>
-        <property name='artifact.size' value='469'/>
-        <property name='download.size' value='469'/>
-        <property name='download.contentType' value='application/zip'/>
-      </properties>
-    </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='aaFeature' version='1.0.0'>
-      <properties size='2'>
-        <property name='artifact.size' value='670'/>
-        <property name='download.size' value='670'/>
-      </properties>
-    </artifact>
-  </artifacts>
-</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/compositeContent.xml
similarity index 88%
rename from bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/compositeContent.xml
index 1d2b887..4209828 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/compositeContent.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/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='true'/>
   </properties>
   <children size='3'>
     <child location='one'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/one/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/one/content.xml
similarity index 100%
rename from bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/one/content.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/one/content.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/three/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/three/content.xml
similarity index 100%
rename from bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/three/content.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/atomicLoading/three/content.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/compositeContent.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/nonAtomicLoading/compositeContent.xml
similarity index 82%
rename from bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/compositeContent.xml
rename to bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/nonAtomicLoading/compositeContent.xml
index a4e2588..0b3e794 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/compositeContent.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/nonAtomicLoading/compositeContent.xml
@@ -4,7 +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'/>
+    <!--  this is the default: <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/metadataRepo/compositeBadChildren/one/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/nonAtomicLoading/one/content.xml
similarity index 100%
copy from bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildren/one/content.xml
copy to bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/composite/missingChild/nonAtomicLoading/one/content.xml
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/one/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/one/content.xml
deleted file mode 100644
index 41f172f..0000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/compositeBadChildrenLenient/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>