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='(& (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))' 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>