Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small.java102
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small2.java94
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug311330.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/bug300572Small/repo/content.xml356
5 files changed, 574 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java
index f591fb846..4c26c8e8a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Sonatype, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
package org.eclipse.equinox.p2.tests.planner;
import java.util.Iterator;
@@ -21,6 +31,8 @@ public class Bug300572 extends AbstractProvisioningTest {
IMetadataRepositoryManager repoMgr = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
//The following repo contains the second patch to be installed
IMetadataRepository repo = repoMgr.loadRepository(getTestData("bug300572 data", "testData/bug300572/repo/").toURI(), new NullProgressMonitor());
+ IInstallableUnit[] ius = repo.query(QueryUtil.createIUQuery("hellopatch.feature.group"), null).toArray(IInstallableUnit.class);
+ System.out.println(ius);
IPlanner planner = (IPlanner) agent.getService(IPlanner.SERVICE_NAME);
//The profile already contains a a feature (hellofeature) and a patch for it (hellopatch).
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small.java
new file mode 100644
index 000000000..ab3b4def8
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Sonatype, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.planner;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
+import org.eclipse.equinox.p2.engine.*;
+import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.planner.IPlanner;
+import org.eclipse.equinox.p2.planner.ProfileInclusionRules;
+import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+
+//This test verify that one patch can replace another one.
+public class Bug300572Small extends AbstractProvisioningTest {
+ IInstallableUnit a1;
+ IInstallableUnit b1, b2, b3;
+ IInstallableUnitPatch p1, p2;
+
+ IProfile profile1;
+ IPlanner planner;
+ IEngine engine;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ a1 = createIU("A", Version.create("1.0.0"), new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, true)});
+ b1 = createIU("B", Version.createOSGi(1, 0, 0), true);
+ b2 = createIU("B", Version.createOSGi(2, 0, 0), true);
+ b3 = createIU("B", Version.createOSGi(3, 0, 0), true);
+
+ IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.0.0]"), null, false, false, true));
+ p1 = createIUPatch("P", Version.create("1.0.0"), true, new IRequirementChange[] {change}, new IRequirement[][] {{MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
+
+ IRequirementChange changeP2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[3.0.0,3.0.0]"), null, false, false, true));
+ p2 = createIUPatch("P", Version.create("2.0.0"), true, new IRequirementChange[] {changeP2}, new IRequirement[][] {{MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
+
+ createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1});
+
+ planner = createPlanner();
+ engine = createEngine();
+ }
+
+ public void testInstall() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {a1});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP1() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {a1, p1});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP2() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {a1, p2});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP1AndP2() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {a1, p1, p2});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.ERROR, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP1ThenP2() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {a1, p1});
+ req1.setInstallableUnitInclusionRules(p1, ProfileInclusionRules.createOptionalInclusionRule(p1));
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ assertContains(plan1.getAdditions().query(QueryUtil.ALL_UNITS, null), p1);
+ assertOK("plan execution", engine.perform(plan1, null));
+
+ ProfileChangeRequest req2 = new ProfileChangeRequest(profile1);
+ req2.addInstallableUnits(new IInstallableUnit[] {p2});
+ req1.setInstallableUnitInclusionRules(p2, ProfileInclusionRules.createOptionalInclusionRule(p2));
+ IProvisioningPlan plan2 = planner.getProvisioningPlan(req2, null, null);
+ assertOK("Planning for installing P2", plan2.getStatus());
+ assertContains(plan2.getAdditions().query(QueryUtil.ALL_UNITS, null), p2);
+ assertContains(plan2.getAdditions().query(QueryUtil.ALL_UNITS, null), b3);
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small2.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small2.java
new file mode 100644
index 000000000..c88d5d7fa
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572Small2.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Sonatype, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.planner;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
+import org.eclipse.equinox.p2.engine.*;
+import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.planner.IPlanner;
+import org.eclipse.equinox.p2.planner.ProfileInclusionRules;
+import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+
+//This test verify that one patch can replace another one.
+public class Bug300572Small2 extends AbstractProvisioningTest {
+ IInstallableUnit featureBeingPatched;
+ IInstallableUnitPatch p1, p2;
+
+ IProfile profile1;
+ IPlanner planner;
+ IEngine engine;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ IMetadataRepository repo = getMetadataRepositoryManager().loadRepository(getTestData("bug300572 data", "testData/bug300572Small/repo/").toURI(), new NullProgressMonitor());
+ featureBeingPatched = repo.query(QueryUtil.createIUQuery("hellofeature.feature.group"), null).iterator().next();
+ p1 = (IInstallableUnitPatch) repo.query(QueryUtil.createIUQuery("hellopatch.feature.group", Version.create("1.0.0")), null).iterator().next();
+ p2 = (IInstallableUnitPatch) repo.query(QueryUtil.createIUQuery("hellopatch.feature.group", Version.create("1.0.2.201001211536")), null).iterator().next();
+
+ planner = createPlanner();
+ engine = createEngine();
+ }
+
+ public void testInstall() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {featureBeingPatched});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP1() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {featureBeingPatched, p1});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP2() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {featureBeingPatched, p2});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP1AndP2() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {featureBeingPatched, p1, p2});
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.ERROR, plan1.getStatus().getSeverity());
+ }
+
+ public void testInstallAandP1ThenP2() {
+ profile1 = createProfile("TestProfile." + getName());
+ ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
+ req1.addInstallableUnits(new IInstallableUnit[] {featureBeingPatched, p1});
+ req1.setInstallableUnitInclusionRules(p1, ProfileInclusionRules.createOptionalInclusionRule(p1));
+ IProvisioningPlan plan1 = planner.getProvisioningPlan(req1, null, null);
+ assertEquals(IStatus.OK, plan1.getStatus().getSeverity());
+ assertContains(plan1.getAdditions().query(QueryUtil.ALL_UNITS, null), p1);
+ assertOK("plan execution", engine.perform(plan1, null));
+
+ ProfileChangeRequest req2 = new ProfileChangeRequest(profile1);
+ req2.addInstallableUnits(new IInstallableUnit[] {p2});
+ req1.setInstallableUnitInclusionRules(p2, ProfileInclusionRules.createOptionalInclusionRule(p2));
+ IProvisioningPlan plan2 = planner.getProvisioningPlan(req2, null, null);
+ assertOK("Planning for installing P2", plan2.getStatus());
+ assertContains(plan2.getAdditions().query(QueryUtil.ALL_UNITS, null), p2);
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug311330.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug311330.java
index deae2654a..29c56c535 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug311330.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug311330.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Sonatype, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
package org.eclipse.equinox.p2.tests.planner;
import java.net.URI;
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/bug300572Small/repo/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/bug300572Small/repo/content.xml
new file mode 100644
index 000000000..d4249709e
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/bug300572Small/repo/content.xml
@@ -0,0 +1,356 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.1.0'?>
+<repository name='file:/Users/Pascal/tmp/300372/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1.0.0'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1273714010101'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='9'>
+ <unit id='hellopatch.feature.group' version='1.0.0' singleton='false'>
+ <patchScope>
+ <scope>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' range='[1.0.0.200911201237,1.0.0.200911201237]'/>
+ </requires>
+ </scope>
+ </patchScope>
+ <changes>
+ <change>
+ <from>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='0.0.0'/>
+ </from>
+ <to>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='[1.0.1.200911201237,1.0.1.200911201237]'/>
+ </to>
+ </change>
+ </changes>
+ <lifeCycle>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' range='[1.0.0.200911201237,1.0.0.200911201237]' greedy='false'/>
+ </lifeCycle>
+ <update id='hellopatch.feature.group' range='[0.0.0,1.0.0)' severity='0'/>
+ <properties size='5'>
+ <property name='org.eclipse.equinox.p2.type.patch' value='true'/>
+ <property name='org.eclipse.equinox.p2.name' value='Hellopatch'/>
+ <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'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellopatch.feature.group' version='1.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellopatch.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 uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hello' version='1.0.2.201001211536'>
+ <update id='hello' range='[0.0.0,1.0.2.201001211536)' severity='0'/>
+ <properties size='1'>
+ <property name='org.eclipse.equinox.p2.name' value='Hello'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hello' version='1.0.2.201001211536'/>
+ <provided namespace='osgi.bundle' name='hello' version='1.0.2.201001211536'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-ManifestVersion: 2&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-Name: Hello&#xA;Bundle-Version: 1.0.2.201001211536&#xA;Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime&#xA;Bundle-RequiredExecutionEnvironment: JavaSE-1.6&#xA;Bundle-SymbolicName: hello; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-Activator: hello.Activator
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='hellopatch.feature.jar' version='1.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.name' value='Hellopatch'/>
+ <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'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellopatch.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='hellopatch' version='1.0.0'/>
+ </provides>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ <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 uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hellopatch.unrelated.feature.group' version='1.0.0.201001211543' singleton='false'>
+ <patchScope>
+ <scope>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' range='[1.0.0.200911201237,1.0.0.200911201237]'/>
+ </requires>
+ </scope>
+ </patchScope>
+ <changes>
+ <change>
+ <from>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='0.0.0'/>
+ </from>
+ <to>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='[1.0.2.201001211543,1.0.2.201001211543]'/>
+ </to>
+ </change>
+ </changes>
+ <lifeCycle>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' range='[1.0.0.200911201237,1.0.0.200911201237]' greedy='false'/>
+ </lifeCycle>
+ <update id='hellopatch.unrelated.feature.group' range='[0.0.0,1.0.0.201001211543)' severity='0'/>
+ <properties size='5'>
+ <property name='org.eclipse.equinox.p2.type.patch' value='true'/>
+ <property name='org.eclipse.equinox.p2.name' value='Hellopatch unrelated helloOnly'/>
+ <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'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellopatch.unrelated.feature.group' version='1.0.0.201001211543'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellopatch.unrelated.feature.jar' range='[1.0.0.201001211543,1.0.0.201001211543]'>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ </required>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ <licenses size='1'>
+ <license uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hellopatch.feature.group' version='1.0.2.201001211536' singleton='false'>
+ <patchScope>
+ <scope>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' range='[1.0.0.200911201237,1.0.0.200911201237]'/>
+ </requires>
+ </scope>
+ </patchScope>
+ <changes>
+ <change>
+ <from>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='0.0.0'/>
+ </from>
+ <to>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='[1.0.2.201001211536,1.0.2.201001211536]'/>
+ </to>
+ </change>
+ </changes>
+ <lifeCycle>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' range='[1.0.0.200911201237,1.0.0.200911201237]' greedy='false'/>
+ </lifeCycle>
+ <update id='hellopatch.feature.group' range='[0.0.0,1.0.2.201001211536)' severity='0'/>
+ <properties size='5'>
+ <property name='org.eclipse.equinox.p2.type.patch' value='true'/>
+ <property name='org.eclipse.equinox.p2.name' value='Hellopatch 2 helloOnly'/>
+ <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'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellopatch.feature.group' version='1.0.2.201001211536'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellopatch.feature.jar' range='[1.0.2.201001211536,1.0.2.201001211536]'>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ </required>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ <licenses size='1'>
+ <license uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hello' version='1.0.2.201001211543'>
+ <update id='hello' range='[0.0.0,1.0.2.201001211543)' severity='0'/>
+ <properties size='1'>
+ <property name='org.eclipse.equinox.p2.name' value='Hello'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hello' version='1.0.2.201001211543'/>
+ <provided namespace='osgi.bundle' name='hello' version='1.0.2.201001211543'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-ManifestVersion: 2&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-Name: Hello&#xA;Bundle-Version: 1.0.2.201001211543&#xA;Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime&#xA;Bundle-RequiredExecutionEnvironment: JavaSE-1.6&#xA;Bundle-SymbolicName: hello; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-Activator: hello.Activator&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='hello' version='1.0.1.200911201237'>
+ <update id='hello' range='[0.0.0,1.0.1.200911201237)' severity='0'/>
+ <properties size='1'>
+ <property name='org.eclipse.equinox.p2.name' value='Hello'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hello' version='1.0.1.200911201237'/>
+ <provided namespace='osgi.bundle' name='hello' version='1.0.1.200911201237'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-ManifestVersion: 2&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-Name: Hello&#xA;Bundle-Version: 1.0.1.200911201237&#xA;Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime&#xA;Bundle-RequiredExecutionEnvironment: JavaSE-1.6&#xA;Bundle-SymbolicName: hello; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-Activator: hello.Activator
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='hellopatch.unrelated.feature.jar' version='1.0.0.201001211543'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.name' value='Hellopatch unrelated helloOnly'/>
+ <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'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellopatch.unrelated.feature.jar' version='1.0.0.201001211543'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='feature' version='1.0.0'/>
+ <provided namespace='org.eclipse.update.feature' name='hellopatch.unrelated' version='1.0.0.201001211543'/>
+ </provides>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ <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 uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hellopatch.feature.jar' version='1.0.2.201001211536'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.name' value='Hellopatch 2 helloOnly'/>
+ <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'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellopatch.feature.jar' version='1.0.2.201001211536'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='feature' version='1.0.0'/>
+ <provided namespace='org.eclipse.update.feature' name='hellopatch' version='1.0.2.201001211536'/>
+ </provides>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ <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 uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hellofeature.feature.group' version='1.0.0.200911201237' singleton='false'>
+ <update id='hellofeature.feature.group' range='[0.0.0,1.0.0.200911201237)' severity='0'/>
+ <properties size='4'>
+ <property name='org.eclipse.equinox.p2.name' value='Hellofeature'/>
+ <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'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.group' version='1.0.0.200911201237'/>
+ </provides>
+ <requires size='2'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hello' range='[1.0.0.200911201237,1.0.0.200911201237]'/>
+ <required namespace='org.eclipse.equinox.p2.iu' name='hellofeature.feature.jar' range='[1.0.0.200911201237,1.0.0.200911201237]'>
+ <filter>
+ (org.eclipse.update.install.features=true)
+ </filter>
+ </required>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ <licenses size='1'>
+ <license uri='http://www.example.com/license' url='http://www.example.com/license'>
+ [Enter License Description here.]
+ </license>
+ </licenses>
+ <copyright uri='http://www.example.com/copyright' url='http://www.example.com/copyright'>
+ [Enter Copyright Description here.]
+ </copyright>
+ </unit>
+ <unit id='hello' version='1.0.0.200911201237'>
+ <update id='hello' range='[0.0.0,1.0.0.200911201237)' severity='0'/>
+ <properties size='1'>
+ <property name='org.eclipse.equinox.p2.name' value='Hello'/>
+ </properties>
+ <provides size='3'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='hello' version='1.0.0.200911201237'/>
+ <provided namespace='osgi.bundle' name='hello' version='1.0.0.200911201237'/>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='1'>
+ <instruction key='manifest'>
+ Bundle-Activator: hello.Activator&#xA;Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime&#xA;Manifest-Version: 1.0&#xA;Bundle-RequiredExecutionEnvironment: JavaSE-1.6&#xA;Bundle-Name: Hello&#xA;Bundle-Version: 1.0.0.200911201237&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-SymbolicName: hello; singleton:=true
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+
+ </units>
+</repository>

Back to the top