View | Details | Raw Unified | Return to bug 256359 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/equinox/p2/tests/ui/query/CategoryElementCollectorTest.java (-2 / +3 lines)
Lines 10-19 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.ui.query;
11
package org.eclipse.equinox.p2.tests.ui.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.equinox.internal.p2.ui.model.CategoryElement;
15
import org.eclipse.equinox.internal.p2.ui.model.CategoryElement;
14
import org.eclipse.equinox.internal.p2.ui.query.CategoryElementCollector;
16
import org.eclipse.equinox.internal.p2.ui.query.CategoryElementCollector;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
17
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
18
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
18
import org.eclipse.equinox.p2.tests.MockQueryable;
19
import org.eclipse.equinox.p2.tests.MockQueryable;
19
20
Lines 83-89 Link Here
83
		assertEquals("1.6", 1, collector.size());
84
		assertEquals("1.6", 1, collector.size());
84
85
85
		//adding a nested category shouldn't affected size
86
		//adding a nested category shouldn't affected size
86
		RequiredCapability[] required = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "category1", null);
87
		IRequiredCapability[] required = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "category1", null);
87
		IInstallableUnit nested = createIU("Nested", required);
88
		IInstallableUnit nested = createIU("Nested", required);
88
		collector.accept(nested);
89
		collector.accept(nested);
89
		assertEquals("1.7", 1, collector.size());
90
		assertEquals("1.7", 1, collector.size());
(-)src/org/eclipse/equinox/p2/tests/ui/query/IUPropertyUtilsTest.java (-2 / +6 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.ui.query;
11
package org.eclipse.equinox.p2.tests.ui.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
16
13
import java.io.File;
17
import java.io.File;
14
import java.net.URI;
18
import java.net.URI;
15
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
19
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
Lines 41-49 Link Here
41
		assertTrue("1.0", !result.isEmpty());
45
		assertTrue("1.0", !result.isEmpty());
42
		IInstallableUnit unit = (IInstallableUnit) result.iterator().next();
46
		IInstallableUnit unit = (IInstallableUnit) result.iterator().next();
43
47
44
		Copyright copyright = org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils.getCopyright(unit);
48
		ICopyright copyright = org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils.getCopyright(unit);
45
		assertEquals("1.1", "Test Copyright", copyright.getBody());
49
		assertEquals("1.1", "Test Copyright", copyright.getBody());
46
		License license = IUPropertyUtils.getLicense(unit);
50
		ILicense license = IUPropertyUtils.getLicense(unit);
47
		assertEquals("1.2", "Test License", license.getBody());
51
		assertEquals("1.2", "Test License", license.getBody());
48
		//		assertEquals("1.3", "license.html", license.getURL().toExternalForm());
52
		//		assertEquals("1.3", "license.html", license.getURL().toExternalForm());
49
		String name = IUPropertyUtils.getIUProperty(unit, IInstallableUnit.PROP_NAME);
53
		String name = IUPropertyUtils.getIUProperty(unit, IInstallableUnit.PROP_NAME);
(-)src/org/eclipse/equinox/p2/tests/ui/query/AnyRequiredCapabilityTest.java (-3 / +4 lines)
Lines 10-21 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.ui.query;
11
package org.eclipse.equinox.p2.tests.ui.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.net.URI;
15
import java.net.URI;
14
import java.util.ArrayList;
16
import java.util.ArrayList;
15
import java.util.List;
17
import java.util.List;
16
import org.eclipse.equinox.internal.p2.ui.query.AnyRequiredCapabilityQuery;
18
import org.eclipse.equinox.internal.p2.ui.query.AnyRequiredCapabilityQuery;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
20
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
21
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
21
import org.eclipse.equinox.internal.provisional.p2.ui.QueryableMetadataRepositoryManager;
22
import org.eclipse.equinox.internal.provisional.p2.ui.QueryableMetadataRepositoryManager;
Lines 27-33 Link Here
27
 */
28
 */
28
public class AnyRequiredCapabilityTest extends AbstractQueryTest {
29
public class AnyRequiredCapabilityTest extends AbstractQueryTest {
29
	public void testMatchOtherObjects() {
30
	public void testMatchOtherObjects() {
30
		RequiredCapability[] requires = createRequiredCapabilities("org.eclipse.equinox.p2.iu", "test.bundle", null);
31
		IRequiredCapability[] requires = createRequiredCapabilities("org.eclipse.equinox.p2.iu", "test.bundle", null);
31
		AnyRequiredCapabilityQuery query = new AnyRequiredCapabilityQuery(requires);
32
		AnyRequiredCapabilityQuery query = new AnyRequiredCapabilityQuery(requires);
32
		IInstallableUnit match = createIU("test.bundle");
33
		IInstallableUnit match = createIU("test.bundle");
33
		IInstallableUnit noMatch = createIU("another.bundle");
34
		IInstallableUnit noMatch = createIU("another.bundle");
Lines 52-58 Link Here
52
		IMetadataRepositoryManager metadataRepositoryManager = getMetadataRepositoryManager();
53
		IMetadataRepositoryManager metadataRepositoryManager = getMetadataRepositoryManager();
53
		metadataRepositoryManager.addRepository(location);
54
		metadataRepositoryManager.addRepository(location);
54
		QueryableMetadataRepositoryManager manager = new QueryableMetadataRepositoryManager(Policy.getDefault(), false);
55
		QueryableMetadataRepositoryManager manager = new QueryableMetadataRepositoryManager(Policy.getDefault(), false);
55
		RequiredCapability[] requires = createRequiredCapabilities("org.eclipse.equinox.p2.iu", "test.bundle", null);
56
		IRequiredCapability[] requires = createRequiredCapabilities("org.eclipse.equinox.p2.iu", "test.bundle", null);
56
		AnyRequiredCapabilityQuery query = new AnyRequiredCapabilityQuery(requires);
57
		AnyRequiredCapabilityQuery query = new AnyRequiredCapabilityQuery(requires);
57
		Collector result = manager.query(query, new Collector(), getMonitor());
58
		Collector result = manager.query(query, new Collector(), getMonitor());
58
		assertEquals("1.0", 1, result.size());
59
		assertEquals("1.0", 1, result.size());
(-)src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java (-2 / +6 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.internal.p2.updatesite;
11
package org.eclipse.equinox.internal.p2.updatesite;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.io.File;
17
import java.io.File;
14
import java.net.URI;
18
import java.net.URI;
15
import java.net.URISyntaxException;
19
import java.net.URISyntaxException;
Lines 232-238 Link Here
232
		if (parentCategory != null) {
236
		if (parentCategory != null) {
233
			reqsConfigurationUnits.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, parentCategory.getId(), VersionRange.emptyRange, parentCategory.getFilter(), false, false));
237
			reqsConfigurationUnits.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, parentCategory.getId(), VersionRange.emptyRange, parentCategory.getFilter(), false, false));
234
		}
238
		}
235
		cat.setRequiredCapabilities((RequiredCapability[]) reqsConfigurationUnits.toArray(new RequiredCapability[reqsConfigurationUnits.size()]));
239
		cat.setRequiredCapabilities((IRequiredCapability[]) reqsConfigurationUnits.toArray(new IRequiredCapability[reqsConfigurationUnits.size()]));
236
240
237
		// Create set of provided capabilities
241
		// Create set of provided capabilities
238
		ArrayList providedCapabilities = new ArrayList();
242
		ArrayList providedCapabilities = new ArrayList();
Lines 252-258 Link Here
252
			}
256
			}
253
		}
257
		}
254
258
255
		cat.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
259
		cat.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
256
260
257
		cat.setArtifacts(new IArtifactKey[0]);
261
		cat.setArtifacts(new IArtifactKey[0]);
258
		cat.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, "true"); //$NON-NLS-1$
262
		cat.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, "true"); //$NON-NLS-1$
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/MetadataGeneratorHelper.java (-49 / +49 lines)
Lines 48-84 Link Here
48
public class MetadataGeneratorHelper {
48
public class MetadataGeneratorHelper {
49
	/**
49
	/**
50
	 * A capability namespace representing the type of Eclipse resource (bundle, feature, source bundle, etc)
50
	 * A capability namespace representing the type of Eclipse resource (bundle, feature, source bundle, etc)
51
	 * @see RequiredCapability#getNamespace()
51
	 * @see IRequiredCapability#getNamespace()
52
	 * @see ProvidedCapability#getNamespace()
52
	 * @see IProvidedCapability#getNamespace()
53
	 */
53
	 */
54
	public static final String NAMESPACE_ECLIPSE_TYPE = "org.eclipse.equinox.p2.eclipse.type"; //$NON-NLS-1$
54
	public static final String NAMESPACE_ECLIPSE_TYPE = "org.eclipse.equinox.p2.eclipse.type"; //$NON-NLS-1$
55
55
56
	/**
56
	/**
57
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
57
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
58
	 * representing and OSGi bundle resource
58
	 * representing and OSGi bundle resource
59
	 * @see RequiredCapability#getName()
59
	 * @see IRequiredCapability#getName()
60
	 * @see ProvidedCapability#getName()
60
	 * @see IProvidedCapability#getName()
61
	 */
61
	 */
62
	public static final String TYPE_ECLIPSE_BUNDLE = "bundle"; //$NON-NLS-1$
62
	public static final String TYPE_ECLIPSE_BUNDLE = "bundle"; //$NON-NLS-1$
63
	/**
63
	/**
64
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
64
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
65
	 * representing a feature
65
	 * representing a feature
66
	 * @see RequiredCapability#getName()
66
	 * @see IRequiredCapability#getName()
67
	 */
67
	 */
68
	public static final String TYPE_ECLIPSE_FEATURE = "feature"; //$NON-NLS-1$
68
	public static final String TYPE_ECLIPSE_FEATURE = "feature"; //$NON-NLS-1$
69
69
70
	/**
70
	/**
71
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
71
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
72
	 * representing a source bundle
72
	 * representing a source bundle
73
	 * @see RequiredCapability#getName()
73
	 * @see IRequiredCapability#getName()
74
	 */
74
	 */
75
	public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
75
	public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
76
76
77
	/**
77
	/**
78
	 * A capability namespace representing the localization (translation)
78
	 * A capability namespace representing the localization (translation)
79
	 * of strings from a specified IU in a specified locale
79
	 * of strings from a specified IU in a specified locale
80
	 * @see RequiredCapability#getNamespace()
80
	 * @see IRequiredCapability#getNamespace()
81
	 * @see ProvidedCapability#getNamespace()
81
	 * @see IProvidedCapability#getNamespace()
82
	 * TODO: this should be in API, probably in IInstallableUnit
82
	 * TODO: this should be in API, probably in IInstallableUnit
83
	 */
83
	 */
84
	public static final String NAMESPACE_IU_LOCALIZATION = "org.eclipse.equinox.p2.localization"; //$NON-NLS-1$
84
	public static final String NAMESPACE_IU_LOCALIZATION = "org.eclipse.equinox.p2.localization"; //$NON-NLS-1$
Lines 121-129 Link Here
121
	public static final TouchpointType TOUCHPOINT_NATIVE = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.native", new Version(1, 0, 0)); //$NON-NLS-1$
121
	public static final TouchpointType TOUCHPOINT_NATIVE = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.native", new Version(1, 0, 0)); //$NON-NLS-1$
122
	public static final TouchpointType TOUCHPOINT_OSGI = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version(1, 0, 0)); //$NON-NLS-1$
122
	public static final TouchpointType TOUCHPOINT_OSGI = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version(1, 0, 0)); //$NON-NLS-1$
123
123
124
	public static final ProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new Version(1, 0, 0));
124
	public static final IProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new Version(1, 0, 0));
125
	public static final ProvidedCapability FEATURE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, new Version(1, 0, 0));
125
	public static final IProvidedCapability FEATURE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, new Version(1, 0, 0));
126
	public static final ProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, new Version(1, 0, 0));
126
	public static final IProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, new Version(1, 0, 0));
127
127
128
	static final String DEFAULT_BUNDLE_LOCALIZATION = "plugin"; //$NON-NLS-1$	
128
	static final String DEFAULT_BUNDLE_LOCALIZATION = "plugin"; //$NON-NLS-1$	
129
129
Lines 213-225 Link Here
213
		cu.setVersion(iuVersion);
213
		cu.setVersion(iuVersion);
214
214
215
		//Indicate the IU to which this CU apply
215
		//Indicate the IU to which this CU apply
216
		cu.setHost(new RequiredCapability[] { //
216
		cu.setHost(new IRequiredCapability[] { //
217
				MetadataFactory.createRequiredCapability(CAPABILITY_NS_OSGI_BUNDLE, iuId, new VersionRange(iuVersion, true, versionMax, true), null, false, false, true), // 
217
				MetadataFactory.createRequiredCapability(CAPABILITY_NS_OSGI_BUNDLE, iuId, new VersionRange(iuVersion, true, versionMax, true), null, false, false, true), // 
218
						MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new VersionRange(new Version(1, 0, 0), true, new Version(2, 0, 0), false), null, false, false, false)});
218
						MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new VersionRange(new Version(1, 0, 0), true, new Version(2, 0, 0), false), null, false, false, false)});
219
219
220
		//Adds capabilities for fragment, self, and describing the flavor supported
220
		//Adds capabilities for fragment, self, and describing the flavor supported
221
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
221
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
222
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, iuVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
222
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, iuVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
223
223
224
		Map touchpointData = new HashMap();
224
		Map touchpointData = new HashMap();
225
		touchpointData.put("install", "installBundle(bundle:${artifact})"); //$NON-NLS-1$ //$NON-NLS-2$
225
		touchpointData.put("install", "installBundle(bundle:${artifact})"); //$NON-NLS-1$ //$NON-NLS-2$
Lines 286-292 Link Here
286
			//TODO this needs to be refined to take into account all the attribute handled by imports
286
			//TODO this needs to be refined to take into account all the attribute handled by imports
287
			reqsDeps.add(MetadataFactory.createRequiredCapability(CAPABILITY_NS_JAVA_PACKAGE, importPackageName, versionRange, null, isOptional(importSpec), false));
287
			reqsDeps.add(MetadataFactory.createRequiredCapability(CAPABILITY_NS_JAVA_PACKAGE, importPackageName, versionRange, null, isOptional(importSpec), false));
288
		}
288
		}
289
		iu.setRequiredCapabilities((RequiredCapability[]) reqsDeps.toArray(new RequiredCapability[reqsDeps.size()]));
289
		iu.setRequiredCapabilities((IRequiredCapability[]) reqsDeps.toArray(new IRequiredCapability[reqsDeps.size()]));
290
290
291
		// Create set of provided capabilities
291
		// Create set of provided capabilities
292
		ArrayList providedCapabilities = new ArrayList();
292
		ArrayList providedCapabilities = new ArrayList();
Lines 321-327 Link Here
321
			}
321
			}
322
		}
322
		}
323
323
324
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
324
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
325
325
326
		iu.setArtifacts(new IArtifactKey[] {key});
326
		iu.setArtifacts(new IArtifactKey[] {key});
327
327
Lines 407-413 Link Here
407
		fragment.setVersion(Version.fromOSGiVersion(bd.getVersion())); // TODO: is this a meaningful version?
407
		fragment.setVersion(Version.fromOSGiVersion(bd.getVersion())); // TODO: is this a meaningful version?
408
408
409
		HostSpecification hostSpec = bd.getHost();
409
		HostSpecification hostSpec = bd.getHost();
410
		RequiredCapability[] hostReqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, hostSpec.getName(), VersionRange.fromOSGiVersionRange(hostSpec.getVersionRange()), null, false, false, false)};
410
		IRequiredCapability[] hostReqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, hostSpec.getName(), VersionRange.fromOSGiVersionRange(hostSpec.getVersionRange()), null, false, false, false)};
411
		fragment.setHost(hostReqs);
411
		fragment.setHost(hostReqs);
412
412
413
		fragment.setSingleton(true);
413
		fragment.setSingleton(true);
Lines 426-432 Link Here
426
			}
426
			}
427
			providedCapabilities.add(makeTranslationCapability(hostId, locale));
427
			providedCapabilities.add(makeTranslationCapability(hostId, locale));
428
		}
428
		}
429
		fragment.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
429
		fragment.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
430
430
431
		return MetadataFactory.createInstallableUnitFragment(fragment);
431
		return MetadataFactory.createInstallableUnitFragment(fragment);
432
	}
432
	}
Lines 451-457 Link Here
451
		return id + ".translated_host_properties"; //$NON-NLS-1$
451
		return id + ".translated_host_properties"; //$NON-NLS-1$
452
	}
452
	}
453
453
454
	private static ProvidedCapability makeTranslationCapability(String hostId, Locale locale) {
454
	private static IProvidedCapability makeTranslationCapability(String hostId, Locale locale) {
455
		return MetadataFactory.createProvidedCapability(NAMESPACE_IU_LOCALIZATION, locale.toString(), new Version(1, 0, 0));
455
		return MetadataFactory.createProvidedCapability(NAMESPACE_IU_LOCALIZATION, locale.toString(), new Version(1, 0, 0));
456
	}
456
	}
457
457
Lines 482-488 Link Here
482
		if (parentCategory != null) {
482
		if (parentCategory != null) {
483
			reqsConfigurationUnits.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, parentCategory.getId(), VersionRange.emptyRange, parentCategory.getFilter(), false, false));
483
			reqsConfigurationUnits.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, parentCategory.getId(), VersionRange.emptyRange, parentCategory.getFilter(), false, false));
484
		}
484
		}
485
		cat.setRequiredCapabilities((RequiredCapability[]) reqsConfigurationUnits.toArray(new RequiredCapability[reqsConfigurationUnits.size()]));
485
		cat.setRequiredCapabilities((IRequiredCapability[]) reqsConfigurationUnits.toArray(new IRequiredCapability[reqsConfigurationUnits.size()]));
486
486
487
		// Create set of provided capabilities
487
		// Create set of provided capabilities
488
		ArrayList providedCapabilities = new ArrayList();
488
		ArrayList providedCapabilities = new ArrayList();
Lines 502-508 Link Here
502
			}
502
			}
503
		}
503
		}
504
504
505
		cat.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
505
		cat.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
506
506
507
		cat.setArtifacts(new IArtifactKey[0]);
507
		cat.setArtifacts(new IArtifactKey[0]);
508
		cat.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, "true"); //$NON-NLS-1$
508
		cat.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, "true"); //$NON-NLS-1$
Lines 550-559 Link Here
550
550
551
		// Add capabilities for fragment, self, and describing the flavor supported
551
		// Add capabilities for fragment, self, and describing the flavor supported
552
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
552
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
553
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
553
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
554
554
555
		// Create a required capability on bundles
555
		// Create a required capability on bundles
556
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, VersionRange.emptyRange, null, false, true, false)};
556
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, VersionRange.emptyRange, null, false, true, false)};
557
		cu.setHost(reqs);
557
		cu.setHost(reqs);
558
		Map touchpointData = new HashMap();
558
		Map touchpointData = new HashMap();
559
559
Lines 586-595 Link Here
586
586
587
		// Add capabilities for fragment, self, and describing the flavor supported
587
		// Add capabilities for fragment, self, and describing the flavor supported
588
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
588
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
589
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
589
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
590
590
591
		// Create a required capability on features
591
		// Create a required capability on features
592
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, VersionRange.emptyRange, null, true, true, false)};
592
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, VersionRange.emptyRange, null, true, true, false)};
593
		cu.setHost(reqs);
593
		cu.setHost(reqs);
594
594
595
		cu.setFilter(INSTALL_FEATURES_FILTER);
595
		cu.setFilter(INSTALL_FEATURES_FILTER);
Lines 610-619 Link Here
610
610
611
		// Add capabilities for fragment, self, and describing the flavor supported
611
		// Add capabilities for fragment, self, and describing the flavor supported
612
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
612
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
613
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
613
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
614
614
615
		// Create a required capability on source providers
615
		// Create a required capability on source providers
616
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, VersionRange.emptyRange, null, true, true, false)};
616
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, VersionRange.emptyRange, null, true, true, false)};
617
		cu.setHost(reqs);
617
		cu.setHost(reqs);
618
		Map touchpointData = new HashMap();
618
		Map touchpointData = new HashMap();
619
619
Lines 715-721 Link Here
715
			}
715
			}
716
		}
716
		}
717
717
718
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
718
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
719
719
720
		if (extraProperties != null) {
720
		if (extraProperties != null) {
721
			Enumeration e = extraProperties.propertyNames();
721
			Enumeration e = extraProperties.propertyNames();
Lines 759-765 Link Here
759
		iu.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(id, new VersionRange(new Version(0, 0, 0), true, new Version(feature.getVersion()), false), IUpdateDescriptor.NORMAL, null));
759
		iu.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(id, new VersionRange(new Version(0, 0, 0), true, new Version(feature.getVersion()), false), IUpdateDescriptor.NORMAL, null));
760
760
761
		FeatureEntry entries[] = feature.getEntries();
761
		FeatureEntry entries[] = feature.getEntries();
762
		RequiredCapability[] required = new RequiredCapability[entries.length + (featureIU == null ? 0 : 1)];
762
		IRequiredCapability[] required = new IRequiredCapability[entries.length + (featureIU == null ? 0 : 1)];
763
		for (int i = 0; i < entries.length; i++) {
763
		for (int i = 0; i < entries.length; i++) {
764
			VersionRange range = getVersionRange(entries[i]);
764
			VersionRange range = getVersionRange(entries[i]);
765
			String requiredId = entries[i].getId();
765
			String requiredId = entries[i].getId();
Lines 772-778 Link Here
772
		if (featureIU != null)
772
		if (featureIU != null)
773
			required[entries.length] = MetadataFactory.createRequiredCapability(IU_NAMESPACE, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false);
773
			required[entries.length] = MetadataFactory.createRequiredCapability(IU_NAMESPACE, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false);
774
		iu.setRequiredCapabilities(required);
774
		iu.setRequiredCapabilities(required);
775
		iu.setTouchpointType(TouchpointType.NONE);
775
		iu.setTouchpointType(ITouchpointType.NONE);
776
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
776
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
777
		// TODO: shouldn't the filter for the group be constructed from os, ws, arch, nl
777
		// TODO: shouldn't the filter for the group be constructed from os, ws, arch, nl
778
		// 		 of the feature?
778
		// 		 of the feature?
Lines 796-802 Link Here
796
			}
796
			}
797
		}
797
		}
798
798
799
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
799
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
800
800
801
		if (extraProperties != null) {
801
		if (extraProperties != null) {
802
			Enumeration e = extraProperties.propertyNames();
802
			Enumeration e = extraProperties.propertyNames();
Lines 834-846 Link Here
834
		ArrayList requirementChanges = new ArrayList();
834
		ArrayList requirementChanges = new ArrayList();
835
		for (int i = 0; i < entries.length; i++) {
835
		for (int i = 0; i < entries.length; i++) {
836
			VersionRange range = getVersionRange(entries[i]);
836
			VersionRange range = getVersionRange(entries[i]);
837
			RequiredCapability req = MetadataFactory.createRequiredCapability(IU_NAMESPACE, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), range, getFilter(entries[i]), entries[i].isOptional(), false);
837
			IRequiredCapability req = MetadataFactory.createRequiredCapability(IU_NAMESPACE, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), range, getFilter(entries[i]), entries[i].isOptional(), false);
838
			if (entries[i].isRequires()) {
838
			if (entries[i].isRequires()) {
839
				applicabilityScope.add(req);
839
				applicabilityScope.add(req);
840
				continue;
840
				continue;
841
			}
841
			}
842
			if (entries[i].isPlugin()) {
842
			if (entries[i].isPlugin()) {
843
				RequiredCapability from = MetadataFactory.createRequiredCapability(IU_NAMESPACE, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
843
				IRequiredCapability from = MetadataFactory.createRequiredCapability(IU_NAMESPACE, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
844
				requirementChanges.add(new RequirementChange(from, req));
844
				requirementChanges.add(new RequirementChange(from, req));
845
				continue;
845
				continue;
846
			}
846
			}
Lines 848-866 Link Here
848
		}
848
		}
849
		//Always add a requirement on the IU containing the feature jar
849
		//Always add a requirement on the IU containing the feature jar
850
		patchRequirements.add(MetadataFactory.createRequiredCapability(IU_NAMESPACE, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false));
850
		patchRequirements.add(MetadataFactory.createRequiredCapability(IU_NAMESPACE, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false));
851
		iu.setRequiredCapabilities((RequiredCapability[]) patchRequirements.toArray(new RequiredCapability[patchRequirements.size()]));
851
		iu.setRequiredCapabilities((IRequiredCapability[]) patchRequirements.toArray(new IRequiredCapability[patchRequirements.size()]));
852
		iu.setApplicabilityScope(new RequiredCapability[][] {(RequiredCapability[]) applicabilityScope.toArray(new RequiredCapability[applicabilityScope.size()])});
852
		iu.setApplicabilityScope(new IRequiredCapability[][] {(IRequiredCapability[]) applicabilityScope.toArray(new IRequiredCapability[applicabilityScope.size()])});
853
		iu.setRequirementChanges((RequirementChange[]) requirementChanges.toArray(new RequirementChange[requirementChanges.size()]));
853
		iu.setRequirementChanges((IRequirementChange[]) requirementChanges.toArray(new IRequirementChange[requirementChanges.size()]));
854
854
855
		//Generate lifecycle
855
		//Generate lifecycle
856
		RequiredCapability lifeCycle = null;
856
		IRequiredCapability lifeCycle = null;
857
		if (applicabilityScope.size() > 0) {
857
		if (applicabilityScope.size() > 0) {
858
			RequiredCapability req = (RequiredCapability) applicabilityScope.get(0);
858
			IRequiredCapability req = (IRequiredCapability) applicabilityScope.get(0);
859
			lifeCycle = MetadataFactory.createRequiredCapability(req.getNamespace(), req.getName(), req.getRange(), null, false, false, false);
859
			lifeCycle = MetadataFactory.createRequiredCapability(req.getNamespace(), req.getName(), req.getRange(), null, false, false, false);
860
			iu.setLifeCycle(lifeCycle);
860
			iu.setLifeCycle(lifeCycle);
861
		}
861
		}
862
862
863
		iu.setTouchpointType(TouchpointType.NONE);
863
		iu.setTouchpointType(ITouchpointType.NONE);
864
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
864
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
865
		iu.setProperty(IInstallableUnit.PROP_TYPE_PATCH, Boolean.TRUE.toString());
865
		iu.setProperty(IInstallableUnit.PROP_TYPE_PATCH, Boolean.TRUE.toString());
866
		// TODO: shouldn't the filter for the group be constructed from os, ws, arch, nl
866
		// TODO: shouldn't the filter for the group be constructed from os, ws, arch, nl
Lines 885-891 Link Here
885
			}
885
			}
886
		}
886
		}
887
887
888
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
888
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
889
889
890
		if (extraProperties != null) {
890
		if (extraProperties != null) {
891
			Enumeration e = extraProperties.propertyNames();
891
			Enumeration e = extraProperties.propertyNames();
Lines 928-936 Link Here
928
		String configId = "config." + id;//$NON-NLS-1$
928
		String configId = "config." + id;//$NON-NLS-1$
929
		cu.setId(configId);
929
		cu.setId(configId);
930
		cu.setVersion(version);
930
		cu.setVersion(version);
931
		cu.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, id, new VersionRange(version, true, versionMax, true), null, false, false)});
931
		cu.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, id, new VersionRange(version, true, versionMax, true), null, false, false)});
932
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
932
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
933
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configId, version)});
933
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configId, version)});
934
		cu.setTouchpointType(TOUCHPOINT_NATIVE);
934
		cu.setTouchpointType(TOUCHPOINT_NATIVE);
935
		Map touchpointData = new HashMap();
935
		Map touchpointData = new HashMap();
936
936
Lines 986-992 Link Here
986
986
987
		IArtifactKey key = createLauncherArtifactKey(launcherId, LAUNCHER_VERSION);
987
		IArtifactKey key = createLauncherArtifactKey(launcherId, LAUNCHER_VERSION);
988
		iu.setArtifacts(new IArtifactKey[] {key});
988
		iu.setArtifacts(new IArtifactKey[] {key});
989
		iu.setCapabilities(new ProvidedCapability[] {createSelfCapability(launcherId, LAUNCHER_VERSION)});
989
		iu.setCapabilities(new IProvidedCapability[] {createSelfCapability(launcherId, LAUNCHER_VERSION)});
990
		iu.setTouchpointType(TOUCHPOINT_NATIVE);
990
		iu.setTouchpointType(TOUCHPOINT_NATIVE);
991
		resultantIUs.add(MetadataFactory.createInstallableUnit(iu));
991
		resultantIUs.add(MetadataFactory.createInstallableUnit(iu));
992
992
Lines 995-1003 Link Here
995
		String configUnitId = configurationFlavor + launcherId;
995
		String configUnitId = configurationFlavor + launcherId;
996
		cu.setId(configUnitId);
996
		cu.setId(configUnitId);
997
		cu.setVersion(LAUNCHER_VERSION);
997
		cu.setVersion(LAUNCHER_VERSION);
998
		cu.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherId, new VersionRange(LAUNCHER_VERSION, true, versionMax, true), null, false, false)});
998
		cu.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherId, new VersionRange(LAUNCHER_VERSION, true, versionMax, true), null, false, false)});
999
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
999
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
1000
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, LAUNCHER_VERSION)});
1000
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, LAUNCHER_VERSION)});
1001
		cu.setTouchpointType(TOUCHPOINT_NATIVE);
1001
		cu.setTouchpointType(TOUCHPOINT_NATIVE);
1002
		Map touchpointData = new HashMap();
1002
		Map touchpointData = new HashMap();
1003
		String configurationData = "unzip(source:@artifact, target:${installFolder});"; //$NON-NLS-1$
1003
		String configurationData = "unzip(source:@artifact, target:${installFolder});"; //$NON-NLS-1$
Lines 1029-1035 Link Here
1029
		iud.setId(iuId + '.' + launcherName);
1029
		iud.setId(iuId + '.' + launcherName);
1030
		iud.setVersion(version);
1030
		iud.setVersion(version);
1031
		iud.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
1031
		iud.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
1032
		iud.setCapabilities(new ProvidedCapability[] {createSelfCapability(iuId + '.' + launcherName, version)});
1032
		iud.setCapabilities(new IProvidedCapability[] {createSelfCapability(iuId + '.' + launcherName, version)});
1033
1033
1034
		if (os != null || ws != null || arch != null) {
1034
		if (os != null || ws != null || arch != null) {
1035
			String filterOs = os != null ? "(osgi.os=" + os + ")" : ""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
1035
			String filterOs = os != null ? "(osgi.os=" + os + ")" : ""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
Lines 1047-1053 Link Here
1047
		return iu;
1047
		return iu;
1048
	}
1048
	}
1049
1049
1050
	public static ProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
1050
	public static IProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
1051
		return MetadataFactory.createProvidedCapability(IU_NAMESPACE, installableUnitId, installableUnitVersion);
1051
		return MetadataFactory.createProvidedCapability(IU_NAMESPACE, installableUnitId, installableUnitVersion);
1052
	}
1052
	}
1053
1053
Lines 1075-1081 Link Here
1075
	/**
1075
	/**
1076
	 * @deprecated moved to JREAction
1076
	 * @deprecated moved to JREAction
1077
	 */
1077
	 */
1078
	private static ProvidedCapability[] generateJRECapability(String installableUnitId, Version installableUnitVersion, InputStream profileStream) {
1078
	private static IProvidedCapability[] generateJRECapability(String installableUnitId, Version installableUnitVersion, InputStream profileStream) {
1079
		if (profileStream == null) {
1079
		if (profileStream == null) {
1080
			//use the 1.6 profile stored in the generator bundle
1080
			//use the 1.6 profile stored in the generator bundle
1081
			try {
1081
			try {
Lines 1088-1094 Link Here
1088
		try {
1088
		try {
1089
			p.load(profileStream);
1089
			p.load(profileStream);
1090
			ManifestElement[] jrePackages = ManifestElement.parseHeader("org.osgi.framework.system.packages", (String) p.get("org.osgi.framework.system.packages")); //$NON-NLS-1$ //$NON-NLS-2$
1090
			ManifestElement[] jrePackages = ManifestElement.parseHeader("org.osgi.framework.system.packages", (String) p.get("org.osgi.framework.system.packages")); //$NON-NLS-1$ //$NON-NLS-2$
1091
			ProvidedCapability[] exportedPackageAsCapabilities = new ProvidedCapability[jrePackages.length + 1];
1091
			IProvidedCapability[] exportedPackageAsCapabilities = new IProvidedCapability[jrePackages.length + 1];
1092
			exportedPackageAsCapabilities[0] = createSelfCapability(installableUnitId, installableUnitVersion);
1092
			exportedPackageAsCapabilities[0] = createSelfCapability(installableUnitId, installableUnitVersion);
1093
			for (int i = 1; i <= jrePackages.length; i++) {
1093
			for (int i = 1; i <= jrePackages.length; i++) {
1094
				exportedPackageAsCapabilities[i] = MetadataFactory.createProvidedCapability(CAPABILITY_NS_JAVA_PACKAGE, jrePackages[i - 1].getValue(), null);
1094
				exportedPackageAsCapabilities[i] = MetadataFactory.createProvidedCapability(CAPABILITY_NS_JAVA_PACKAGE, jrePackages[i - 1].getValue(), null);
Lines 1109-1115 Link Here
1109
				}
1109
				}
1110
			}
1110
			}
1111
		}
1111
		}
1112
		return new ProvidedCapability[0];
1112
		return new IProvidedCapability[0];
1113
	}
1113
	}
1114
1114
1115
	/**
1115
	/**
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/Generator.java (-15 / +19 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.provisional.p2.metadata.generator;
9
package org.eclipse.equinox.internal.provisional.p2.metadata.generator;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
14
11
import java.io.*;
15
import java.io.*;
12
import java.net.URI;
16
import java.net.URI;
13
import java.net.URISyntaxException;
17
import java.net.URISyntaxException;
Lines 233-245 Link Here
233
		}
237
		}
234
		if (requires != null)
238
		if (requires != null)
235
			reqsConfigurationUnits.addAll(requires);
239
			reqsConfigurationUnits.addAll(requires);
236
		root.setRequiredCapabilities((RequiredCapability[]) reqsConfigurationUnits.toArray(new RequiredCapability[reqsConfigurationUnits.size()]));
240
		root.setRequiredCapabilities((IRequiredCapability[]) reqsConfigurationUnits.toArray(new IRequiredCapability[reqsConfigurationUnits.size()]));
237
		root.setArtifacts(new IArtifactKey[0]);
241
		root.setArtifacts(new IArtifactKey[0]);
238
242
239
		root.setProperty("lineUp", "true"); //$NON-NLS-1$ //$NON-NLS-2$
243
		root.setProperty("lineUp", "true"); //$NON-NLS-1$ //$NON-NLS-2$
240
		root.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(configurationIdentification, VersionRange.emptyRange, IUpdateDescriptor.NORMAL, null));
244
		root.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(configurationIdentification, VersionRange.emptyRange, IUpdateDescriptor.NORMAL, null));
241
		root.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
245
		root.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
242
		root.setCapabilities(new ProvidedCapability[] {MetadataGeneratorHelper.createSelfCapability(configurationIdentification, new Version(configurationVersion))});
246
		root.setCapabilities(new IProvidedCapability[] {MetadataGeneratorHelper.createSelfCapability(configurationIdentification, new Version(configurationVersion))});
243
		root.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
247
		root.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
244
		Map touchpointData = new HashMap();
248
		Map touchpointData = new HashMap();
245
249
Lines 697-704 Link Here
697
			IInstallableUnit iu = (IInstallableUnit) iterator.next();
701
			IInstallableUnit iu = (IInstallableUnit) iterator.next();
698
			required.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), VersionRange.emptyRange, iu.getFilter(), false, false));
702
			required.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), VersionRange.emptyRange, iu.getFilter(), false, false));
699
		}
703
		}
700
		cat.setRequiredCapabilities((RequiredCapability[]) required.toArray(new RequiredCapability[required.size()]));
704
		cat.setRequiredCapabilities((IRequiredCapability[]) required.toArray(new IRequiredCapability[required.size()]));
701
		cat.setCapabilities(new ProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, categoryId, Version.emptyVersion)});
705
		cat.setCapabilities(new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, categoryId, Version.emptyVersion)});
702
		cat.setArtifacts(new IArtifactKey[0]);
706
		cat.setArtifacts(new IArtifactKey[0]);
703
		cat.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, "true"); //$NON-NLS-1$
707
		cat.setProperty(IInstallableUnit.PROP_TYPE_CATEGORY, "true"); //$NON-NLS-1$
704
		return MetadataFactory.createInstallableUnit(cat);
708
		return MetadataFactory.createInstallableUnit(cat);
Lines 797-809 Link Here
797
		IArtifactKey key = MetadataGeneratorHelper.createLauncherArtifactKey(launcherId, launcherVersion);
801
		IArtifactKey key = MetadataGeneratorHelper.createLauncherArtifactKey(launcherId, launcherVersion);
798
		iu.setArtifacts(new IArtifactKey[] {key});
802
		iu.setArtifacts(new IArtifactKey[] {key});
799
		iu.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_NATIVE);
803
		iu.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_NATIVE);
800
		ProvidedCapability launcherCapability = MetadataFactory.createProvidedCapability(info.getFlavor() + productNamespace, launcherIdPrefix, launcherVersion);
804
		IProvidedCapability launcherCapability = MetadataFactory.createProvidedCapability(info.getFlavor() + productNamespace, launcherIdPrefix, launcherVersion);
801
		iu.setCapabilities(new ProvidedCapability[] {MetadataGeneratorHelper.createSelfCapability(launcherId, launcherVersion), launcherCapability});
805
		iu.setCapabilities(new IProvidedCapability[] {MetadataGeneratorHelper.createSelfCapability(launcherId, launcherVersion), launcherCapability});
802
806
803
		String launcherFragment = ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + ws + '.' + os;
807
		String launcherFragment = ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + ws + '.' + os;
804
		if (!(Constants.OS_MACOSX.equals(os) && !Constants.ARCH_X86_64.equals(arch)))
808
		if (!(Constants.OS_MACOSX.equals(os) && !Constants.ARCH_X86_64.equals(arch)))
805
			launcherFragment += '.' + arch;
809
			launcherFragment += '.' + arch;
806
		iu.setRequiredCapabilities(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherFragment, VersionRange.emptyRange, filter, false, false)});
810
		iu.setRequiredCapabilities(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherFragment, VersionRange.emptyRange, filter, false, false)});
807
		result.rootIUs.add(MetadataFactory.createInstallableUnit(iu));
811
		result.rootIUs.add(MetadataFactory.createInstallableUnit(iu));
808
812
809
		//Create the CU
813
		//Create the CU
Lines 813-822 Link Here
813
		cu.setVersion(launcherVersion);
817
		cu.setVersion(launcherVersion);
814
		if (filter != null)
818
		if (filter != null)
815
			cu.setFilter(filter);
819
			cu.setFilter(filter);
816
		cu.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherId, new VersionRange(launcherVersion, true, launcherVersion, true), null, false, false)});
820
		cu.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherId, new VersionRange(launcherVersion, true, launcherVersion, true), null, false, false)});
817
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
821
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
818
		//TODO bug 218890, would like the fragment to provide the launcher capability as well, but can't right now.
822
		//TODO bug 218890, would like the fragment to provide the launcher capability as well, but can't right now.
819
		cu.setCapabilities(new ProvidedCapability[] {MetadataGeneratorHelper.createSelfCapability(configUnitId, launcherVersion)});
823
		cu.setCapabilities(new IProvidedCapability[] {MetadataGeneratorHelper.createSelfCapability(configUnitId, launcherVersion)});
820
824
821
		mungeLauncherFileNames(root);
825
		mungeLauncherFileNames(root);
822
826
Lines 917-925 Link Here
917
			cu.setSingleton(true);
921
			cu.setSingleton(true);
918
			cu.setFilter("(& (osgi.ws=" + ws + ") (osgi.os=" + os + ") (osgi.arch=" + arch + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
922
			cu.setFilter("(& (osgi.ws=" + ws + ") (osgi.os=" + os + ") (osgi.arch=" + arch + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
919
923
920
			ProvidedCapability productConfigCapability = MetadataFactory.createProvidedCapability(info.getFlavor() + productFile.getId(), productFile.getId() + PRODUCT_CONFIG_SUFFIX, cuVersion);
924
			IProvidedCapability productConfigCapability = MetadataFactory.createProvidedCapability(info.getFlavor() + productFile.getId(), productFile.getId() + PRODUCT_CONFIG_SUFFIX, cuVersion);
921
			ProvidedCapability selfCapability = MetadataGeneratorHelper.createSelfCapability(configUnitId, cuVersion);
925
			IProvidedCapability selfCapability = MetadataGeneratorHelper.createSelfCapability(configUnitId, cuVersion);
922
			cu.setCapabilities(new ProvidedCapability[] {selfCapability, productConfigCapability});
926
			cu.setCapabilities(new IProvidedCapability[] {selfCapability, productConfigCapability});
923
927
924
			cu.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
928
			cu.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
925
			Map touchpointData = new HashMap();
929
			Map touchpointData = new HashMap();
Lines 963-971 Link Here
963
		cu.setSingleton(true);
967
		cu.setSingleton(true);
964
		cu.setFilter("(& (osgi.ws=" + ws + ") (osgi.os=" + os + ") (osgi.arch=" + arch + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
968
		cu.setFilter("(& (osgi.ws=" + ws + ") (osgi.os=" + os + ") (osgi.arch=" + arch + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
965
969
966
		ProvidedCapability productIniCapability = MetadataFactory.createProvidedCapability(info.getFlavor() + productFile.getId(), productFile.getId() + PRODUCT_INI_SUFFIX, cuVersion);
970
		IProvidedCapability productIniCapability = MetadataFactory.createProvidedCapability(info.getFlavor() + productFile.getId(), productFile.getId() + PRODUCT_INI_SUFFIX, cuVersion);
967
		ProvidedCapability selfCapability = MetadataGeneratorHelper.createSelfCapability(configUnitId, cuVersion);
971
		IProvidedCapability selfCapability = MetadataGeneratorHelper.createSelfCapability(configUnitId, cuVersion);
968
		cu.setCapabilities(new ProvidedCapability[] {selfCapability, productIniCapability});
972
		cu.setCapabilities(new IProvidedCapability[] {selfCapability, productIniCapability});
969
973
970
		cu.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
974
		cu.setTouchpointType(MetadataGeneratorHelper.TOUCHPOINT_OSGI);
971
		Map touchpointData = new HashMap();
975
		Map touchpointData = new HashMap();
(-)src/org/eclipse/equinox/internal/p2/ui/admin/dialogs/IUImplementationGroup.java (-4 / +12 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.admin.dialogs;
11
package org.eclipse.equinox.internal.p2.ui.admin.dialogs;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
20
13
import org.eclipse.core.runtime.IStatus;
21
import org.eclipse.core.runtime.IStatus;
14
import org.eclipse.core.runtime.Status;
22
import org.eclipse.core.runtime.Status;
15
import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIActivator;
23
import org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIActivator;
Lines 149-172 Link Here
149
		if (value != null) {
157
		if (value != null) {
150
			namespace.setText(value);
158
			namespace.setText(value);
151
		}
159
		}
152
		TouchpointType type = iu.getTouchpointType();
160
		ITouchpointType type = iu.getTouchpointType();
153
		if (type != null) {
161
		if (type != null) {
154
			touchpointType.setText(type.getId());
162
			touchpointType.setText(type.getId());
155
		}
163
		}
156
		TouchpointData[] data = iu.getTouchpointData();
164
		ITouchpointData[] data = iu.getTouchpointData();
157
		String[] items = new String[data.length];
165
		String[] items = new String[data.length];
158
		for (int i = 0; i < data.length; i++) {
166
		for (int i = 0; i < data.length; i++) {
159
			items[i] = data[i].toString();
167
			items[i] = data[i].toString();
160
		}
168
		}
161
		touchpointData.setItems(items);
169
		touchpointData.setItems(items);
162
170
163
		RequiredCapability[] req = iu.getRequiredCapabilities();
171
		IRequiredCapability[] req = iu.getRequiredCapabilities();
164
		items = new String[req.length];
172
		items = new String[req.length];
165
		for (int i = 0; i < req.length; i++) {
173
		for (int i = 0; i < req.length; i++) {
166
			items[i] = req[i].toString();
174
			items[i] = req[i].toString();
167
		}
175
		}
168
		requiredCapabilities.setItems(items);
176
		requiredCapabilities.setItems(items);
169
		ProvidedCapability[] prov = iu.getProvidedCapabilities();
177
		IProvidedCapability[] prov = iu.getProvidedCapabilities();
170
		items = new String[prov.length];
178
		items = new String[prov.length];
171
		for (int i = 0; i < prov.length; i++) {
179
		for (int i = 0; i < prov.length; i++) {
172
			items[i] = prov[i].toString();
180
			items[i] = prov[i].toString();
(-)src/org/eclipse/equinox/internal/p2/ui/model/CategoryElement.java (-5 / +6 lines)
Lines 10-19 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.model;
11
package org.eclipse.equinox.internal.p2.ui.model;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.util.*;
15
import java.util.*;
14
import org.eclipse.core.runtime.IProgressMonitor;
16
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
17
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
18
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
18
import org.eclipse.equinox.internal.provisional.p2.ui.policy.QueryProvider;
19
import org.eclipse.equinox.internal.provisional.p2.ui.policy.QueryProvider;
19
20
Lines 26-32 Link Here
26
public class CategoryElement extends RemoteQueriedElement implements IIUElement {
27
public class CategoryElement extends RemoteQueriedElement implements IIUElement {
27
28
28
	private ArrayList ius = new ArrayList(1);
29
	private ArrayList ius = new ArrayList(1);
29
	private RequiredCapability[] requirements;
30
	private IRequiredCapability[] requirements;
30
31
31
	public CategoryElement(Object parent, IInstallableUnit iu) {
32
	public CategoryElement(Object parent, IInstallableUnit iu) {
32
		super(parent);
33
		super(parent);
Lines 85-93 Link Here
85
		ius.add(iu);
86
		ius.add(iu);
86
	}
87
	}
87
88
88
	public RequiredCapability[] getRequirements() {
89
	public IRequiredCapability[] getRequirements() {
89
		if (ius == null || ius.isEmpty())
90
		if (ius == null || ius.isEmpty())
90
			return new RequiredCapability[0];
91
			return new IRequiredCapability[0];
91
		if (requirements == null) {
92
		if (requirements == null) {
92
			if (ius.size() == 1)
93
			if (ius.size() == 1)
93
				requirements = getIU().getRequiredCapabilities();
94
				requirements = getIU().getRequiredCapabilities();
Lines 98-104 Link Here
98
					IInstallableUnit iu = (IInstallableUnit) iter.next();
99
					IInstallableUnit iu = (IInstallableUnit) iter.next();
99
					capabilities.addAll(Arrays.asList(iu.getRequiredCapabilities()));
100
					capabilities.addAll(Arrays.asList(iu.getRequiredCapabilities()));
100
				}
101
				}
101
				requirements = (RequiredCapability[]) capabilities.toArray(new RequiredCapability[capabilities.size()]);
102
				requirements = (IRequiredCapability[]) capabilities.toArray(new IRequiredCapability[capabilities.size()]);
102
			}
103
			}
103
		}
104
		}
104
		return requirements;
105
		return requirements;
(-)src/org/eclipse/equinox/internal/p2/ui/model/RollbackProfileElement.java (-2 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.model;
11
package org.eclipse.equinox.internal.p2.ui.model;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import com.ibm.icu.text.DateFormat;
15
import com.ibm.icu.text.DateFormat;
14
import java.util.Date;
16
import java.util.Date;
15
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IProgressMonitor;
Lines 19-25 Link Here
19
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
21
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
20
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
22
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
23
import org.eclipse.equinox.internal.provisional.p2.query.IQueryable;
24
import org.eclipse.equinox.internal.provisional.p2.query.IQueryable;
24
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
25
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
25
import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
26
import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
Lines 134-140 Link Here
134
	/* (non-Javadoc)
135
	/* (non-Javadoc)
135
	 * @see org.eclipse.equinox.internal.p2.ui.model.IUElement#getRequirements()
136
	 * @see org.eclipse.equinox.internal.p2.ui.model.IUElement#getRequirements()
136
	 */
137
	 */
137
	public RequiredCapability[] getRequirements() {
138
	public IRequiredCapability[] getRequirements() {
138
		return iu.getRequiredCapabilities();
139
		return iu.getRequiredCapabilities();
139
	}
140
	}
140
141
(-)src/org/eclipse/equinox/internal/p2/ui/model/AvailableIUElement.java (-2 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.model;
11
package org.eclipse.equinox.internal.p2.ui.model;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.SubMonitor;
16
import org.eclipse.core.runtime.SubMonitor;
15
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
17
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
Lines 19-25 Link Here
19
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
21
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
20
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
22
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
23
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
24
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
24
import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
25
import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
25
import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy;
26
import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy;
Lines 127-133 Link Here
127
	/* (non-Javadoc)
128
	/* (non-Javadoc)
128
	 * @see org.eclipse.equinox.internal.p2.ui.model.IUElement#getRequirements()
129
	 * @see org.eclipse.equinox.internal.p2.ui.model.IUElement#getRequirements()
129
	 */
130
	 */
130
	public RequiredCapability[] getRequirements() {
131
	public IRequiredCapability[] getRequirements() {
131
		return iu.getRequiredCapabilities();
132
		return iu.getRequiredCapabilities();
132
	}
133
	}
133
134
(-)src/org/eclipse/equinox/internal/p2/ui/model/IIUElement.java (-2 / +3 lines)
Lines 10-18 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.model;
11
package org.eclipse.equinox.internal.p2.ui.model;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
16
17
17
/**
18
/**
18
 * Interface for elements that represent IU's.
19
 * Interface for elements that represent IU's.
Lines 49-55 Link Here
49
50
50
	public void computeSize(IProgressMonitor monitor);
51
	public void computeSize(IProgressMonitor monitor);
51
52
52
	public RequiredCapability[] getRequirements();
53
	public IRequiredCapability[] getRequirements();
53
54
54
	public Object getParent(Object obj);
55
	public Object getParent(Object obj);
55
56
(-)src/org/eclipse/equinox/internal/p2/ui/query/UncategorizedElementCollector.java (-2 / +3 lines)
Lines 10-19 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.query;
11
package org.eclipse.equinox.internal.p2.ui.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.util.*;
15
import java.util.*;
14
import org.eclipse.equinox.internal.p2.ui.model.QueriedElementCollector;
16
import org.eclipse.equinox.internal.p2.ui.model.QueriedElementCollector;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
17
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
18
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
18
import org.eclipse.equinox.internal.provisional.p2.query.IQueryable;
19
import org.eclipse.equinox.internal.provisional.p2.query.IQueryable;
19
20
Lines 95-101 Link Here
95
		Iterator iter = categories.iterator();
96
		Iterator iter = categories.iterator();
96
		while (iter.hasNext()) {
97
		while (iter.hasNext()) {
97
			IInstallableUnit categoryIU = (IInstallableUnit) iter.next();
98
			IInstallableUnit categoryIU = (IInstallableUnit) iter.next();
98
			RequiredCapability[] requirements = categoryIU.getRequiredCapabilities();
99
			IRequiredCapability[] requirements = categoryIU.getRequiredCapabilities();
99
			for (int i = 0; i < requirements.length; i++) {
100
			for (int i = 0; i < requirements.length; i++) {
100
				if (requirements[i].getNamespace().equals(IInstallableUnit.NAMESPACE_IU_ID)) {
101
				if (requirements[i].getNamespace().equals(IInstallableUnit.NAMESPACE_IU_ID)) {
101
					IInstallableUnit[] arrayAllOthers = (IInstallableUnit[]) allOthers.toArray(new IInstallableUnit[allOthers.size()]);
102
					IInstallableUnit[] arrayAllOthers = (IInstallableUnit[]) allOthers.toArray(new IInstallableUnit[allOthers.size()]);
(-)src/org/eclipse/equinox/internal/p2/ui/query/CategoryElementCollector.java (-1 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.query;
11
package org.eclipse.equinox.internal.p2.ui.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.util.*;
15
import java.util.*;
14
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
16
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
15
import org.eclipse.equinox.internal.p2.ui.model.*;
17
import org.eclipse.equinox.internal.p2.ui.model.*;
Lines 48-54 Link Here
48
		if (!(match instanceof IInstallableUnit))
50
		if (!(match instanceof IInstallableUnit))
49
			return true;
51
			return true;
50
		IInstallableUnit iu = (IInstallableUnit) match;
52
		IInstallableUnit iu = (IInstallableUnit) match;
51
		RequiredCapability[] requirements = iu.getRequiredCapabilities();
53
		IRequiredCapability[] requirements = iu.getRequiredCapabilities();
52
		for (int i = 0; i < requirements.length; i++) {
54
		for (int i = 0; i < requirements.length; i++) {
53
			if (requirements[i].getNamespace().equals(IInstallableUnit.NAMESPACE_IU_ID)) {
55
			if (requirements[i].getNamespace().equals(IInstallableUnit.NAMESPACE_IU_ID)) {
54
				referredIUs.add(requirements[i].getName());
56
				referredIUs.add(requirements[i].getName());
(-)src/org/eclipse/equinox/internal/p2/ui/query/AnyRequiredCapabilityQuery.java (-3 / +4 lines)
Lines 10-17 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.query;
11
package org.eclipse.equinox.internal.p2.ui.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
15
import org.eclipse.equinox.internal.provisional.p2.query.Query;
16
import org.eclipse.equinox.internal.provisional.p2.query.Query;
16
17
17
/**
18
/**
Lines 19-30 Link Here
19
 * meet any one of the given capabilities.  
20
 * meet any one of the given capabilities.  
20
 */
21
 */
21
public class AnyRequiredCapabilityQuery extends Query {
22
public class AnyRequiredCapabilityQuery extends Query {
22
	private RequiredCapability[] requirements;
23
	private IRequiredCapability[] requirements;
23
24
24
	/**
25
	/**
25
	 * Creates a new query for the capabilities of the given IU.
26
	 * Creates a new query for the capabilities of the given IU.
26
	 */
27
	 */
27
	public AnyRequiredCapabilityQuery(RequiredCapability[] requirements) {
28
	public AnyRequiredCapabilityQuery(IRequiredCapability[] requirements) {
28
		this.requirements = requirements;
29
		this.requirements = requirements;
29
	}
30
	}
30
31
(-)src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/IULicensePropertyPage.java (-2 / +3 lines)
Lines 10-19 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.ui.dialogs;
11
package org.eclipse.equinox.internal.provisional.p2.ui.dialogs;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
14
13
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
15
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
14
import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage;
16
import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.License;
17
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
18
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
18
import org.eclipse.osgi.util.NLS;
19
import org.eclipse.osgi.util.NLS;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.SWT;
Lines 32-38 Link Here
32
33
33
	protected Control createIUPage(Composite parent, IInstallableUnit iu) {
34
	protected Control createIUPage(Composite parent, IInstallableUnit iu) {
34
		// Get the license in the default locale
35
		// Get the license in the default locale
35
		final License license = IUPropertyUtils.getLicense(iu);
36
		final ILicense license = IUPropertyUtils.getLicense(iu);
36
		if (license != null && license.getBody().length() > 0) {
37
		if (license != null && license.getBody().length() > 0) {
37
			Composite composite = new Composite(parent, SWT.NONE);
38
			Composite composite = new Composite(parent, SWT.NONE);
38
			GridLayout layout = new GridLayout();
39
			GridLayout layout = new GridLayout();
(-)src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/IUCopyrightPropertyPage.java (-2 / +3 lines)
Lines 10-19 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.ui.dialogs;
11
package org.eclipse.equinox.internal.provisional.p2.ui.dialogs;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
14
13
import java.net.MalformedURLException;
15
import java.net.MalformedURLException;
14
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
16
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
15
import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage;
17
import org.eclipse.equinox.internal.p2.ui.dialogs.IUPropertyPage;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.Copyright;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
19
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
19
import org.eclipse.osgi.util.NLS;
20
import org.eclipse.osgi.util.NLS;
Lines 33-39 Link Here
33
34
34
	protected Control createIUPage(Composite parent, IInstallableUnit iu) {
35
	protected Control createIUPage(Composite parent, IInstallableUnit iu) {
35
		// Get the copyright in the current locale
36
		// Get the copyright in the current locale
36
		final Copyright copyright = IUPropertyUtils.getCopyright(iu);
37
		final ICopyright copyright = IUPropertyUtils.getCopyright(iu);
37
		if (copyright != null && copyright.getBody().length() > 0) {
38
		if (copyright != null && copyright.getBody().length() > 0) {
38
			Composite composite = new Composite(parent, SWT.NONE);
39
			Composite composite = new Composite(parent, SWT.NONE);
39
			GridLayout layout = new GridLayout();
40
			GridLayout layout = new GridLayout();
(-)src/org/eclipse/equinox/internal/p2/ui/SimpleLicenseManager.java (-4 / +5 lines)
Lines 11-16 Link Here
11
 *******************************************************************************/
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.ui;
12
package org.eclipse.equinox.internal.p2.ui;
13
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
15
14
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
16
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
15
17
16
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
18
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
Lines 20-26 Link Here
20
import java.util.*;
22
import java.util.*;
21
import javax.xml.parsers.*;
23
import javax.xml.parsers.*;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
24
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.License;
24
import org.eclipse.equinox.internal.provisional.p2.ui.policy.LicenseManager;
25
import org.eclipse.equinox.internal.provisional.p2.ui.policy.LicenseManager;
25
import org.eclipse.ui.statushandlers.StatusManager;
26
import org.eclipse.ui.statushandlers.StatusManager;
26
import org.w3c.dom.*;
27
import org.w3c.dom.*;
Lines 37-57 Link Here
37
	java.util.Set accepted = new HashSet();
38
	java.util.Set accepted = new HashSet();
38
39
39
	public boolean accept(IInstallableUnit iu) {
40
	public boolean accept(IInstallableUnit iu) {
40
		License license = IUPropertyUtils.getLicense(iu);
41
		ILicense license = IUPropertyUtils.getLicense(iu);
41
		if (license != null)
42
		if (license != null)
42
			accepted.add(license.getDigest());
43
			accepted.add(license.getDigest());
43
		return true;
44
		return true;
44
	}
45
	}
45
46
46
	public boolean reject(IInstallableUnit iu) {
47
	public boolean reject(IInstallableUnit iu) {
47
		License license = IUPropertyUtils.getLicense(iu);
48
		ILicense license = IUPropertyUtils.getLicense(iu);
48
		if (license != null)
49
		if (license != null)
49
			accepted.remove(license.getDigest());
50
			accepted.remove(license.getDigest());
50
		return true;
51
		return true;
51
	}
52
	}
52
53
53
	public boolean isAccepted(IInstallableUnit iu) {
54
	public boolean isAccepted(IInstallableUnit iu) {
54
		License license = IUPropertyUtils.getLicense(iu);
55
		ILicense license = IUPropertyUtils.getLicense(iu);
55
		if (license == null)
56
		if (license == null)
56
			return true;
57
			return true;
57
		return accepted.contains(license.getDigest());
58
		return accepted.contains(license.getDigest());
(-)src/org/eclipse/equinox/internal/provisional/p2/ui/viewers/ProvElementLabelProvider.java (-5 / +7 lines)
Lines 11-16 Link Here
11
11
12
package org.eclipse.equinox.internal.provisional.p2.ui.viewers;
12
package org.eclipse.equinox.internal.provisional.p2.ui.viewers;
13
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
15
14
import org.eclipse.equinox.internal.p2.ui.model.IIUElement;
16
import org.eclipse.equinox.internal.p2.ui.model.IIUElement;
15
import org.eclipse.equinox.internal.p2.ui.model.ProvElement;
17
import org.eclipse.equinox.internal.p2.ui.model.ProvElement;
16
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.IArtifactRepository;
18
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.IArtifactRepository;
Lines 71-78 Link Here
71
			ProcessingStepDescriptor descriptor = (ProcessingStepDescriptor) obj;
73
			ProcessingStepDescriptor descriptor = (ProcessingStepDescriptor) obj;
72
			return descriptor.getProcessorId();
74
			return descriptor.getProcessorId();
73
		}
75
		}
74
		if (obj instanceof RequiredCapability) {
76
		if (obj instanceof IRequiredCapability) {
75
			return ((RequiredCapability) obj).getName();
77
			return ((IRequiredCapability) obj).getName();
76
		}
78
		}
77
		return obj.toString();
79
		return obj.toString();
78
	}
80
	}
Lines 96-102 Link Here
96
		if (obj instanceof IArtifactKey) {
98
		if (obj instanceof IArtifactKey) {
97
			return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
99
			return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
98
		}
100
		}
99
		if (obj instanceof RequiredCapability) {
101
		if (obj instanceof IRequiredCapability) {
100
			return ProvUIImages.getImage(ProvUIImages.IMG_IU);
102
			return ProvUIImages.getImage(ProvUIImages.IMG_IU);
101
		}
103
		}
102
		return null;
104
		return null;
Lines 136-143 Link Here
136
					IArtifactKey key = (IArtifactKey) element;
138
					IArtifactKey key = (IArtifactKey) element;
137
					return key.getVersion().toString();
139
					return key.getVersion().toString();
138
				}
140
				}
139
				if (element instanceof RequiredCapability) {
141
				if (element instanceof IRequiredCapability) {
140
					return ((RequiredCapability) element).getRange().getMaximum().toString();
142
					return ((IRequiredCapability) element).getRange().getMaximum().toString();
141
				}
143
				}
142
144
143
		}
145
		}
(-)src/org/eclipse/equinox/internal/p2/ui/dialogs/AcceptLicensesWizardPage.java (-4 / +5 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui.dialogs;
11
package org.eclipse.equinox.internal.p2.ui.dialogs;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
14
13
import java.util.*;
15
import java.util.*;
14
import java.util.List;
16
import java.util.List;
15
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
17
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
Lines 19-25 Link Here
19
import org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitOperand;
21
import org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitOperand;
20
import org.eclipse.equinox.internal.provisional.p2.engine.Operand;
22
import org.eclipse.equinox.internal.provisional.p2.engine.Operand;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.License;
23
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
24
import org.eclipse.equinox.internal.provisional.p2.ui.IUPropertyUtils;
24
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
25
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
25
import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy;
26
import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy;
Lines 215-221 Link Here
215
	}
216
	}
216
217
217
	private String getLicenseBody(IInstallableUnit iu) {
218
	private String getLicenseBody(IInstallableUnit iu) {
218
		License license = IUPropertyUtils.getLicense(iu);
219
		ILicense license = IUPropertyUtils.getLicense(iu);
219
		if (license != null && license.getBody() != null)
220
		if (license != null && license.getBody() != null)
220
			return license.getBody();
221
			return license.getBody();
221
		// shouldn't happen because we already reduced the list to those
222
		// shouldn't happen because we already reduced the list to those
Lines 254-265 Link Here
254
		for (int i = 0; i < iusToCheck.length; i++) {
255
		for (int i = 0; i < iusToCheck.length; i++) {
255
			IInstallableUnit iu = iusToCheck[i];
256
			IInstallableUnit iu = iusToCheck[i];
256
			String name = labelProvider.getText(iu);
257
			String name = labelProvider.getText(iu);
257
			License license = IUPropertyUtils.getLicense(iu);
258
			ILicense license = IUPropertyUtils.getLicense(iu);
258
			// It has a license, is it already accepted?
259
			// It has a license, is it already accepted?
259
			if (license != null) {
260
			if (license != null) {
260
				if (!policy.getLicenseManager().isAccepted(iu)) {
261
				if (!policy.getLicenseManager().isAccepted(iu)) {
261
					// Have we already found a license with this IU name?
262
					// Have we already found a license with this IU name?
262
					License potentialDuplicate = (License) licensesByIUName.get(name);
263
					ILicense potentialDuplicate = (ILicense) licensesByIUName.get(name);
263
					// If we have no duplicate or the duplicate license doesn't match, add it
264
					// If we have no duplicate or the duplicate license doesn't match, add it
264
					if (potentialDuplicate == null || !potentialDuplicate.equals(license))
265
					if (potentialDuplicate == null || !potentialDuplicate.equals(license))
265
						unaccepted.add(iu);
266
						unaccepted.add(iu);
(-)src/org/eclipse/equinox/internal/provisional/p2/ui/IUPropertyUtils.java (-10 / +18 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.ui;
11
package org.eclipse.equinox.internal.provisional.p2.ui;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
20
13
import java.lang.ref.SoftReference;
21
import java.lang.ref.SoftReference;
14
import java.util.*;
22
import java.util.*;
15
import org.eclipse.core.runtime.IStatus;
23
import org.eclipse.core.runtime.IStatus;
Lines 35-46 Link Here
35
	private static Map LocaleCollectorCache = new HashMap(2);
43
	private static Map LocaleCollectorCache = new HashMap(2);
36
44
37
	// Get the license in the default locale.
45
	// Get the license in the default locale.
38
	public static License getLicense(IInstallableUnit iu) {
46
	public static ILicense getLicense(IInstallableUnit iu) {
39
		return getLicense(iu, getCurrentLocale());
47
		return getLicense(iu, getCurrentLocale());
40
	}
48
	}
41
49
42
	// Get the copyright in the default locale.
50
	// Get the copyright in the default locale.
43
	public static Copyright getCopyright(IInstallableUnit iu) {
51
	public static ICopyright getCopyright(IInstallableUnit iu) {
44
		return getCopyright(iu, getCurrentLocale());
52
		return getCopyright(iu, getCurrentLocale());
45
	}
53
	}
46
54
Lines 49-56 Link Here
49
		return getIUProperty(iu, propertyKey, getCurrentLocale());
57
		return getIUProperty(iu, propertyKey, getCurrentLocale());
50
	}
58
	}
51
59
52
	public static License getLicense(IInstallableUnit iu, Locale locale) {
60
	public static ILicense getLicense(IInstallableUnit iu, Locale locale) {
53
		License license = iu.getLicense();
61
		ILicense license = iu.getLicense();
54
		String body = (license != null ? license.getBody() : null);
62
		String body = (license != null ? license.getBody() : null);
55
		if (body == null || body.length() <= 1 || body.charAt(0) != '%')
63
		if (body == null || body.length() <= 1 || body.charAt(0) != '%')
56
			return license;
64
			return license;
Lines 59-66 Link Here
59
		return new License(license.getLocation(), body);
67
		return new License(license.getLocation(), body);
60
	}
68
	}
61
69
62
	public static Copyright getCopyright(IInstallableUnit iu, Locale locale) {
70
	public static ICopyright getCopyright(IInstallableUnit iu, Locale locale) {
63
		Copyright copyright = iu.getCopyright();
71
		ICopyright copyright = iu.getCopyright();
64
		String body = (copyright != null ? copyright.getBody() : null);
72
		String body = (copyright != null ? copyright.getBody() : null);
65
		if (body == null || body.length() <= 1 || body.charAt(0) != '%')
73
		if (body == null || body.length() <= 1 || body.charAt(0) != '%')
66
			return copyright;
74
			return copyright;
Lines 101-109 Link Here
101
				boolean haveHost = false;
109
				boolean haveHost = false;
102
				if (object instanceof IInstallableUnitFragment) {
110
				if (object instanceof IInstallableUnitFragment) {
103
					IInstallableUnitFragment fragment = (IInstallableUnitFragment) object;
111
					IInstallableUnitFragment fragment = (IInstallableUnitFragment) object;
104
					RequiredCapability[] hosts = fragment.getHost();
112
					IRequiredCapability[] hosts = fragment.getHost();
105
					for (int i = 0; i < hosts.length; i++) {
113
					for (int i = 0; i < hosts.length; i++) {
106
						RequiredCapability nextHost = hosts[i];
114
						IRequiredCapability nextHost = hosts[i];
107
						if (IInstallableUnit.NAMESPACE_IU_ID.equals(nextHost.getNamespace()) && //
115
						if (IInstallableUnit.NAMESPACE_IU_ID.equals(nextHost.getNamespace()) && //
108
								theUnit.getId().equals(nextHost.getName()) && //
116
								theUnit.getId().equals(nextHost.getName()) && //
109
								nextHost.getRange() != null && //
117
								nextHost.getRange() != null && //
Lines 174-182 Link Here
174
				boolean haveLocale = false;
182
				boolean haveLocale = false;
175
				if (object instanceof IInstallableUnitFragment) {
183
				if (object instanceof IInstallableUnitFragment) {
176
					IInstallableUnitFragment fragment = (IInstallableUnitFragment) object;
184
					IInstallableUnitFragment fragment = (IInstallableUnitFragment) object;
177
					ProvidedCapability[] provides = fragment.getProvidedCapabilities();
185
					IProvidedCapability[] provides = fragment.getProvidedCapabilities();
178
					for (int j = 0; j < provides.length && !haveLocale; j++) {
186
					for (int j = 0; j < provides.length && !haveLocale; j++) {
179
						ProvidedCapability nextProvide = provides[j];
187
						IProvidedCapability nextProvide = provides[j];
180
						if (NAMESPACE_IU_LOCALIZATION.equals(nextProvide.getNamespace())) {
188
						if (NAMESPACE_IU_LOCALIZATION.equals(nextProvide.getNamespace())) {
181
							String providedLocale = nextProvide.getName();
189
							String providedLocale = nextProvide.getName();
182
							if (providedLocale != null) {
190
							if (providedLocale != null) {
(-)src/org/eclipse/equinox/internal/provisional/p2/ui/model/InstalledIUElement.java (-2 / +3 lines)
Lines 10-20 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.ui.model;
11
package org.eclipse.equinox.internal.provisional.p2.ui.model;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.equinox.internal.p2.ui.model.IIUElement;
16
import org.eclipse.equinox.internal.p2.ui.model.IIUElement;
15
import org.eclipse.equinox.internal.p2.ui.model.QueriedElement;
17
import org.eclipse.equinox.internal.p2.ui.model.QueriedElement;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
18
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
19
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUIImages;
19
import org.eclipse.equinox.internal.provisional.p2.ui.policy.QueryProvider;
20
import org.eclipse.equinox.internal.provisional.p2.ui.policy.QueryProvider;
20
21
Lines 83-89 Link Here
83
	/* (non-Javadoc)
84
	/* (non-Javadoc)
84
	 * @see org.eclipse.equinox.internal.p2.ui.model.IUElement#getRequirements()
85
	 * @see org.eclipse.equinox.internal.p2.ui.model.IUElement#getRequirements()
85
	 */
86
	 */
86
	public RequiredCapability[] getRequirements() {
87
	public IRequiredCapability[] getRequirements() {
87
		return iu.getRequiredCapabilities();
88
		return iu.getRequiredCapabilities();
88
	}
89
	}
89
90
(-)src/org/eclipse/equinox/internal/provisional/p2/engine/InstallableUnitPhase.java (-5 / +9 lines)
Lines 11-16 Link Here
11
 *******************************************************************************/
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.provisional.p2.engine;
12
package org.eclipse.equinox.internal.provisional.p2.engine;
13
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
15
16
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
17
14
import java.util.*;
18
import java.util.*;
15
import org.eclipse.core.runtime.*;
19
import org.eclipse.core.runtime.*;
16
import org.eclipse.equinox.internal.p2.engine.EngineActivator;
20
import org.eclipse.equinox.internal.p2.engine.EngineActivator;
Lines 74-80 Link Here
74
	}
78
	}
75
79
76
	protected final ProvisioningAction[] getActions(IInstallableUnit unit, String key) {
80
	protected final ProvisioningAction[] getActions(IInstallableUnit unit, String key) {
77
		TouchpointInstruction[] instructions = getInstructions(unit, key);
81
		ITouchpointInstruction[] instructions = getInstructions(unit, key);
78
		if (instructions == null || instructions.length == 0)
82
		if (instructions == null || instructions.length == 0)
79
			return null;
83
			return null;
80
84
Lines 86-104 Link Here
86
		return (ProvisioningAction[]) actions.toArray(new ProvisioningAction[actions.size()]);
90
		return (ProvisioningAction[]) actions.toArray(new ProvisioningAction[actions.size()]);
87
	}
91
	}
88
92
89
	private final static TouchpointInstruction[] getInstructions(IInstallableUnit unit, String key) {
93
	private final static ITouchpointInstruction[] getInstructions(IInstallableUnit unit, String key) {
90
		TouchpointData[] data = unit.getTouchpointData();
94
		ITouchpointData[] data = unit.getTouchpointData();
91
		if (data == null)
95
		if (data == null)
92
			return null;
96
			return null;
93
97
94
		ArrayList matches = new ArrayList(data.length);
98
		ArrayList matches = new ArrayList(data.length);
95
		for (int i = 0; i < data.length; i++) {
99
		for (int i = 0; i < data.length; i++) {
96
			TouchpointInstruction instructions = data[i].getInstruction(key);
100
			ITouchpointInstruction instructions = data[i].getInstruction(key);
97
			if (instructions != null)
101
			if (instructions != null)
98
				matches.add(instructions);
102
				matches.add(instructions);
99
		}
103
		}
100
104
101
		TouchpointInstruction[] result = (TouchpointInstruction[]) matches.toArray(new TouchpointInstruction[matches.size()]);
105
		ITouchpointInstruction[] result = (ITouchpointInstruction[]) matches.toArray(new ITouchpointInstruction[matches.size()]);
102
		return result;
106
		return result;
103
	}
107
	}
104
}
108
}
(-)src/org/eclipse/equinox/internal/provisional/p2/engine/phases/Collect.java (-3 / +3 lines)
Lines 18-24 Link Here
18
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.IArtifactRequest;
18
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.IArtifactRequest;
19
import org.eclipse.equinox.internal.provisional.p2.engine.*;
19
import org.eclipse.equinox.internal.provisional.p2.engine.*;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
22
22
23
/**
23
/**
24
 * The goal of the collect phase is to ask the touchpoints if the artifacts associated with an IU need to be downloaded.
24
 * The goal of the collect phase is to ask the touchpoints if the artifacts associated with an IU need to be downloaded.
Lines 44-51 Link Here
44
		if (parsedActions != null)
44
		if (parsedActions != null)
45
			return parsedActions;
45
			return parsedActions;
46
46
47
		TouchpointType type = unit.getTouchpointType();
47
		ITouchpointType type = unit.getTouchpointType();
48
		if (type == null || type == TouchpointType.NONE)
48
		if (type == null || ITouchpointType.NONE.equals(type))
49
			return null;
49
			return null;
50
50
51
		ProvisioningAction action = actionManager.getTouchpointQualifiedAction(phaseId, type);
51
		ProvisioningAction action = actionManager.getTouchpointQualifiedAction(phaseId, type);
(-)src/org/eclipse/equinox/internal/provisional/p2/engine/phases/CheckTrust.java (-3 / +3 lines)
Lines 15-21 Link Here
15
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
16
import org.eclipse.equinox.internal.provisional.p2.engine.*;
16
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
19
19
20
/**
20
/**
21
 * An install phase that checks if the certificates used to sign the artifacts
21
 * An install phase that checks if the certificates used to sign the artifacts
Lines 50-57 Link Here
50
		if (parsedActions != null)
50
		if (parsedActions != null)
51
			return parsedActions;
51
			return parsedActions;
52
52
53
		TouchpointType type = unit.getTouchpointType();
53
		ITouchpointType type = unit.getTouchpointType();
54
		if (type == null || type == TouchpointType.NONE)
54
		if (type == null || ITouchpointType.NONE.equals(type))
55
			return null;
55
			return null;
56
56
57
		ProvisioningAction action = actionManager.getTouchpointQualifiedAction(phaseId, type);
57
		ProvisioningAction action = actionManager.getTouchpointQualifiedAction(phaseId, type);
(-)src/org/eclipse/equinox/internal/provisional/p2/engine/phases/Sizing.java (-3 / +3 lines)
Lines 20-26 Link Here
20
import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepositoryManager;
20
import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepositoryManager;
21
import org.eclipse.equinox.internal.provisional.p2.engine.*;
21
import org.eclipse.equinox.internal.provisional.p2.engine.*;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
24
24
25
public class Sizing extends InstallableUnitPhase {
25
public class Sizing extends InstallableUnitPhase {
26
	private static final String PHASE_ID = "sizing"; //$NON-NLS-1$
26
	private static final String PHASE_ID = "sizing"; //$NON-NLS-1$
Lines 51-58 Link Here
51
		if (parsedActions != null)
51
		if (parsedActions != null)
52
			return parsedActions;
52
			return parsedActions;
53
53
54
		TouchpointType type = unit.getTouchpointType();
54
		ITouchpointType type = unit.getTouchpointType();
55
		if (type == null || type == TouchpointType.NONE)
55
		if (type == null || ITouchpointType.NONE.equals(type))
56
			return null;
56
			return null;
57
57
58
		ProvisioningAction action = actionManager.getTouchpointQualifiedAction(COLLECT_PHASE_ID, type);
58
		ProvisioningAction action = actionManager.getTouchpointQualifiedAction(COLLECT_PHASE_ID, type);
(-)src/org/eclipse/equinox/internal/p2/engine/ActionManager.java (-6 / +6 lines)
Lines 14-23 Link Here
14
import java.util.Map;
14
import java.util.Map;
15
import org.eclipse.core.runtime.*;
15
import org.eclipse.core.runtime.*;
16
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
16
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
17
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
17
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction;
18
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction;
18
import org.eclipse.equinox.internal.provisional.p2.engine.Touchpoint;
19
import org.eclipse.equinox.internal.provisional.p2.engine.Touchpoint;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
20
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
21
import org.eclipse.osgi.util.NLS;
21
import org.eclipse.osgi.util.NLS;
22
22
23
public class ActionManager implements IRegistryChangeListener {
23
public class ActionManager implements IRegistryChangeListener {
Lines 37-51 Link Here
37
		RegistryFactory.getRegistry().addRegistryChangeListener(this, EngineActivator.ID);
37
		RegistryFactory.getRegistry().addRegistryChangeListener(this, EngineActivator.ID);
38
	}
38
	}
39
39
40
	public Touchpoint getTouchpointPoint(TouchpointType type) {
40
	public Touchpoint getTouchpointPoint(ITouchpointType type) {
41
		if (type == null || type == TouchpointType.NONE)
41
		if (type == null || ITouchpointType.NONE.equals(type))
42
			return null;
42
			return null;
43
		return touchpointManager.getTouchpoint(type);
43
		return touchpointManager.getTouchpoint(type);
44
	}
44
	}
45
45
46
	public ProvisioningAction getTouchpointQualifiedAction(String actionId, TouchpointType type) {
46
	public ProvisioningAction getTouchpointQualifiedAction(String actionId, ITouchpointType type) {
47
		if (actionId.indexOf('.') == -1) {
47
		if (actionId.indexOf('.') == -1) {
48
			if (type == null || type == TouchpointType.NONE)
48
			if (type == null || ITouchpointType.NONE.equals(type))
49
				return null;
49
				return null;
50
50
51
			Touchpoint touchpoint = touchpointManager.getTouchpoint(type);
51
			Touchpoint touchpoint = touchpointManager.getTouchpoint(type);
(-)src/org/eclipse/equinox/internal/p2/engine/TouchpointManager.java (-2 / +3 lines)
Lines 10-21 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.engine;
11
package org.eclipse.equinox.internal.p2.engine;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
13
import java.util.HashMap;
15
import java.util.HashMap;
14
import java.util.Map;
16
import java.util.Map;
15
import org.eclipse.core.runtime.*;
17
import org.eclipse.core.runtime.*;
16
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
18
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
17
import org.eclipse.equinox.internal.provisional.p2.engine.Touchpoint;
19
import org.eclipse.equinox.internal.provisional.p2.engine.Touchpoint;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
19
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.osgi.util.NLS;
21
import org.eclipse.osgi.util.NLS;
21
import org.eclipse.equinox.internal.provisional.p2.core.Version;
22
import org.eclipse.equinox.internal.provisional.p2.core.Version;
Lines 93-99 Link Here
93
	 * Return the touchpoint which is registered for the given type,
94
	 * Return the touchpoint which is registered for the given type,
94
	 * or <code>null</code> if none are registered.
95
	 * or <code>null</code> if none are registered.
95
	 */
96
	 */
96
	public synchronized Touchpoint getTouchpoint(TouchpointType type) {
97
	public synchronized Touchpoint getTouchpoint(ITouchpointType type) {
97
		if (type == null)
98
		if (type == null)
98
			throw new IllegalArgumentException(Messages.TouchpointManager_Null_Touchpoint_Type_Argument);
99
			throw new IllegalArgumentException(Messages.TouchpointManager_Null_Touchpoint_Type_Argument);
99
		return getTouchpoint(type.getId(), type.getVersion().toString());
100
		return getTouchpoint(type.getId(), type.getVersion().toString());
(-)src/org/eclipse/equinox/internal/p2/engine/InstructionParser.java (-5 / +7 lines)
Lines 10-20 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.engine;
11
package org.eclipse.equinox.internal.p2.engine;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
16
13
import java.util.*;
17
import java.util.*;
14
import org.eclipse.core.runtime.Assert;
18
import org.eclipse.core.runtime.Assert;
15
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction;
19
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointInstruction;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
18
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
19
import org.eclipse.osgi.util.NLS;
21
import org.eclipse.osgi.util.NLS;
20
22
Lines 39-45 Link Here
39
		this.actionManager = actionManager;
41
		this.actionManager = actionManager;
40
	}
42
	}
41
43
42
	public ProvisioningAction[] parseActions(TouchpointInstruction instruction, TouchpointType touchpointType) {
44
	public ProvisioningAction[] parseActions(ITouchpointInstruction instruction, ITouchpointType touchpointType) {
43
		List actions = new ArrayList();
45
		List actions = new ArrayList();
44
		Map importMap = parseImportAttribute(instruction.getImportAttribute());
46
		Map importMap = parseImportAttribute(instruction.getImportAttribute());
45
		StringTokenizer tokenizer = new StringTokenizer(instruction.getBody(), ";"); //$NON-NLS-1$
47
		StringTokenizer tokenizer = new StringTokenizer(instruction.getBody(), ";"); //$NON-NLS-1$
Lines 73-79 Link Here
73
		return result;
75
		return result;
74
	}
76
	}
75
77
76
	private ProvisioningAction parseAction(String statement, Map qualifier, TouchpointType touchpointType) {
78
	private ProvisioningAction parseAction(String statement, Map qualifier, ITouchpointType touchpointType) {
77
		int openBracket = statement.indexOf('(');
79
		int openBracket = statement.indexOf('(');
78
		int closeBracket = statement.lastIndexOf(')');
80
		int closeBracket = statement.lastIndexOf(')');
79
		if (openBracket == -1 || closeBracket == -1 || openBracket > closeBracket)
81
		if (openBracket == -1 || closeBracket == -1 || openBracket > closeBracket)
Lines 99-105 Link Here
99
		return new ParameterizedProvisioningAction(action, parameters);
101
		return new ParameterizedProvisioningAction(action, parameters);
100
	}
102
	}
101
103
102
	private ProvisioningAction lookupAction(String actionId, Map importMap, TouchpointType touchpointType) {
104
	private ProvisioningAction lookupAction(String actionId, Map importMap, ITouchpointType touchpointType) {
103
		VersionRange versionRange = null;
105
		VersionRange versionRange = null;
104
		ActionEntry actionEntry = (ActionEntry) importMap.get(actionId);
106
		ActionEntry actionEntry = (ActionEntry) importMap.get(actionId);
105
		if (actionEntry != null) {
107
		if (actionEntry != null) {
(-)src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/CollectAction.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions;
9
package org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
12
11
import java.util.*;
13
import java.util.*;
12
import org.eclipse.core.runtime.IStatus;
14
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.Status;
15
import org.eclipse.core.runtime.Status;
Lines 42-48 Link Here
42
		return Status.OK_STATUS;
44
		return Status.OK_STATUS;
43
	}
45
	}
44
46
45
	public static boolean isZipped(TouchpointData[] data) {
47
	public static boolean isZipped(ITouchpointData[] data) {
46
		if (data == null || data.length == 0)
48
		if (data == null || data.length == 0)
47
			return false;
49
			return false;
48
		for (int i = 0; i < data.length; i++) {
50
		for (int i = 0; i < data.length; i++) {
(-)src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/Util.java (-2 / +6 lines)
Lines 12-17 Link Here
12
 *******************************************************************************/
12
 *******************************************************************************/
13
package org.eclipse.equinox.internal.p2.touchpoint.eclipse;
13
package org.eclipse.equinox.internal.p2.touchpoint.eclipse;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
18
15
import java.io.*;
19
import java.io.*;
16
import java.net.*;
20
import java.net.*;
17
import java.util.*;
21
import java.util.*;
Lines 288-296 Link Here
288
		return null;
292
		return null;
289
	}
293
	}
290
294
291
	public static String getManifest(TouchpointData[] data) {
295
	public static String getManifest(ITouchpointData[] data) {
292
		for (int i = 0; i < data.length; i++) {
296
		for (int i = 0; i < data.length; i++) {
293
			TouchpointInstruction manifestInstruction = data[i].getInstruction("manifest"); //$NON-NLS-1$
297
			ITouchpointInstruction manifestInstruction = data[i].getInstruction("manifest"); //$NON-NLS-1$
294
			if (manifestInstruction == null)
298
			if (manifestInstruction == null)
295
				return null;
299
				return null;
296
			String manifest = manifestInstruction.getBody();
300
			String manifest = manifestInstruction.getBody();
(-)src/org/eclipse/equinox/p2/tests/planner/MissingOptionalWithDependencies2.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 32-43 Link Here
32
		c2 = createIU("C", new Version("2.0.0"), true);
34
		c2 = createIU("C", new Version("2.0.0"), true);
33
35
34
		//B's dependency on C can not be satisfied
36
		//B's dependency on C can not be satisfied
35
		RequiredCapability[] reqB = new RequiredCapability[2];
37
		IRequiredCapability[] reqB = new IRequiredCapability[2];
36
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.0.0]"), null, true, false, true);
38
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.0.0]"), null, true, false, true);
37
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
39
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
38
		b1 = createIU("B", new Version("1.0.0"), reqB);
40
		b1 = createIU("B", new Version("1.0.0"), reqB);
39
41
40
		RequiredCapability[] req = new RequiredCapability[3];
42
		IRequiredCapability[] req = new IRequiredCapability[3];
41
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
43
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
42
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
44
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
43
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 2.0.0]"), null, false, false, true);
45
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 2.0.0]"), null, false, false, true);
(-)src/org/eclipse/equinox/p2/tests/planner/Bug207319.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
14
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
13
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
15
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
Lines 28-34 Link Here
28
	protected void setUp() throws Exception {
30
	protected void setUp() throws Exception {
29
		super.setUp();
31
		super.setUp();
30
		a = createIU("A", new Version("1.0.0"));
32
		a = createIU("A", new Version("1.0.0"));
31
		b = createIU("B", new Version("1.0.0"), new ProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new Version("1.0.0"))});
33
		b = createIU("B", new Version("1.0.0"), new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new Version("1.0.0"))});
32
		c = createIU("C", new Version("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null));
34
		c = createIU("C", new Version("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null));
33
		createTestMetdataRepository(new IInstallableUnit[] {a, b, c});
35
		createTestMetdataRepository(new IInstallableUnit[] {a, b, c});
34
		profile = createProfile(Bug207319.class.getName());
36
		profile = createProfile(Bug207319.class.getName());
(-)src/org/eclipse/equinox/p2/tests/planner/MissingNonGreedyRequirement.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 29-35 Link Here
29
31
30
		c1 = createIU("C", new Version("1.0.0"), true);
32
		c1 = createIU("C", new Version("1.0.0"), true);
31
33
32
		RequiredCapability[] reqB = new RequiredCapability[2];
34
		IRequiredCapability[] reqB = new IRequiredCapability[2];
33
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false);
35
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false);
34
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
36
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
35
		a1 = createIU("A", new Version("1.0.0"), reqB);
37
		a1 = createIU("A", new Version("1.0.0"), reqB);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestOptional3.java (-6 / +10 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
15
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
12
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
16
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 33-48 Link Here
33
37
34
	protected void setUp() throws Exception {
38
	protected void setUp() throws Exception {
35
		super.setUp();
39
		super.setUp();
36
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
40
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
37
		p1 = createIU(P1, new Version(1, 0, 0), true);
41
		p1 = createIU(P1, new Version(1, 0, 0), true);
38
		p2 = createIU(P2, new Version(1, 0, 0), true);
42
		p2 = createIU(P2, new Version(1, 0, 0), true);
39
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
40
44
41
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
45
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
42
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
43
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
44
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
45
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1, changepp2}, scopepp1, lifeCyclepp1);
49
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1, changepp2}, scopepp1, lifeCyclepp1);
46
50
47
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1});
51
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1});
48
52
(-)src/org/eclipse/equinox/p2/tests/planner/MissingDependency2.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 24-35 Link Here
24
26
25
	protected void setUp() throws Exception {
27
	protected void setUp() throws Exception {
26
		super.setUp();
28
		super.setUp();
27
		RequiredCapability[] reqA = new RequiredCapability[1];
29
		IRequiredCapability[] reqA = new IRequiredCapability[1];
28
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
30
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
29
		a1 = createIU("A", new Version("1.0.0"), reqA);
31
		a1 = createIU("A", new Version("1.0.0"), reqA);
30
32
31
		//Missing optional dependency
33
		//Missing optional dependency
32
		RequiredCapability[] req = new RequiredCapability[1];
34
		IRequiredCapability[] req = new IRequiredCapability[1];
33
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
35
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
34
		b1 = createIU("B", new Version("1.0.0"), req);
36
		b1 = createIU("B", new Version("1.0.0"), req);
35
37
(-)src/org/eclipse/equinox/p2/tests/planner/AnotherSingleton.java (-4 / +6 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
14
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
15
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
Lines 33-43 Link Here
33
35
34
		a2 = createIU("A", new Version("2.0.0"), true);
36
		a2 = createIU("A", new Version("2.0.0"), true);
35
37
36
		RequiredCapability c1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
38
		IRequiredCapability c1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
37
		x = createIU("X", new Version(2, 0, 0), new RequiredCapability[] {c1});
39
		x = createIU("X", new Version(2, 0, 0), new IRequiredCapability[] {c1});
38
40
39
		RequiredCapability c2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 2.0.0]"), null, false, false);
41
		IRequiredCapability c2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 2.0.0]"), null, false, false);
40
		y = createIU("Y", new Version(2, 0, 0), new RequiredCapability[] {c2});
42
		y = createIU("Y", new Version(2, 0, 0), new IRequiredCapability[] {c2});
41
43
42
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, x, y});
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, x, y});
43
45
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate2.java (-11 / +15 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.engine.*;
Lines 36-58 Link Here
36
40
37
	protected void setUp() throws Exception {
41
	protected void setUp() throws Exception {
38
		super.setUp();
42
		super.setUp();
39
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
43
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
40
		p1 = createIU(P1, new Version(1, 0, 0), true);
44
		p1 = createIU(P1, new Version(1, 0, 0), true);
41
		p2 = createIU(P2, new Version(1, 0, 0), true);
45
		p2 = createIU(P2, new Version(1, 0, 0), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
46
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
47
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
48
45
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
49
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
50
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
51
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
52
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
53
50
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
54
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
55
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
56
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
57
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
54
58
55
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true)});
59
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true)});
56
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2, p2Feature20});
60
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2, p2Feature20});
57
61
58
		profile1 = createProfile("TestProfile." + getName());
62
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/MissingOptional.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 28-34 Link Here
28
		a1 = createIU("A", new Version("1.0.0"), true);
30
		a1 = createIU("A", new Version("1.0.0"), true);
29
		b1 = createIU("B", new Version("1.0.0"), true);
31
		b1 = createIU("B", new Version("1.0.0"), true);
30
32
31
		RequiredCapability[] req = new RequiredCapability[3];
33
		IRequiredCapability[] req = new IRequiredCapability[3];
32
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
34
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
33
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
35
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
34
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
36
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
(-)src/org/eclipse/equinox/p2/tests/planner/MissingNonGreedyRequirement2.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 26-32 Link Here
26
		super.setUp();
28
		super.setUp();
27
		c1 = createIU("C", new Version("1.0.0"), true);
29
		c1 = createIU("C", new Version("1.0.0"), true);
28
30
29
		RequiredCapability[] reqB = new RequiredCapability[2];
31
		IRequiredCapability[] reqB = new IRequiredCapability[2];
30
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false);
32
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false);
31
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
33
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
32
		a1 = createIU("A", new Version("1.0.0"), reqB);
34
		a1 = createIU("A", new Version("1.0.0"), reqB);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest1.java (-3 / +7 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 28-37 Link Here
28
32
29
	protected void setUp() throws Exception {
33
	protected void setUp() throws Exception {
30
		super.setUp();
34
		super.setUp();
31
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
35
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
32
		b1 = createIU("B", new Version(1, 2, 0), true);
36
		b1 = createIU("B", new Version(1, 2, 0), true);
33
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
37
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
34
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
35
39
36
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, p1});
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, p1});
37
41
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest13.java (-3 / +7 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 30-41 Link Here
30
34
31
	protected void setUp() throws Exception {
35
	protected void setUp() throws Exception {
32
		super.setUp();
36
		super.setUp();
33
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
37
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
34
		b1 = createIU("B", new Version(1, 0, 0), true);
38
		b1 = createIU("B", new Version(1, 0, 0), true);
35
		d1 = createIU("D", new Version(1, 0, 0), true);
39
		d1 = createIU("D", new Version(1, 0, 0), true);
36
		c1 = createIU("C", new Version(1, 0, 0), true);
40
		c1 = createIU("C", new Version(1, 0, 0), true);
37
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.3.0)"), null, false, false, true));
41
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.3.0)"), null, false, false, true));
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
42
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
43
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1});
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1});
41
45
(-)src/org/eclipse/equinox/p2/tests/planner/AllOptional.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 27-37 Link Here
27
29
28
	protected void setUp() throws Exception {
30
	protected void setUp() throws Exception {
29
		super.setUp();
31
		super.setUp();
30
		RequiredCapability[] reqA = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true)};
32
		IRequiredCapability[] reqA = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true)};
31
		a1 = createIU("A", new Version("1.0.0"), reqA);
33
		a1 = createIU("A", new Version("1.0.0"), reqA);
32
		b1 = createIU("B", new Version("1.0.0"), true);
34
		b1 = createIU("B", new Version("1.0.0"), true);
33
35
34
		RequiredCapability[] reqC = new RequiredCapability[2];
36
		IRequiredCapability[] reqC = new IRequiredCapability[2];
35
		reqC[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, true, false, true);
37
		reqC[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, true, false, true);
36
		reqC[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "E", VersionRange.emptyRange, null, true, false, true);
38
		reqC[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "E", VersionRange.emptyRange, null, true, false, true);
37
		c1 = createIU("C", new Version("1.0.0"), reqC);
39
		c1 = createIU("C", new Version("1.0.0"), reqC);
(-)src/org/eclipse/equinox/p2/tests/planner/IUWithFilter2.java (-2 / +4 lines)
Lines 1-5 Link Here
1
package org.eclipse.equinox.p2.tests.planner;
1
package org.eclipse.equinox.p2.tests.planner;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
4
3
import org.eclipse.core.runtime.IStatus;
5
import org.eclipse.core.runtime.IStatus;
4
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
6
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
5
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
7
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
Lines 18-28 Link Here
18
20
19
	protected void setUp() throws Exception {
21
	protected void setUp() throws Exception {
20
		super.setUp();
22
		super.setUp();
21
		RequiredCapability[] reqs = new RequiredCapability[1];
23
		IRequiredCapability[] reqs = new IRequiredCapability[1];
22
		reqs[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
24
		reqs[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
23
		a1 = createIU("A", reqs);
25
		a1 = createIU("A", reqs);
24
26
25
		RequiredCapability[] reqsA2 = new RequiredCapability[1];
27
		IRequiredCapability[] reqsA2 = new IRequiredCapability[1];
26
		reqsA2[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, true, false);
28
		reqsA2[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, true, false);
27
		a2 = createIU("A", reqsA2);
29
		a2 = createIU("A", reqsA2);
28
30
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate.java (-11 / +15 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 37-59 Link Here
37
41
38
	protected void setUp() throws Exception {
42
	protected void setUp() throws Exception {
39
		super.setUp();
43
		super.setUp();
40
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
44
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
41
		p1 = createIU(P1, new Version(1, 0, 0), true);
45
		p1 = createIU(P1, new Version(1, 0, 0), true);
42
		p2 = createIU(P2, new Version(1, 0, 0), true);
46
		p2 = createIU(P2, new Version(1, 0, 0), true);
43
		p1b = createIU(P1, new Version(1, 1, 1), true);
47
		p1b = createIU(P1, new Version(1, 1, 1), true);
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
48
		p2b = createIU(P2, new Version(1, 1, 1), true);
45
49
46
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
50
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
47
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
51
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
48
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
52
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
49
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
53
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
50
54
51
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
55
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
52
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
56
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
53
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
57
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
54
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
58
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
55
59
56
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
60
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
57
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2, p2Feature20});
61
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2, p2Feature20});
58
62
59
		profile1 = createProfile("TestProfile." + getName());
63
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest1c.java (-3 / +7 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 30-41 Link Here
30
34
31
	protected void setUp() throws Exception {
35
	protected void setUp() throws Exception {
32
		super.setUp();
36
		super.setUp();
33
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
37
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
34
		b1 = createIU("B", new Version(1, 0, 0), true);
38
		b1 = createIU("B", new Version(1, 0, 0), true);
35
		b2 = createIU("B", new Version(1, 2, 0), true);
39
		b2 = createIU("B", new Version(1, 2, 0), true);
36
		b3 = createIU("B", new Version(1, 3, 0), true);
40
		b3 = createIU("B", new Version(1, 3, 0), true);
37
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
41
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
42
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
43
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
41
45
(-)src/org/eclipse/equinox/p2/tests/planner/PP2ShouldFailToInstall.java (-10 / +14 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
16
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 31-51 Link Here
31
35
32
	protected void setUp() throws Exception {
36
	protected void setUp() throws Exception {
33
		super.setUp();
37
		super.setUp();
34
		p2Feature = createIU("p2.feature", new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
38
		p2Feature = createIU("p2.feature", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
35
		p1 = createIU("P1", new Version(1, 0, 0), true);
39
		p1 = createIU("P1", new Version(1, 0, 0), true);
36
		p2 = createIU("P2", new Version(1, 0, 0), true);
40
		p2 = createIU("P2", new Version(1, 0, 0), true);
37
		p1b = createIU("P1", new Version(1, 1, 1), true);
41
		p1b = createIU("P1", new Version(1, 1, 1), true);
38
		p2b = createIU("P2", new Version(1, 1, 1), true);
42
		p2b = createIU("P2", new Version(1, 1, 1), true);
39
43
40
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
44
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
41
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
45
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
46
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
43
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
47
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
44
48
45
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[3.1.1, 3.1.1]"), null, false, false, true));
49
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[3.1.1, 3.1.1]"), null, false, false, true));
46
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
50
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
51
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
48
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
52
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
49
53
50
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2});
54
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2});
51
55
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest12.java (-3 / +7 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 29-39 Link Here
29
33
30
	protected void setUp() throws Exception {
34
	protected void setUp() throws Exception {
31
		super.setUp();
35
		super.setUp();
32
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
36
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
33
		b1 = createIU("B", new Version(1, 0, 0), true);
37
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
38
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.4.0, 1.5.0)"), null, false, true, true));
39
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.4.0, 1.5.0)"), null, false, true, true));
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
37
41
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
42
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
39
43
(-)src/org/eclipse/equinox/p2/tests/planner/MissingDependency3.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 25-36 Link Here
25
	//This tests that A can still be resolved and installed
27
	//This tests that A can still be resolved and installed
26
	protected void setUp() throws Exception {
28
	protected void setUp() throws Exception {
27
		super.setUp();
29
		super.setUp();
28
		RequiredCapability[] reqA = new RequiredCapability[1];
30
		IRequiredCapability[] reqA = new IRequiredCapability[1];
29
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
31
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
30
		a1 = createIU("A", new Version("1.0.0"), reqA);
32
		a1 = createIU("A", new Version("1.0.0"), reqA);
31
33
32
		//Missing dependency
34
		//Missing dependency
33
		RequiredCapability[] req = new RequiredCapability[1];
35
		IRequiredCapability[] req = new IRequiredCapability[1];
34
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true);
36
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true);
35
		b1 = createIU("B", new Version("1.0.0"), req);
37
		b1 = createIU("B", new Version("1.0.0"), req);
36
38
(-)src/org/eclipse/equinox/p2/tests/planner/Bug249605.java (-7 / +13 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
11
import java.util.HashMap;
17
import java.util.HashMap;
12
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.NullProgressMonitor;
19
import org.eclipse.core.runtime.NullProgressMonitor;
Lines 29-47 Link Here
29
35
30
	protected void setUp() throws Exception {
36
	protected void setUp() throws Exception {
31
		super.setUp();
37
		super.setUp();
32
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
38
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
33
		b1 = createIU("B", new Version(1, 1, 0), true);
39
		b1 = createIU("B", new Version(1, 1, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
40
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		b3 = createIU("B", new Version(1, 3, 0), true);
41
		b3 = createIU("B", new Version(1, 3, 0), true);
36
42
37
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.2.0)"), null, false, false, true));
43
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.2.0)"), null, false, false, true));
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
44
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
45
40
		RequirementChange change2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.3.0)"), null, false, false, true));
46
		IRequirementChange change2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.3.0)"), null, false, false, true));
41
		p2 = createIUPatch("P", new Version("1.2.0"), null, new RequiredCapability[0], new ProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.2.0)"), 0, null), new RequirementChange[] {change2}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
47
		p2 = createIUPatch("P", new Version("1.2.0"), null, new IRequiredCapability[0], new IProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.2.0)"), 0, null), new IRequirementChange[] {change2}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
42
48
43
		RequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.4.0)"), null, false, false, true));
49
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.4.0)"), null, false, false, true));
44
		p3 = createIUPatch("P", new Version("1.3.0"), null, new RequiredCapability[0], new ProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.3.0)"), 0, null), new RequirementChange[] {change3}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
50
		p3 = createIUPatch("P", new Version("1.3.0"), null, new IRequiredCapability[0], new IProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.3.0)"), 0, null), new IRequirementChange[] {change3}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
45
51
46
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, p2, p3});
52
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, p2, p3});
47
53
(-)src/org/eclipse/equinox/p2/tests/planner/InclusionRuleTest2.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
14
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
13
import org.eclipse.equinox.internal.provisional.p2.director.*;
15
import org.eclipse.equinox.internal.provisional.p2.director.*;
Lines 30-36 Link Here
30
		super.setUp();
32
		super.setUp();
31
		a1 = createIU("A", new Version("1.0.0"), true);
33
		a1 = createIU("A", new Version("1.0.0"), true);
32
34
33
		createIU("A", new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, true, MetadataFactory.createUpdateDescriptor("A", VersionRange.emptyRange, 0, "foo bar"));
35
		createIU("A", new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, true, MetadataFactory.createUpdateDescriptor("A", VersionRange.emptyRange, 0, "foo bar"));
34
		a2 = createIU("A", new Version("2.0.0"), true);
36
		a2 = createIU("A", new Version("2.0.0"), true);
35
37
36
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2});
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest1b.java (-3 / +7 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 29-39 Link Here
29
33
30
	protected void setUp() throws Exception {
34
	protected void setUp() throws Exception {
31
		super.setUp();
35
		super.setUp();
32
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
36
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
33
		b1 = createIU("B", new Version(1, 0, 0), true);
37
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
38
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
39
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
37
41
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
42
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
39
43
(-)src/org/eclipse/equinox/p2/tests/planner/MissingOptionalWithDependencies.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 28-39 Link Here
28
		a1 = createIU("A", new Version("1.0.0"), true);
30
		a1 = createIU("A", new Version("1.0.0"), true);
29
31
30
		//B's dependency is missing
32
		//B's dependency is missing
31
		RequiredCapability[] reqB = new RequiredCapability[2];
33
		IRequiredCapability[] reqB = new IRequiredCapability[2];
32
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
34
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
33
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
35
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
34
		b1 = createIU("B", new Version("1.0.0"), reqB);
36
		b1 = createIU("B", new Version("1.0.0"), reqB);
35
37
36
		RequiredCapability[] req = new RequiredCapability[2];
38
		IRequiredCapability[] req = new IRequiredCapability[2];
37
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
39
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
38
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
40
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
39
		d = createIU("D", req);
41
		d = createIU("D", req);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestMultiplePatch.java (-10 / +14 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
15
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
12
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
16
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 37-58 Link Here
37
41
38
	protected void setUp() throws Exception {
42
	protected void setUp() throws Exception {
39
		super.setUp();
43
		super.setUp();
40
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P3, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
44
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P3, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
41
		p1 = createIU(P1, new Version(1, 0, 0), true);
45
		p1 = createIU(P1, new Version(1, 0, 0), true);
42
		p2 = createIU(P2, new Version(1, 0, 0), true);
46
		p2 = createIU(P2, new Version(1, 0, 0), true);
43
		p1b = createIU(P1, new Version(1, 1, 1), true);
47
		p1b = createIU(P1, new Version(1, 1, 1), true);
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
48
		p2b = createIU(P2, new Version(1, 1, 1), true);
45
		p3 = createIU(P3, new Version(1, 0, 0), true);
49
		p3 = createIU(P3, new Version(1, 0, 0), true);
46
50
47
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
48
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
49
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
53
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
50
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
54
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
51
55
52
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
56
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
53
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
57
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
54
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
58
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
55
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
59
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
56
60
57
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p3, p1b, p2b, pp1, pp2});
61
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p3, p1b, p2b, pp1, pp2});
58
62
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest3.java (-7 / +15 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
18
11
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
20
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.*;
21
import org.eclipse.equinox.internal.provisional.p2.engine.*;
Lines 30-45 Link Here
30
38
31
	protected void setUp() throws Exception {
39
	protected void setUp() throws Exception {
32
		super.setUp();
40
		super.setUp();
33
		f1 = createIU("F", new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, true)});
41
		f1 = createIU("F", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, true)});
34
		f2 = createIU("F", new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 4.0.0)"), null, false, false, true)});
42
		f2 = createIU("F", new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 4.0.0)"), null, false, false, true)});
35
		ProvidedCapability[] cap = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("foo", "bar", new Version(1, 0, 0))};
43
		IProvidedCapability[] cap = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("foo", "bar", new Version(1, 0, 0))};
36
		a1 = createIU("A", new Version("1.0.0"), null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false)}, cap, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null);
44
		a1 = createIU("A", new Version("1.0.0"), null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false)}, cap, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null);
37
		a3 = createIU("A", new Version(3, 0, 0), true);
45
		a3 = createIU("A", new Version(3, 0, 0), true);
38
		b1 = createIU("B", new Version(1, 0, 0), true);
46
		b1 = createIU("B", new Version(1, 0, 0), true);
39
		b2 = createIU("B", new Version(2, 0, 0), true);
47
		b2 = createIU("B", new Version(2, 0, 0), true);
40
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
48
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
41
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, false);
49
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, false);
42
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, lifeCycle);
50
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, lifeCycle);
43
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1, a3, f1, f2});
51
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1, a3, f1, f2});
44
52
45
		profile1 = createProfile("TestProfile." + getName());
53
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate3.java (-11 / +15 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.engine.*;
Lines 36-58 Link Here
36
40
37
	protected void setUp() throws Exception {
41
	protected void setUp() throws Exception {
38
		super.setUp();
42
		super.setUp();
39
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
43
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
40
		p1 = createIU(P1, new Version(1, 0, 0), true);
44
		p1 = createIU(P1, new Version(1, 0, 0), true);
41
		p2 = createIU(P2, new Version(1, 0, 0), true);
45
		p2 = createIU(P2, new Version(1, 0, 0), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
46
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
47
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
48
45
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
49
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false, true);
50
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false, true);
47
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
51
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
52
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
53
50
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
54
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
55
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
56
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
57
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
54
58
55
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
59
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
56
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2, p2Feature20});
60
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2, p2Feature20});
57
61
58
		profile1 = createProfile("TestProfile." + getName());
62
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/SDKPatchingTest1.java (-3 / +7 lines)
Lines 1-5 Link Here
1
package org.eclipse.equinox.p2.tests.planner;
1
package org.eclipse.equinox.p2.tests.planner;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
4
5
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
6
3
import java.io.File;
7
import java.io.File;
4
import java.util.ArrayList;
8
import java.util.ArrayList;
5
import org.eclipse.core.runtime.NullProgressMonitor;
9
import org.eclipse.core.runtime.NullProgressMonitor;
Lines 31-39 Link Here
31
		changeVersion(newCommon, newVersionCommon);
35
		changeVersion(newCommon, newVersionCommon);
32
		newIUs.add(MetadataFactory.createInstallableUnit(newCommon));
36
		newIUs.add(MetadataFactory.createInstallableUnit(newCommon));
33
37
34
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", new VersionRange(newVersionCommon, true, newVersionCommon, true), null, false, false, true));
38
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", new VersionRange(newVersionCommon, true, newVersionCommon, true), null, false, false, true));
35
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.rcp.feature.group", new VersionRange("[3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE, 3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE]"), null, false, false, true);
39
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.rcp.feature.group", new VersionRange("[3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE, 3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE]"), null, false, false, true);
36
		patchInstallingCommon = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[0][0], lifeCycle);
40
		patchInstallingCommon = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[0][0], lifeCycle);
37
41
38
		newIUs.add(patchInstallingCommon);
42
		newIUs.add(patchInstallingCommon);
39
	}
43
	}
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest8.java (-8 / +14 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
11
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
18
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
19
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 40-58 Link Here
40
		b2 = createIU("B", new Version("2.0.0"), true);
46
		b2 = createIU("B", new Version("2.0.0"), true);
41
		c2 = createIU("C", new Version("2.0.0"), true);
47
		c2 = createIU("C", new Version("2.0.0"), true);
42
48
43
		RequiredCapability[] req = new RequiredCapability[3];
49
		IRequiredCapability[] req = new IRequiredCapability[3];
44
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
50
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
45
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
51
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
46
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 3.1.0)"), null, false, true);
52
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 3.1.0)"), null, false, true);
47
		f1 = createIU("F", new Version(1, 0, 0), req);
53
		f1 = createIU("F", new Version(1, 0, 0), req);
48
54
49
		RequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
55
		IRequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
50
		RequiredCapability[][] scope = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
56
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
51
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeA}, scope, null);
57
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scope, null);
52
58
53
		RequirementChange changeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
59
		IRequirementChange changeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
54
		RequiredCapability[][] scopePP = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
60
		IRequiredCapability[][] scopePP = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
55
		r1 = createIUPatch("R", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeB}, scopePP, null);
61
		r1 = createIUPatch("R", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeB}, scopePP, null);
56
62
57
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, b1, b2, c2, f1, p1, r1});
63
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, b1, b2, c2, f1, p1, r1});
58
64
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest9.java (-6 / +10 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 31-46 Link Here
31
35
32
	protected void setUp() throws Exception {
36
	protected void setUp() throws Exception {
33
		super.setUp();
37
		super.setUp();
34
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
38
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
35
		b1 = createIU("B", new Version(1, 0, 0), true);
39
		b1 = createIU("B", new Version(1, 0, 0), true);
36
		b2 = createIU("B", new Version(1, 2, 0), true);
40
		b2 = createIU("B", new Version(1, 2, 0), true);
37
		c1 = createIU("C", new Version(1, 0, 0), true);
41
		c1 = createIU("C", new Version(1, 0, 0), true);
38
		RequirementChange changeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
42
		IRequirementChange changeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
39
		RequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
43
		IRequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {changeB, changeC}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
44
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeB, changeC}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
41
45
42
		RequirementChange anotherChangeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, true, false, true));
46
		IRequirementChange anotherChangeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, true, false, true));
43
		pp1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {changeB, anotherChangeC}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
47
		pp1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeB, anotherChangeC}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
44
48
45
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, c1, p1, pp1});
49
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, c1, p1, pp1});
46
50
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest7.java (-5 / +11 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
11
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
18
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
19
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 40-48 Link Here
40
		y2 = createIU("Y", new Version(1, 2, 0), true);
46
		y2 = createIU("Y", new Version(1, 2, 0), true);
41
		//		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
47
		//		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
42
		//		b1 = createIU("B", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
48
		//		b1 = createIU("B", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
43
		c1 = createIU("C", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
49
		c1 = createIU("C", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
44
50
45
		RequiredCapability[] req = new RequiredCapability[1];
51
		IRequiredCapability[] req = new IRequiredCapability[1];
46
		//		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
52
		//		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
47
		//		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
53
		//		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
48
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
54
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
Lines 52-60 Link Here
52
		//		RequiredCapability[][] scope = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
58
		//		RequiredCapability[][] scope = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
53
		//		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeX}, scope, null);
59
		//		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeX}, scope, null);
54
60
55
		RequirementChange changeY = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
61
		IRequirementChange changeY = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
56
		RequiredCapability[][] scopePP = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
62
		IRequiredCapability[][] scopePP = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
57
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeY}, scopePP, null);
63
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeY}, scopePP, null);
58
64
59
		//		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, x1, y1, y2, f1, p1, pp1});
65
		//		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, x1, y1, y2, f1, p1, pp1});
60
		createTestMetdataRepository(new IInstallableUnit[] {c1, y1, y2, f1, pp1});
66
		createTestMetdataRepository(new IInstallableUnit[] {c1, y1, y2, f1, pp1});
(-)src/org/eclipse/equinox/p2/tests/planner/SimpleOptionalTest2.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 49-61 Link Here
49
		z1 = createIU("Z", new Version("1.0.0"), true);
51
		z1 = createIU("Z", new Version("1.0.0"), true);
50
52
51
		//B's dependency is missing
53
		//B's dependency is missing
52
		RequiredCapability[] reqA = new RequiredCapability[3];
54
		IRequiredCapability[] reqA = new IRequiredCapability[3];
53
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
55
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
54
		reqA[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
56
		reqA[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, true, false, true);
55
		reqA[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, true, false, true);
57
		reqA[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, true, false, true);
56
		a1 = createIU("A", new Version("1.0.0"), reqA);
58
		a1 = createIU("A", new Version("1.0.0"), reqA);
57
59
58
		RequiredCapability[] req = new RequiredCapability[3];
60
		IRequiredCapability[] req = new IRequiredCapability[3];
59
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
61
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
60
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, true);
62
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, true);
61
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Z", VersionRange.emptyRange, null, true, false, true);
63
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Z", VersionRange.emptyRange, null, true, false, true);
(-)src/org/eclipse/equinox/p2/tests/planner/Bug252638.java (-3 / +7 lines)
Lines 1-5 Link Here
1
package org.eclipse.equinox.p2.tests.planner;
1
package org.eclipse.equinox.p2.tests.planner;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
4
5
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
6
3
import org.eclipse.core.runtime.IStatus;
7
import org.eclipse.core.runtime.IStatus;
4
import org.eclipse.equinox.internal.provisional.p2.core.Version;
8
import org.eclipse.equinox.internal.provisional.p2.core.Version;
5
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
9
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
Lines 20-28 Link Here
20
	protected void setUp() throws Exception {
24
	protected void setUp() throws Exception {
21
		super.setUp();
25
		super.setUp();
22
		a1 = createIU("A", new Version("1.0.0"), true);
26
		a1 = createIU("A", new Version("1.0.0"), true);
23
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
27
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
24
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, false);
28
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, false);
25
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
29
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
26
30
27
		createTestMetdataRepository(new IInstallableUnit[] {a1, p1});
31
		createTestMetdataRepository(new IInstallableUnit[] {a1, p1});
28
32
(-)src/org/eclipse/equinox/p2/tests/planner/ActualChangeRequestTest.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import java.util.Map;
13
import java.util.Map;
12
import org.eclipse.core.runtime.IStatus;
14
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.equinox.internal.provisional.p2.core.Version;
15
import org.eclipse.equinox.internal.provisional.p2.core.Version;
Lines 29-35 Link Here
29
31
30
	protected void setUp() throws Exception {
32
	protected void setUp() throws Exception {
31
		super.setUp();
33
		super.setUp();
32
		a = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)}, NO_PROPERTIES, true);
34
		a = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)}, NO_PROPERTIES, true);
33
35
34
		b = createIU("B", new Version("1.0.0"), true);
36
		b = createIU("B", new Version("1.0.0"), true);
35
37
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestOptional2.java (-5 / +9 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
15
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
12
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
16
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 32-46 Link Here
32
36
33
	protected void setUp() throws Exception {
37
	protected void setUp() throws Exception {
34
		super.setUp();
38
		super.setUp();
35
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
39
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
36
		p1 = createIU(P1, new Version(1, 0, 0), true);
40
		p1 = createIU(P1, new Version(1, 0, 0), true);
37
		p2 = createIU(P2, new Version(1, 0, 0), true);
41
		p2 = createIU(P2, new Version(1, 0, 0), true);
38
		p2b = createIU(P2, new Version(1, 1, 1), true);
42
		p2b = createIU(P2, new Version(1, 1, 1), true);
39
43
40
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
44
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
41
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
45
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
46
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
43
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
47
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
44
48
45
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p2b, pp1});
49
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p2b, pp1});
46
50
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate5.java (-6 / +10 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
16
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 36-53 Link Here
36
40
37
	protected void setUp() throws Exception {
41
	protected void setUp() throws Exception {
38
		super.setUp();
42
		super.setUp();
39
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
43
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
40
		p1 = createIU(P1, new Version(1, 0, 0), true);
44
		p1 = createIU(P1, new Version(1, 0, 0), true);
41
		p2 = createIU(P2, new Version(1, 0, 0), true);
45
		p2 = createIU(P2, new Version(1, 0, 0), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
46
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
47
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
48
45
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
49
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
50
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
51
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
52
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
53
50
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
54
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
51
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, p2Feature20});
55
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, p2Feature20});
52
56
53
		profile1 = createProfile("TestProfile." + getName());
57
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/SimpleOptionalTest3.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 42-54 Link Here
42
		d1 = createIU("D", new Version("1.0.0"), true);
44
		d1 = createIU("D", new Version("1.0.0"), true);
43
		d2 = createIU("D", new Version("2.0.0"), true);
45
		d2 = createIU("D", new Version("2.0.0"), true);
44
46
45
		RequiredCapability[] reqA = new RequiredCapability[3];
47
		IRequiredCapability[] reqA = new IRequiredCapability[3];
46
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
48
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
47
		reqA[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true);
49
		reqA[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true);
48
		reqA[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, true, false, true);
50
		reqA[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, true, false, true);
49
		a1 = createIU("A", new Version("1.0.0"), reqA);
51
		a1 = createIU("A", new Version("1.0.0"), reqA);
50
52
51
		RequiredCapability[] req = new RequiredCapability[1];
53
		IRequiredCapability[] req = new IRequiredCapability[1];
52
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 2.0.0]"), null, false, false, true);
54
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 2.0.0]"), null, false, false, true);
53
		x1 = createIU("X", req);
55
		x1 = createIU("X", req);
54
56
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest7b.java (-11 / +17 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
11
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
18
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
19
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 38-60 Link Here
38
		x1 = createIU("X", new Version(1, 2, 0), true);
44
		x1 = createIU("X", new Version(1, 2, 0), true);
39
		y1 = createIU("Y", new Version(1, 0, 0), true);
45
		y1 = createIU("Y", new Version(1, 0, 0), true);
40
		y2 = createIU("Y", new Version(1, 2, 0), true);
46
		y2 = createIU("Y", new Version(1, 2, 0), true);
41
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
47
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
42
		b1 = createIU("B", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
48
		b1 = createIU("B", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
43
		c1 = createIU("C", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
49
		c1 = createIU("C", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
44
50
45
		RequiredCapability[] req = new RequiredCapability[3];
51
		IRequiredCapability[] req = new IRequiredCapability[3];
46
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
52
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
47
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
53
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
48
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
54
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
49
		f1 = createIU("F", new Version(1, 0, 0), req);
55
		f1 = createIU("F", new Version(1, 0, 0), req);
50
56
51
		RequirementChange changeX = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
57
		IRequirementChange changeX = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
52
		RequiredCapability[][] scope = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
58
		IRequiredCapability[][] scope = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
53
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeX}, scope, null);
59
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeX}, scope, null);
54
60
55
		RequirementChange changeY = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
61
		IRequirementChange changeY = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
56
		RequiredCapability[][] scopePP = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
62
		IRequiredCapability[][] scopePP = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
57
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeY}, scopePP, null);
63
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeY}, scopePP, null);
58
64
59
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, x1, y1, y2, f1, p1, pp1});
65
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, x1, y1, y2, f1, p1, pp1});
60
		//		createTestMetdataRepository(new IInstallableUnit[] {c1, y1, y2, f1, pp1});
66
		//		createTestMetdataRepository(new IInstallableUnit[] {c1, y1, y2, f1, pp1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest5.java (-7 / +11 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 30-43 Link Here
30
34
31
	protected void setUp() throws Exception {
35
	protected void setUp() throws Exception {
32
		super.setUp();
36
		super.setUp();
33
		top = createIU("TOP", new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
37
		top = createIU("TOP", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
34
		f1 = createIU("F", new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
38
		f1 = createIU("F", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
35
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
39
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
36
		b1 = createIU("B", new Version(1, 2, 0), true);
40
		b1 = createIU("B", new Version(1, 2, 0), true);
37
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
41
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
38
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
39
		RequiredCapability[][] scope = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
43
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, scope, lifeCycle);
44
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, scope, lifeCycle);
41
45
42
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, f1, top, p1});
46
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, f1, top, p1});
43
47
(-)src/org/eclipse/equinox/p2/tests/planner/MissingOptionalWithDependencies3.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 32-43 Link Here
32
		c2 = createIU("C", new Version("2.0.0"), true);
34
		c2 = createIU("C", new Version("2.0.0"), true);
33
35
34
		//B's dependency on C can not be satisfied
36
		//B's dependency on C can not be satisfied
35
		RequiredCapability[] reqB = new RequiredCapability[2];
37
		IRequiredCapability[] reqB = new IRequiredCapability[2];
36
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.0.0]"), null, true, false, true);
38
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.0.0]"), null, true, false, true);
37
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
39
		reqB[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
38
		b1 = createIU("B", new Version("1.0.0"), reqB);
40
		b1 = createIU("B", new Version("1.0.0"), reqB);
39
41
40
		RequiredCapability[] req = new RequiredCapability[3];
42
		IRequiredCapability[] req = new IRequiredCapability[3];
41
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
43
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
42
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
44
		req[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
43
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 2.0.0]"), null, false, false, true);
45
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 2.0.0]"), null, false, false, true);
(-)src/org/eclipse/equinox/p2/tests/planner/Bug255984.java (-1 / +3 lines)
Lines 1-5 Link Here
1
package org.eclipse.equinox.p2.tests.planner;
1
package org.eclipse.equinox.p2.tests.planner;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
4
3
import org.eclipse.core.runtime.IStatus;
5
import org.eclipse.core.runtime.IStatus;
4
import org.eclipse.core.runtime.NullProgressMonitor;
6
import org.eclipse.core.runtime.NullProgressMonitor;
5
import org.eclipse.equinox.internal.provisional.p2.director.*;
7
import org.eclipse.equinox.internal.provisional.p2.director.*;
Lines 21-27 Link Here
21
23
22
	protected void setUp() throws Exception {
24
	protected void setUp() throws Exception {
23
		super.setUp();
25
		super.setUp();
24
		a = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)}, NO_PROPERTIES, true);
26
		a = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)}, NO_PROPERTIES, true);
25
27
26
		b = createIU("B", new Version("1.0.0"), true);
28
		b = createIU("B", new Version("1.0.0"), true);
27
29
(-)src/org/eclipse/equinox/p2/tests/planner/DropinsScenario.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 35-44 Link Here
35
		a0 = createIU("A", new Version("0.0.0"), true);
37
		a0 = createIU("A", new Version("0.0.0"), true);
36
		b0 = createIU("B", new Version("0.0.0"), true);
38
		b0 = createIU("B", new Version("0.0.0"), true);
37
39
38
		RequiredCapability[] reqAs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[0.0.0, 1.0.0]"), null, false, false, true)};
40
		IRequiredCapability[] reqAs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[0.0.0, 1.0.0]"), null, false, false, true)};
39
		as = createIU("AS", new Version("0.0.0"), reqAs);
41
		as = createIU("AS", new Version("0.0.0"), reqAs);
40
42
41
		RequiredCapability[] reqBs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[0.0.0, 1.0.0]"), null, false, false, true)};
43
		IRequiredCapability[] reqBs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[0.0.0, 1.0.0]"), null, false, false, true)};
42
		bs = createIU("BS", new Version("0.0.0"), reqBs);
44
		bs = createIU("BS", new Version("0.0.0"), reqBs);
43
45
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, a0, b0, as, bs});
46
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, a0, b0, as, bs});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate4.java (-6 / +10 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.engine.*;
Lines 35-52 Link Here
35
39
36
	protected void setUp() throws Exception {
40
	protected void setUp() throws Exception {
37
		super.setUp();
41
		super.setUp();
38
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
42
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
39
		p1 = createIU(P1, new Version(1, 0, 0), true);
43
		p1 = createIU(P1, new Version(1, 0, 0), true);
40
		p2 = createIU(P2, new Version(1, 0, 0), true);
44
		p2 = createIU(P2, new Version(1, 0, 0), true);
41
		p1b = createIU(P1, new Version(1, 1, 1), true);
45
		p1b = createIU(P1, new Version(1, 1, 1), true);
42
		p2b = createIU(P2, new Version(1, 1, 1), true);
46
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
47
44
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
48
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
45
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, true);
49
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, true);
46
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
50
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
47
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
51
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
48
52
49
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
53
		p2Feature20 = createIU(P2_FEATURE, new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
50
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, p2Feature20});
54
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, p2Feature20});
51
55
52
		profile1 = createProfile("TestProfile." + getName());
56
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/MissingDependency.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 27-33 Link Here
27
		a1 = createIU("A", new Version("1.0.0"), true);
29
		a1 = createIU("A", new Version("1.0.0"), true);
28
30
29
		//Missing non optional dependency
31
		//Missing non optional dependency
30
		RequiredCapability[] req = new RequiredCapability[1];
32
		IRequiredCapability[] req = new IRequiredCapability[1];
31
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true);
33
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true);
32
		b1 = createIU("B", new Version("1.0.0"), req);
34
		b1 = createIU("B", new Version("1.0.0"), req);
33
35
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestOptional.java (-5 / +9 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
15
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
12
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
16
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 33-48 Link Here
33
37
34
	protected void setUp() throws Exception {
38
	protected void setUp() throws Exception {
35
		super.setUp();
39
		super.setUp();
36
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
40
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
37
		p1 = createIU(P1, new Version(1, 0, 0), true);
41
		p1 = createIU(P1, new Version(1, 0, 0), true);
38
		p2 = createIU(P2, new Version(1, 0, 0), true);
42
		p2 = createIU(P2, new Version(1, 0, 0), true);
39
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p1b = createIU(P1, new Version(1, 1, 1), true);
40
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
41
45
42
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
46
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
43
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
44
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
45
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
46
50
47
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1});
51
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1});
48
52
(-)src/org/eclipse/equinox/p2/tests/planner/SDKPatchingTest2.java (-6 / +10 lines)
Lines 1-5 Link Here
1
package org.eclipse.equinox.p2.tests.planner;
1
package org.eclipse.equinox.p2.tests.planner;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
4
5
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
6
3
import java.io.File;
7
import java.io.File;
4
import java.util.ArrayList;
8
import java.util.ArrayList;
5
import org.eclipse.core.runtime.NullProgressMonitor;
9
import org.eclipse.core.runtime.NullProgressMonitor;
Lines 33-41 Link Here
33
		changeVersion(newJDTLaunching, newJDTLaunchingVersion);
37
		changeVersion(newJDTLaunching, newJDTLaunchingVersion);
34
		newIUs.add(MetadataFactory.createInstallableUnit(newJDTLaunching));
38
		newIUs.add(MetadataFactory.createInstallableUnit(newJDTLaunching));
35
39
36
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", new VersionRange(newJDTLaunchingVersion, true, newJDTLaunchingVersion, true), null, false, false, true));
40
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", new VersionRange(newJDTLaunchingVersion, true, newJDTLaunchingVersion, true), null, false, false, true));
37
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
41
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
38
		patchInstallingJDTLaunching = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[0][0], lifeCycle);
42
		patchInstallingJDTLaunching = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[0][0], lifeCycle);
39
43
40
		newIUs.add(patchInstallingJDTLaunching);
44
		newIUs.add(patchInstallingJDTLaunching);
41
45
Lines 45-53 Link Here
45
		changeVersion(newDebugUI, newDebugVersion);
49
		changeVersion(newDebugUI, newDebugVersion);
46
		newIUs.add(MetadataFactory.createInstallableUnit(newDebugUI));
50
		newIUs.add(MetadataFactory.createInstallableUnit(newDebugUI));
47
51
48
		RequirementChange change2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", new VersionRange(newDebugVersion, true, newDebugVersion, true), null, false, false, true));
52
		IRequirementChange change2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", new VersionRange(newDebugVersion, true, newDebugVersion, true), null, false, false, true));
49
		RequiredCapability lifeCycle2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
53
		IRequiredCapability lifeCycle2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
50
		patchInstallingDebugUI = createIUPatch("P2", new Version("1.0.0"), true, new RequirementChange[] {change2}, new RequiredCapability[0][0], lifeCycle2);
54
		patchInstallingDebugUI = createIUPatch("P2", new Version("1.0.0"), true, new IRequirementChange[] {change2}, new IRequiredCapability[0][0], lifeCycle2);
51
55
52
		newIUs.add(patchInstallingDebugUI);
56
		newIUs.add(patchInstallingDebugUI);
53
57
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest2.java (-9 / +17 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
18
11
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
20
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
21
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 33-48 Link Here
33
41
34
	protected void setUp() throws Exception {
42
	protected void setUp() throws Exception {
35
		super.setUp();
43
		super.setUp();
36
		ProvidedCapability[] cap = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("foo", "bar", new Version(1, 0, 0))};
44
		IProvidedCapability[] cap = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("foo", "bar", new Version(1, 0, 0))};
37
		a1 = createIU("A", new Version("1.0.0"), null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false)}, cap, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null);
45
		a1 = createIU("A", new Version("1.0.0"), null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false)}, cap, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null);
38
		b1 = createIU("B", new Version(1, 2, 0), true);
46
		b1 = createIU("B", new Version(1, 2, 0), true);
39
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
47
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, null);
48
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, null);
41
		p2 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
49
		p2 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
42
		p3 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
50
		p3 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
43
		p4 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.6.0, 1.7.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
51
		p4 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.6.0, 1.7.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
44
		p5 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability("foo", "bar", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.5.0]"), null, false, false, false)}}, null);
52
		p5 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability("foo", "bar", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.5.0]"), null, false, false, false)}}, null);
45
		p6 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {}, null);
53
		p6 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {}, null);
46
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, p1, p2, p3, p4, p5, p6});
54
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, p1, p2, p3, p4, p5, p6});
47
55
48
		profile1 = createProfile("TestProfile." + getName());
56
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest6.java (-10 / +16 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
11
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
18
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
19
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 32-51 Link Here
32
38
33
	protected void setUp() throws Exception {
39
	protected void setUp() throws Exception {
34
		super.setUp();
40
		super.setUp();
35
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
41
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
36
		b1 = createIU("B", new Version(1, 2, 0), true);
42
		b1 = createIU("B", new Version(1, 2, 0), true);
37
43
38
		c1 = createIU("C", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
44
		c1 = createIU("C", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
39
		d1 = createIU("D", new Version(1, 2, 0), true);
45
		d1 = createIU("D", new Version(1, 2, 0), true);
40
46
41
		RequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
47
		IRequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
42
		RequiredCapability[][] scopeP1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
48
		IRequiredCapability[][] scopeP1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
43
		RequiredCapability[] reqOnPP = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "PP", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, true)};
49
		IRequiredCapability[] reqOnPP = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "PP", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, true)};
44
		p1 = createIUPatch("P", new Version("1.0.0"), null, reqOnPP, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeA}, scopeP1, null);
50
		p1 = createIUPatch("P", new Version("1.0.0"), null, reqOnPP, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scopeP1, null);
45
51
46
		RequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
52
		IRequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
47
		RequiredCapability[][] scopePP1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
53
		IRequiredCapability[][] scopePP1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
48
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new RequirementChange[] {changeC}, scopePP1, null);
54
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new IRequirementChange[] {changeC}, scopePP1, null);
49
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1, pp1});
55
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1, pp1});
50
56
51
		profile1 = createProfile("TestProfile." + getName());
57
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/planner/ActualChangeRequestTest2.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.equinox.internal.provisional.p2.director.RequestStatus;
13
import org.eclipse.equinox.internal.provisional.p2.director.RequestStatus;
12
14
13
import java.util.Map;
15
import java.util.Map;
Lines 32-38 Link Here
32
34
33
	protected void setUp() throws Exception {
35
	protected void setUp() throws Exception {
34
		super.setUp();
36
		super.setUp();
35
		a = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)}, NO_PROPERTIES, true);
37
		a = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)}, NO_PROPERTIES, true);
36
38
37
		b = createIU("B", new Version("1.0.0"), true);
39
		b = createIU("B", new Version("1.0.0"), true);
38
		b2 = createIU("B", new Version("2.0.0"), true);
40
		b2 = createIU("B", new Version("2.0.0"), true);
(-)src/org/eclipse/equinox/p2/tests/planner/MultipleSingleton.java (-16 / +18 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
14
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
15
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
Lines 39-60 Link Here
39
41
40
		x = createIU("X", new Version(2, 0, 0), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 4.1.0)"), null));
42
		x = createIU("X", new Version(2, 0, 0), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 4.1.0)"), null));
41
43
42
		RequiredCapability c1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
44
		IRequiredCapability c1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
43
		RequiredCapability c2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 2.0.0]"), null, false, false);
45
		IRequiredCapability c2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 2.0.0]"), null, false, false);
44
		y = createIU("Y", new Version(2, 0, 0), new RequiredCapability[] {c1, c2});
46
		y = createIU("Y", new Version(2, 0, 0), new IRequiredCapability[] {c1, c2});
45
47
46
		RequiredCapability c3 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 3.0.0]"), null, false, false);
48
		IRequiredCapability c3 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 3.0.0]"), null, false, false);
47
		RequiredCapability c4 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[4.0.0, 4.0.0]"), null, false, false);
49
		IRequiredCapability c4 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[4.0.0, 4.0.0]"), null, false, false);
48
		z = createIU("Z", new Version(2, 0, 0), new RequiredCapability[] {c3, c4});
50
		z = createIU("Z", new Version(2, 0, 0), new IRequiredCapability[] {c3, c4});
49
51
50
		RequiredCapability c5 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
52
		IRequiredCapability c5 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
51
		RequiredCapability c6 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 3.0.0]"), null, false, false);
53
		IRequiredCapability c6 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 3.0.0]"), null, false, false);
52
		w = createIU("W", new Version(2, 0, 0), new RequiredCapability[] {c5, c6});
54
		w = createIU("W", new Version(2, 0, 0), new IRequiredCapability[] {c5, c6});
53
55
54
		RequiredCapability c7 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 2.0.0]"), null, false, false);
56
		IRequiredCapability c7 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 2.0.0]"), null, false, false);
55
		RequiredCapability c8 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 4.0.0]"), null, false, false);
57
		IRequiredCapability c8 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[3.0.0, 4.0.0]"), null, false, false);
56
		v = createIU("V", new Version(2, 0, 0), new RequiredCapability[] {c7});
58
		v = createIU("V", new Version(2, 0, 0), new IRequiredCapability[] {c7});
57
		u = createIU("U", new Version(2, 0, 0), new RequiredCapability[] {c8});
59
		u = createIU("U", new Version(2, 0, 0), new IRequiredCapability[] {c8});
58
60
59
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, a3, a4, w, x, y, z});
61
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, a3, a4, w, x, y, z});
60
62
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest10.java (-5 / +9 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 31-45 Link Here
31
35
32
	protected void setUp() throws Exception {
36
	protected void setUp() throws Exception {
33
		super.setUp();
37
		super.setUp();
34
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
38
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
35
		b1 = createIU("B", new Version(1, 0, 0), true);
39
		b1 = createIU("B", new Version(1, 0, 0), true);
36
		b2 = createIU("B", new Version(1, 2, 0), true);
40
		b2 = createIU("B", new Version(1, 2, 0), true);
37
		b3 = createIU("B", new Version(1, 3, 0), true);
41
		b3 = createIU("B", new Version(1, 3, 0), true);
38
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
42
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
39
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
43
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
40
44
41
		RequirementChange anotherChangeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.3.0]"), null, false, false, true));
45
		IRequirementChange anotherChangeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.3.0]"), null, false, false, true));
42
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new RequirementChange[] {anotherChangeB}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
46
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new IRequirementChange[] {anotherChangeB}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
43
47
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, pp1});
48
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, pp1});
45
49
(-)src/org/eclipse/equinox/p2/tests/planner/MissingOptionalNonGreedyRequirement.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 26-32 Link Here
26
		super.setUp();
28
		super.setUp();
27
		b1 = createIU("B", new Version("1.0.0"), true);
29
		b1 = createIU("B", new Version("1.0.0"), true);
28
30
29
		RequiredCapability[] reqB = new RequiredCapability[1];
31
		IRequiredCapability[] reqB = new IRequiredCapability[1];
30
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, false);
32
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, false);
31
		a1 = createIU("A", new Version("1.0.0"), reqB);
33
		a1 = createIU("A", new Version("1.0.0"), reqB);
32
34
(-)src/org/eclipse/equinox/p2/tests/planner/SimpleOptionalTest.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 31-37 Link Here
31
		b1 = createIU("B", new Version("1.0.0"), true);
33
		b1 = createIU("B", new Version("1.0.0"), true);
32
34
33
		//B's dependency is missing
35
		//B's dependency is missing
34
		RequiredCapability[] reqA = new RequiredCapability[1];
36
		IRequiredCapability[] reqA = new IRequiredCapability[1];
35
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
37
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, true);
36
		a1 = createIU("A", new Version("1.0.0"), reqA);
38
		a1 = createIU("A", new Version("1.0.0"), reqA);
37
39
(-)src/org/eclipse/equinox/p2/tests/planner/PatchFailingToInstall.java (-10 / +14 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
16
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 31-51 Link Here
31
35
32
	protected void setUp() throws Exception {
36
	protected void setUp() throws Exception {
33
		super.setUp();
37
		super.setUp();
34
		p2Feature = createIU("p2.feature", new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
38
		p2Feature = createIU("p2.feature", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
35
		p1 = createIU("P1", new Version(1, 0, 0), true);
39
		p1 = createIU("P1", new Version(1, 0, 0), true);
36
		p2 = createIU("P2", new Version(1, 0, 0), true);
40
		p2 = createIU("P2", new Version(1, 0, 0), true);
37
		p1b = createIU("P1", new Version(1, 1, 1), true);
41
		p1b = createIU("P1", new Version(1, 1, 1), true);
38
		p2b = createIU("P2", new Version(1, 1, 1), true);
42
		p2b = createIU("P2", new Version(1, 1, 1), true);
39
43
40
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
44
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
41
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
45
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
46
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
43
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
47
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
44
48
45
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
49
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
46
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
50
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
51
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
48
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
52
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
49
53
50
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2});
54
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2});
51
55
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUninstall.java (-10 / +14 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
16
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 36-56 Link Here
36
40
37
	protected void setUp() throws Exception {
41
	protected void setUp() throws Exception {
38
		super.setUp();
42
		super.setUp();
39
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
43
		p2Feature = createIU(P2_FEATURE, new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
40
		p1 = createIU(P1, new Version(1, 0, 0), true);
44
		p1 = createIU(P1, new Version(1, 0, 0), true);
41
		p2 = createIU(P2, new Version(1, 0, 0), true);
45
		p2 = createIU(P2, new Version(1, 0, 0), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
46
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
47
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
48
45
		RequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
49
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		RequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
50
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		RequiredCapability[][] scopepp1 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
51
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new RequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
52
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
53
50
		RequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
54
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		RequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
55
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		RequiredCapability[][] scopepp2 = new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
56
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new RequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
57
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
54
58
55
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2});
59
		createTestMetdataRepository(new IInstallableUnit[] {p2Feature, p1, p2, p1b, p2b, pp1, pp2});
56
60
(-)src/org/eclipse/equinox/p2/tests/planner/SimpleSingleton.java (-3 / +5 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
14
import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
13
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
15
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
Lines 33-41 Link Here
33
35
34
		a2 = createIU("A", new Version("2.0.0"), true);
36
		a2 = createIU("A", new Version("2.0.0"), true);
35
37
36
		RequiredCapability c1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
38
		IRequiredCapability c1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
37
		RequiredCapability c2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 2.0.0]"), null, false, false);
39
		IRequiredCapability c2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 2.0.0]"), null, false, false);
38
		y = createIU("Y", new Version(2, 0, 0), new RequiredCapability[] {c1, c2});
40
		y = createIU("Y", new Version(2, 0, 0), new IRequiredCapability[] {c1, c2});
39
41
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, y});
42
		createTestMetdataRepository(new IInstallableUnit[] {a1, a2, y});
41
43
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest11.java (-3 / +7 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
17
import org.eclipse.equinox.internal.provisional.p2.engine.IEngine;
Lines 29-39 Link Here
29
33
30
	protected void setUp() throws Exception {
34
	protected void setUp() throws Exception {
31
		super.setUp();
35
		super.setUp();
32
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
36
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
33
		b1 = createIU("B", new Version(1, 0, 0), true);
37
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
38
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		RequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), "foo=bar", false, false, true));
39
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), "foo=bar", false, false, true));
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {change}, new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
37
41
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
42
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
39
43
(-)src/org/eclipse/equinox/p2/tests/planner/SimpleOptionalTest4.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 37-43 Link Here
37
		b4 = createIU("B", new Version("4.0.0"), false);
39
		b4 = createIU("B", new Version("4.0.0"), false);
38
40
39
		//B's dependency is missing
41
		//B's dependency is missing
40
		RequiredCapability[] reqA = new RequiredCapability[4];
42
		IRequiredCapability[] reqA = new IRequiredCapability[4];
41
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0,1.0.0]"), null, true, false, true);
43
		reqA[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0,1.0.0]"), null, true, false, true);
42
		reqA[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0,2.0.0]"), null, true, false, true);
44
		reqA[1] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0,2.0.0]"), null, true, false, true);
43
		reqA[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[3.0.0,3.0.0]"), null, true, false, true);
45
		reqA[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[3.0.0,3.0.0]"), null, true, false, true);
(-)src/org/eclipse/equinox/p2/tests/planner/GreedyRequirement.java (-2 / +4 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
Lines 27-37 Link Here
27
		super.setUp();
29
		super.setUp();
28
		b1 = createIU("B", new Version("1.0.0"), true);
30
		b1 = createIU("B", new Version("1.0.0"), true);
29
31
30
		RequiredCapability[] reqB = new RequiredCapability[1];
32
		IRequiredCapability[] reqB = new IRequiredCapability[1];
31
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, false);
33
		reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, false);
32
		a1 = createIU("A", new Version("1.0.0"), reqB);
34
		a1 = createIU("A", new Version("1.0.0"), reqB);
33
35
34
		RequiredCapability[] reqC = new RequiredCapability[1];
36
		IRequiredCapability[] reqC = new IRequiredCapability[1];
35
		reqC[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
37
		reqC[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
36
		c1 = createIU("C", new Version("1.0.0"), reqC);
38
		c1 = createIU("C", new Version("1.0.0"), reqC);
37
39
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest4.java (-10 / +14 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.planner;
9
package org.eclipse.equinox.p2.tests.planner;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
13
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.engine.*;
Lines 34-54 Link Here
34
38
35
	protected void setUp() throws Exception {
39
	protected void setUp() throws Exception {
36
		super.setUp();
40
		super.setUp();
37
		f1 = createIU("F", new Version(1, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true)});
41
		f1 = createIU("F", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, true)});
38
		a1 = createIU("A", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, true)});
42
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, true)});
39
		b1 = createIU("B", new Version(1, 0, 0), true);
43
		b1 = createIU("B", new Version(1, 0, 0), true);
40
		c1 = createIU("C", new Version("1.0.0"), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, true)});
44
		c1 = createIU("C", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, true)});
41
		d1 = createIU("D", new Version(1, 0, 0), true);
45
		d1 = createIU("D", new Version(1, 0, 0), true);
42
		b2 = createIU("B", new Version(2, 0, 0), new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 3.1.0)"), null, false, false, true)});
46
		b2 = createIU("B", new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 3.1.0)"), null, false, false, true)});
43
		d2 = createIU("D", new Version(2, 0, 0), true);
47
		d2 = createIU("D", new Version(2, 0, 0), true);
44
48
45
		RequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
49
		IRequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
46
		RequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
50
		IRequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
47
51
48
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false);
52
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false);
49
		RequiredCapability[][] scope = new RequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}};
53
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}};
50
		p1 = createIUPatch("P", new Version("1.0.0"), true, new RequirementChange[] {changeA, changeC}, scope, lifeCycle);
54
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeA, changeC}, scope, lifeCycle);
51
		p2 = createIUPatch("P", new Version("2.0.0"), true, new RequirementChange[] {changeA, changeC}, new RequiredCapability[0][0], lifeCycle);
55
		p2 = createIUPatch("P", new Version("2.0.0"), true, new IRequirementChange[] {changeA, changeC}, new IRequiredCapability[0][0], lifeCycle);
52
		createTestMetdataRepository(new IInstallableUnit[] {f1, a1, b1, b2, c1, d1, d2, p1});
56
		createTestMetdataRepository(new IInstallableUnit[] {f1, a1, b1, b2, c1, d1, d2, p1});
53
57
54
		profile1 = createProfile("TestProfile." + getName());
58
		profile1 = createProfile("TestProfile." + getName());
(-)src/org/eclipse/equinox/p2/tests/metadata/FragmentTest.java (-2 / +6 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.util.*;
17
import java.util.*;
14
import junit.framework.AssertionFailedError;
18
import junit.framework.AssertionFailedError;
15
import org.eclipse.equinox.internal.p2.resolution.ResolutionHelper;
19
import org.eclipse.equinox.internal.p2.resolution.ResolutionHelper;
Lines 86-92 Link Here
86
90
87
	public void testDefaultIUCapability() {
91
	public void testDefaultIUCapability() {
88
		IInstallableUnit iu = createEclipseIU("ui.test1");
92
		IInstallableUnit iu = createEclipseIU("ui.test1");
89
		ProvidedCapability[] cap = iu.getProvidedCapabilities();
93
		IProvidedCapability[] cap = iu.getProvidedCapabilities();
90
		for (int i = 0; i < cap.length; i++) {
94
		for (int i = 0; i < cap.length; i++) {
91
			if (cap[i].getNamespace().equals(IInstallableUnit.NAMESPACE_IU_ID)) {
95
			if (cap[i].getNamespace().equals(IInstallableUnit.NAMESPACE_IU_ID)) {
92
				assertEquals(cap[i].getNamespace(), IInstallableUnit.NAMESPACE_IU_ID);
96
				assertEquals(cap[i].getNamespace(), IInstallableUnit.NAMESPACE_IU_ID);
Lines 114-120 Link Here
114
	}
118
	}
115
119
116
	private IInstallableUnit createIUWithTouchpointData() {
120
	private IInstallableUnit createIUWithTouchpointData() {
117
		TouchpointData data = MetadataFactory.createTouchpointData(new HashMap());
121
		ITouchpointData data = MetadataFactory.createTouchpointData(new HashMap());
118
		return createEclipseIU("ui.test1", DEFAULT_VERSION, NO_REQUIRES, data);
122
		return createEclipseIU("ui.test1", DEFAULT_VERSION, NO_REQUIRES, data);
119
	}
123
	}
120
124
(-)src/org/eclipse/equinox/p2/tests/metadata/InstallableUnitTest.java (-6 / +10 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
14
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
18
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
15
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
19
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
Lines 23-36 Link Here
23
	 * Tests for {@link org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit#satisfies(org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability)}.
27
	 * Tests for {@link org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit#satisfies(org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability)}.
24
	 */
28
	 */
25
	public void testSatisfies() {
29
	public void testSatisfies() {
26
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("testNamespace", "name", new Version(1, 0, 0))};
30
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("testNamespace", "name", new Version(1, 0, 0))};
27
		IInstallableUnit iu = createIU("iu", provides);
31
		IInstallableUnit iu = createIU("iu", provides);
28
32
29
		RequiredCapability wrongNamespace = MetadataFactory.createRequiredCapability("wrongNamespace", "name", VersionRange.emptyRange, null, false, false);
33
		IRequiredCapability wrongNamespace = MetadataFactory.createRequiredCapability("wrongNamespace", "name", VersionRange.emptyRange, null, false, false);
30
		RequiredCapability wrongName = MetadataFactory.createRequiredCapability("testNamespace", "wrongName", VersionRange.emptyRange, null, false, false);
34
		IRequiredCapability wrongName = MetadataFactory.createRequiredCapability("testNamespace", "wrongName", VersionRange.emptyRange, null, false, false);
31
		RequiredCapability lowerVersionRange = MetadataFactory.createRequiredCapability("testNamespace", "name", new VersionRange("[0.1,1.0)"), null, false, false);
35
		IRequiredCapability lowerVersionRange = MetadataFactory.createRequiredCapability("testNamespace", "name", new VersionRange("[0.1,1.0)"), null, false, false);
32
		RequiredCapability higherVersionRange = MetadataFactory.createRequiredCapability("testNamespace", "name", new VersionRange("(1.0,99.99]"), null, false, false);
36
		IRequiredCapability higherVersionRange = MetadataFactory.createRequiredCapability("testNamespace", "name", new VersionRange("(1.0,99.99]"), null, false, false);
33
		RequiredCapability match = MetadataFactory.createRequiredCapability("testNamespace", "name", new VersionRange("[1.0,2.0)"), null, false, false);
37
		IRequiredCapability match = MetadataFactory.createRequiredCapability("testNamespace", "name", new VersionRange("[1.0,2.0)"), null, false, false);
34
38
35
		assertFalse("1.0", iu.satisfies(wrongNamespace));
39
		assertFalse("1.0", iu.satisfies(wrongNamespace));
36
		assertFalse("1.1", iu.satisfies(wrongName));
40
		assertFalse("1.1", iu.satisfies(wrongName));
(-)src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java (-29 / +37 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
20
13
import java.io.*;
21
import java.io.*;
14
import java.util.*;
22
import java.util.*;
15
import javax.xml.parsers.ParserConfigurationException;
23
import javax.xml.parsers.ParserConfigurationException;
Lines 64-72 Link Here
64
72
65
	public static IInstallableUnit createPersistenceTestIU() {
73
	public static IInstallableUnit createPersistenceTestIU() {
66
		Map propertyMap = createProperties(properties);
74
		Map propertyMap = createProperties(properties);
67
		ProvidedCapability[] additionalProvides = createProvided(provides);
75
		IProvidedCapability[] additionalProvides = createProvided(provides);
68
		RequiredCapability[] requirements = createRequired(requires);
76
		IRequiredCapability[] requirements = createRequired(requires);
69
		TouchpointData tpData = createTouchpointData(instructions);
77
		ITouchpointData tpData = createTouchpointData(instructions);
70
		IUpdateDescriptor update = createUpdateDescriptor();
78
		IUpdateDescriptor update = createUpdateDescriptor();
71
		boolean singleton = false;
79
		boolean singleton = false;
72
		IInstallableUnit iu = createIU(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update);
80
		IInstallableUnit iu = createIU(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update);
Lines 86-93 Link Here
86
		return props;
94
		return props;
87
	}
95
	}
88
96
89
	private static ProvidedCapability[] createProvided(String[][] provideTuples) {
97
	private static IProvidedCapability[] createProvided(String[][] provideTuples) {
90
		ProvidedCapability[] provided = new ProvidedCapability[provideTuples.length];
98
		IProvidedCapability[] provided = new IProvidedCapability[provideTuples.length];
91
		for (int i = 0; i < provideTuples.length; i++) {
99
		for (int i = 0; i < provideTuples.length; i++) {
92
			String[] nextTuple = provideTuples[i];
100
			String[] nextTuple = provideTuples[i];
93
			provided[i] = MetadataFactory.createProvidedCapability(nextTuple[0], nextTuple[1], new Version(nextTuple[2]));
101
			provided[i] = MetadataFactory.createProvidedCapability(nextTuple[0], nextTuple[1], new Version(nextTuple[2]));
Lines 96-103 Link Here
96
		return provided;
104
		return provided;
97
	}
105
	}
98
106
99
	private static RequiredCapability[] createRequired(String[][] requireTuples) {
107
	private static IRequiredCapability[] createRequired(String[][] requireTuples) {
100
		RequiredCapability[] required = new RequiredCapability[requireTuples.length];
108
		IRequiredCapability[] required = new IRequiredCapability[requireTuples.length];
101
		for (int i = 0; i < requireTuples.length; i++) {
109
		for (int i = 0; i < requireTuples.length; i++) {
102
			String[] nextTuple = requireTuples[i];
110
			String[] nextTuple = requireTuples[i];
103
			required[i] = MetadataFactory.createRequiredCapability(nextTuple[0], nextTuple[1], new VersionRange(nextTuple[2]), null, Boolean.valueOf(nextTuple[3]).booleanValue(), false);
111
			required[i] = MetadataFactory.createRequiredCapability(nextTuple[0], nextTuple[1], new VersionRange(nextTuple[2]), null, Boolean.valueOf(nextTuple[3]).booleanValue(), false);
Lines 105-111 Link Here
105
		return required;
113
		return required;
106
	}
114
	}
107
115
108
	private static TouchpointData createTouchpointData(String[][] instructionData) {
116
	private static ITouchpointData createTouchpointData(String[][] instructionData) {
109
		Map map = new LinkedHashMap(instructionData.length);
117
		Map map = new LinkedHashMap(instructionData.length);
110
		for (int i = 0; i < instructionData.length; i++) {
118
		for (int i = 0; i < instructionData.length; i++) {
111
			String[] nextInstruction = instructionData[i];
119
			String[] nextInstruction = instructionData[i];
Lines 306-336 Link Here
306
314
307
	private IInstallableUnitPatch createPatchWithEmptyScope() {
315
	private IInstallableUnitPatch createPatchWithEmptyScope() {
308
		Map propertyMap = createProperties(properties);
316
		Map propertyMap = createProperties(properties);
309
		ProvidedCapability[] additionalProvides = createProvided(provides);
317
		IProvidedCapability[] additionalProvides = createProvided(provides);
310
		RequiredCapability[] requirements = createRequired(requires);
318
		IRequiredCapability[] requirements = createRequired(requires);
311
		TouchpointData tpData = createTouchpointData(instructions);
319
		ITouchpointData tpData = createTouchpointData(instructions);
312
		IUpdateDescriptor update = createUpdateDescriptor();
320
		IUpdateDescriptor update = createUpdateDescriptor();
313
		boolean singleton = false;
321
		boolean singleton = false;
314
		RequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
322
		IRequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
315
		RequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
323
		IRequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
316
		RequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
324
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
317
		RequiredCapability[][] scope = new RequiredCapability[][] {{}};
325
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{}};
318
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new RequirementChange[] {change1, change2, change3}, scope, null);
326
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, null);
319
		return iu;
327
		return iu;
320
	}
328
	}
321
329
322
	private IInstallableUnitPatch createPatchIU() {
330
	private IInstallableUnitPatch createPatchIU() {
323
		Map propertyMap = createProperties(properties);
331
		Map propertyMap = createProperties(properties);
324
		ProvidedCapability[] additionalProvides = createProvided(provides);
332
		IProvidedCapability[] additionalProvides = createProvided(provides);
325
		RequiredCapability[] requirements = createRequired(requires);
333
		IRequiredCapability[] requirements = createRequired(requires);
326
		TouchpointData tpData = createTouchpointData(instructions);
334
		ITouchpointData tpData = createTouchpointData(instructions);
327
		IUpdateDescriptor update = createUpdateDescriptor();
335
		IUpdateDescriptor update = createUpdateDescriptor();
328
		boolean singleton = false;
336
		boolean singleton = false;
329
		RequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
337
		IRequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
330
		RequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
338
		IRequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
331
		RequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
339
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
332
		RequiredCapability[][] scope = new RequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
340
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
333
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new RequirementChange[] {change1, change2, change3}, scope, null);
341
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, null);
334
		return iu;
342
		return iu;
335
	}
343
	}
336
344
Lines 392-398 Link Here
392
400
393
	private static String[][] addSelfCapability(IInstallableUnit iu, String[][] provideTuples) {
401
	private static String[][] addSelfCapability(IInstallableUnit iu, String[][] provideTuples) {
394
		String[][] augmentedProvides = new String[provideTuples.length + 1][3];
402
		String[][] augmentedProvides = new String[provideTuples.length + 1][3];
395
		ProvidedCapability self = getSelfCapability(iu);
403
		IProvidedCapability self = getSelfCapability(iu);
396
		augmentedProvides[0] = new String[] {self.getNamespace(), self.getName(), self.getVersion().toString()};
404
		augmentedProvides[0] = new String[] {self.getNamespace(), self.getName(), self.getVersion().toString()};
397
		for (int i = 0; i < provideTuples.length; i++) {
405
		for (int i = 0; i < provideTuples.length; i++) {
398
			augmentedProvides[i + 1] = provideTuples[i];
406
			augmentedProvides[i + 1] = provideTuples[i];
Lines 401-420 Link Here
401
	}
409
	}
402
410
403
	private static String[][] extractProvides(IInstallableUnit iu) {
411
	private static String[][] extractProvides(IInstallableUnit iu) {
404
		ProvidedCapability[] provydes = iu.getProvidedCapabilities();
412
		IProvidedCapability[] provydes = iu.getProvidedCapabilities();
405
		String[][] tuples = new String[provydes.length][3];
413
		String[][] tuples = new String[provydes.length][3];
406
		for (int i = 0; i < provydes.length; i++) {
414
		for (int i = 0; i < provydes.length; i++) {
407
			ProvidedCapability next = provydes[i];
415
			IProvidedCapability next = provydes[i];
408
			tuples[i] = new String[] {next.getNamespace(), next.getName(), next.getVersion().toString()};
416
			tuples[i] = new String[] {next.getNamespace(), next.getName(), next.getVersion().toString()};
409
		}
417
		}
410
		return tuples;
418
		return tuples;
411
	}
419
	}
412
420
413
	private static String[][] extractRequires(IInstallableUnit iu) {
421
	private static String[][] extractRequires(IInstallableUnit iu) {
414
		RequiredCapability[] requyres = iu.getRequiredCapabilities();
422
		IRequiredCapability[] requyres = iu.getRequiredCapabilities();
415
		String[][] tuples = new String[requyres.length][4];
423
		String[][] tuples = new String[requyres.length][4];
416
		for (int i = 0; i < requyres.length; i++) {
424
		for (int i = 0; i < requyres.length; i++) {
417
			RequiredCapability next = requyres[i];
425
			IRequiredCapability next = requyres[i];
418
			tuples[i] = new String[] {next.getNamespace(), next.getName(), next.getRange().toString(), Boolean.valueOf(next.isOptional()).toString()};
426
			tuples[i] = new String[] {next.getNamespace(), next.getName(), next.getRange().toString(), Boolean.valueOf(next.isOptional()).toString()};
419
		}
427
		}
420
		return tuples;
428
		return tuples;
(-)src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java (-20 / +28 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
20
13
import java.io.*;
21
import java.io.*;
14
import java.util.*;
22
import java.util.*;
15
import javax.xml.parsers.ParserConfigurationException;
23
import javax.xml.parsers.ParserConfigurationException;
Lines 64-72 Link Here
64
72
65
	public static IInstallableUnit createPersistenceTestIU() {
73
	public static IInstallableUnit createPersistenceTestIU() {
66
		Map propertyMap = createProperties(properties);
74
		Map propertyMap = createProperties(properties);
67
		ProvidedCapability[] additionalProvides = createProvided(provides);
75
		IProvidedCapability[] additionalProvides = createProvided(provides);
68
		RequiredCapability[] requirements = createRequired(requires);
76
		IRequiredCapability[] requirements = createRequired(requires);
69
		TouchpointData tpData = createTouchpointData(instructions);
77
		ITouchpointData tpData = createTouchpointData(instructions);
70
		IUpdateDescriptor update = createUpdateDescriptor();
78
		IUpdateDescriptor update = createUpdateDescriptor();
71
		boolean singleton = false;
79
		boolean singleton = false;
72
		IInstallableUnit iu = createIU(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update);
80
		IInstallableUnit iu = createIU(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update);
Lines 86-93 Link Here
86
		return props;
94
		return props;
87
	}
95
	}
88
96
89
	private static ProvidedCapability[] createProvided(String[][] provideTuples) {
97
	private static IProvidedCapability[] createProvided(String[][] provideTuples) {
90
		ProvidedCapability[] provided = new ProvidedCapability[provideTuples.length];
98
		IProvidedCapability[] provided = new IProvidedCapability[provideTuples.length];
91
		for (int i = 0; i < provideTuples.length; i++) {
99
		for (int i = 0; i < provideTuples.length; i++) {
92
			String[] nextTuple = provideTuples[i];
100
			String[] nextTuple = provideTuples[i];
93
			provided[i] = MetadataFactory.createProvidedCapability(nextTuple[0], nextTuple[1], new Version(nextTuple[2]));
101
			provided[i] = MetadataFactory.createProvidedCapability(nextTuple[0], nextTuple[1], new Version(nextTuple[2]));
Lines 96-103 Link Here
96
		return provided;
104
		return provided;
97
	}
105
	}
98
106
99
	private static RequiredCapability[] createRequired(String[][] requireTuples) {
107
	private static IRequiredCapability[] createRequired(String[][] requireTuples) {
100
		RequiredCapability[] required = new RequiredCapability[requireTuples.length];
108
		IRequiredCapability[] required = new IRequiredCapability[requireTuples.length];
101
		for (int i = 0; i < requireTuples.length; i++) {
109
		for (int i = 0; i < requireTuples.length; i++) {
102
			String[] nextTuple = requireTuples[i];
110
			String[] nextTuple = requireTuples[i];
103
			required[i] = MetadataFactory.createRequiredCapability(nextTuple[0], nextTuple[1], new VersionRange(nextTuple[2]), null, Boolean.valueOf(nextTuple[3]).booleanValue(), false);
111
			required[i] = MetadataFactory.createRequiredCapability(nextTuple[0], nextTuple[1], new VersionRange(nextTuple[2]), null, Boolean.valueOf(nextTuple[3]).booleanValue(), false);
Lines 105-111 Link Here
105
		return required;
113
		return required;
106
	}
114
	}
107
115
108
	private static TouchpointData createTouchpointData(String[][] instructionData) {
116
	private static ITouchpointData createTouchpointData(String[][] instructionData) {
109
		Map map = new LinkedHashMap(instructionData.length);
117
		Map map = new LinkedHashMap(instructionData.length);
110
		for (int i = 0; i < instructionData.length; i++) {
118
		for (int i = 0; i < instructionData.length; i++) {
111
			String[] nextInstruction = instructionData[i];
119
			String[] nextInstruction = instructionData[i];
Lines 281-297 Link Here
281
289
282
	private IInstallableUnitPatch createPatchIU() {
290
	private IInstallableUnitPatch createPatchIU() {
283
		Map propertyMap = createProperties(properties);
291
		Map propertyMap = createProperties(properties);
284
		ProvidedCapability[] additionalProvides = createProvided(provides);
292
		IProvidedCapability[] additionalProvides = createProvided(provides);
285
		RequiredCapability[] requirements = createRequired(requires);
293
		IRequiredCapability[] requirements = createRequired(requires);
286
		TouchpointData tpData = createTouchpointData(instructions);
294
		ITouchpointData tpData = createTouchpointData(instructions);
287
		IUpdateDescriptor update = createUpdateDescriptor();
295
		IUpdateDescriptor update = createUpdateDescriptor();
288
		boolean singleton = false;
296
		boolean singleton = false;
289
		RequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
297
		IRequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
290
		RequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
298
		IRequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
291
		RequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
299
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
292
		RequiredCapability[][] scope = new RequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
300
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
293
		RequiredCapability lifeCycle = MetadataFactory.createRequiredCapability("zoo", "x", null, null, false, false, false);
301
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability("zoo", "x", null, null, false, false, false);
294
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new RequirementChange[] {change1, change2, change3}, scope, lifeCycle);
302
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, lifeCycle);
295
		return iu;
303
		return iu;
296
	}
304
	}
297
305
Lines 340-346 Link Here
340
348
341
	private static String[][] addSelfCapability(IInstallableUnit iu, String[][] provideTuples) {
349
	private static String[][] addSelfCapability(IInstallableUnit iu, String[][] provideTuples) {
342
		String[][] augmentedProvides = new String[provideTuples.length + 1][3];
350
		String[][] augmentedProvides = new String[provideTuples.length + 1][3];
343
		ProvidedCapability self = getSelfCapability(iu);
351
		IProvidedCapability self = getSelfCapability(iu);
344
		augmentedProvides[0] = new String[] {self.getNamespace(), self.getName(), self.getVersion().toString()};
352
		augmentedProvides[0] = new String[] {self.getNamespace(), self.getName(), self.getVersion().toString()};
345
		for (int i = 0; i < provideTuples.length; i++) {
353
		for (int i = 0; i < provideTuples.length; i++) {
346
			augmentedProvides[i + 1] = provideTuples[i];
354
			augmentedProvides[i + 1] = provideTuples[i];
Lines 349-358 Link Here
349
	}
357
	}
350
358
351
	private static String[][] extractProvides(IInstallableUnit iu) {
359
	private static String[][] extractProvides(IInstallableUnit iu) {
352
		ProvidedCapability[] provydes = iu.getProvidedCapabilities();
360
		IProvidedCapability[] provydes = iu.getProvidedCapabilities();
353
		String[][] tuples = new String[provydes.length][3];
361
		String[][] tuples = new String[provydes.length][3];
354
		for (int i = 0; i < provydes.length; i++) {
362
		for (int i = 0; i < provydes.length; i++) {
355
			ProvidedCapability next = provydes[i];
363
			IProvidedCapability next = provydes[i];
356
			tuples[i] = new String[] {next.getNamespace(), next.getName(), next.getVersion().toString()};
364
			tuples[i] = new String[] {next.getNamespace(), next.getName(), next.getVersion().toString()};
357
		}
365
		}
358
		return tuples;
366
		return tuples;
(-)src/org/eclipse/equinox/p2/tests/metadata/MultipleIUAndFragmentTest.java (-1 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.util.*;
15
import java.util.*;
14
import org.eclipse.equinox.internal.p2.resolution.ResolutionHelper;
16
import org.eclipse.equinox.internal.p2.resolution.ResolutionHelper;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
Lines 61-67 Link Here
61
	}
63
	}
62
64
63
	private static IInstallableUnit createIUWithDependencyOn(String iuName, String dependencyOn) {
65
	private static IInstallableUnit createIUWithDependencyOn(String iuName, String dependencyOn) {
64
		RequiredCapability[] requires = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, dependencyOn, VersionRange.emptyRange, null, false, true)};
66
		IRequiredCapability[] requires = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, dependencyOn, VersionRange.emptyRange, null, false, true)};
65
		return createEclipseIU(iuName, DEFAULT_VERSION, requires, NO_TP_DATA);
67
		return createEclipseIU(iuName, DEFAULT_VERSION, requires, NO_TP_DATA);
66
	}
68
	}
67
}
69
}
(-)src/org/eclipse/equinox/p2/tests/metadata/FragmentMethodTest.java (-10 / +14 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.util.*;
17
import java.util.*;
14
import junit.framework.AssertionFailedError;
18
import junit.framework.AssertionFailedError;
15
import junit.framework.TestCase;
19
import junit.framework.TestCase;
Lines 27-36 Link Here
27
	private static final String TEST_REQUIRED = "testRequired";
31
	private static final String TEST_REQUIRED = "testRequired";
28
	IInstallableUnit iu1;
32
	IInstallableUnit iu1;
29
	IInstallableUnit iu3;
33
	IInstallableUnit iu3;
30
	RequiredCapability[] iu1Deps;
34
	IRequiredCapability[] iu1Deps;
31
	RequiredCapability[] iu3Deps;
35
	IRequiredCapability[] iu3Deps;
32
	ProvidedCapability[] iu1Caps;
36
	IProvidedCapability[] iu1Caps;
33
	ProvidedCapability[] iu3Caps;
37
	IProvidedCapability[] iu3Caps;
34
38
35
	protected void setUp() throws Exception {
39
	protected void setUp() throws Exception {
36
		super.setUp();
40
		super.setUp();
Lines 64-73 Link Here
64
	}
68
	}
65
69
66
	public void testCapabilities() {
70
	public void testCapabilities() {
67
		ProvidedCapability[] iuCapabilities = iu1Caps;
71
		IProvidedCapability[] iuCapabilities = iu1Caps;
68
		ProvidedCapability[] initialFragmentCapabilities = iu3Caps;
72
		IProvidedCapability[] initialFragmentCapabilities = iu3Caps;
69
73
70
		ProvidedCapability[] mergedCapabilities = iu1.getProvidedCapabilities();
74
		IProvidedCapability[] mergedCapabilities = iu1.getProvidedCapabilities();
71
		for (int i = 0; i < iuCapabilities.length; i++) {
75
		for (int i = 0; i < iuCapabilities.length; i++) {
72
			FragmentTest.assertContainsWithEquals(mergedCapabilities, iuCapabilities[i]);
76
			FragmentTest.assertContainsWithEquals(mergedCapabilities, iuCapabilities[i]);
73
		}
77
		}
Lines 143-151 Link Here
143
		iu.setVersion(new Version(1, 0, 0));
147
		iu.setVersion(new Version(1, 0, 0));
144
		iu.setTouchpointType(AbstractProvisioningTest.TOUCHPOINT_OSGI);
148
		iu.setTouchpointType(AbstractProvisioningTest.TOUCHPOINT_OSGI);
145
		iu.setProperty(PROP_FRAG, "value");
149
		iu.setProperty(PROP_FRAG, "value");
146
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability("eclipse.touchpoint", "bundle", VersionRange.emptyRange, null, false, true), MetadataFactory.createRequiredCapability(TEST_REQUIRED, TEST_REQUIRED, VersionRange.emptyRange, null, true, false)};
150
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability("eclipse.touchpoint", "bundle", VersionRange.emptyRange, null, false, true), MetadataFactory.createRequiredCapability(TEST_REQUIRED, TEST_REQUIRED, VersionRange.emptyRange, null, true, false)};
147
		iu.setHost(reqs);
151
		iu.setHost(reqs);
148
		ProvidedCapability[] cap = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("testCapabilityInFragment", "testCapabilityInFragment", new Version(1, 0, 0))};
152
		IProvidedCapability[] cap = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("testCapabilityInFragment", "testCapabilityInFragment", new Version(1, 0, 0))};
149
		iu.setCapabilities(cap);
153
		iu.setCapabilities(cap);
150
		return MetadataFactory.createInstallableUnitFragment(iu);
154
		return MetadataFactory.createInstallableUnitFragment(iu);
151
	}
155
	}
Lines 156-162 Link Here
156
		iu.setVersion(new Version(1, 0, 0));
160
		iu.setVersion(new Version(1, 0, 0));
157
		iu.setTouchpointType(AbstractProvisioningTest.TOUCHPOINT_OSGI);
161
		iu.setTouchpointType(AbstractProvisioningTest.TOUCHPOINT_OSGI);
158
		iu.setProperty(PROP_IU, "valueIU");
162
		iu.setProperty(PROP_IU, "valueIU");
159
		ProvidedCapability[] cap = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("eclipse.touchpoint", "bundle", new Version(1, 0, 0)), MetadataFactory.createProvidedCapability("testCapability", "testCapability", new Version(1, 0, 0))};
163
		IProvidedCapability[] cap = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("eclipse.touchpoint", "bundle", new Version(1, 0, 0)), MetadataFactory.createProvidedCapability("testCapability", "testCapability", new Version(1, 0, 0))};
160
		iu.setCapabilities(cap);
164
		iu.setCapabilities(cap);
161
		return MetadataFactory.createInstallableUnit(iu);
165
		return MetadataFactory.createInstallableUnit(iu);
162
	}
166
	}
(-)src/org/eclipse/equinox/p2/tests/metadata/LicenseTest.java (-2 / +4 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.metadata;
11
package org.eclipse.equinox.p2.tests.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
14
13
import junit.framework.TestCase;
15
import junit.framework.TestCase;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.License;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.License;
15
17
Lines 18-25 Link Here
18
 */
20
 */
19
public class LicenseTest extends TestCase {
21
public class LicenseTest extends TestCase {
20
	public void testNormalize() {
22
	public void testNormalize() {
21
		License licenseOne = new License(null, "a   b");
23
		ILicense licenseOne = new License(null, "a   b");
22
		License licenseTwo = new License(null, "a\t\n\r  \t\n\r  b");
24
		ILicense licenseTwo = new License(null, "a\t\n\r  \t\n\r  b");
23
		assertEquals("1.0", licenseOne.getDigest(), licenseTwo.getDigest());
25
		assertEquals("1.0", licenseOne.getDigest(), licenseTwo.getDigest());
24
26
25
		licenseOne = new License(null, "   a b  c  ");
27
		licenseOne = new License(null, "   a b  c  ");
(-)src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java (-47 / +59 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests;
9
package org.eclipse.equinox.p2.tests;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
20
21
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
22
11
import java.io.*;
23
import java.io.*;
12
import java.net.URI;
24
import java.net.URI;
13
import java.net.URL;
25
import java.net.URL;
Lines 41-58 Link Here
41
public abstract class AbstractProvisioningTest extends TestCase {
53
public abstract class AbstractProvisioningTest extends TestCase {
42
54
43
	protected static final VersionRange ANY_VERSION = new VersionRange(Version.emptyVersion, true, new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE), true);
55
	protected static final VersionRange ANY_VERSION = new VersionRange(Version.emptyVersion, true, new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE), true);
44
	private static final ProvidedCapability[] BUNDLE_CAPABILITY = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("eclipse.touchpoint", "bundle", new Version(1, 0, 0))};
56
	private static final IProvidedCapability[] BUNDLE_CAPABILITY = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("eclipse.touchpoint", "bundle", new Version(1, 0, 0))};
45
57
46
	private static final RequiredCapability[] BUNDLE_REQUIREMENT = new RequiredCapability[] {MetadataFactory.createRequiredCapability("eclipse.touchpoint", "bundle", VersionRange.emptyRange, null, false, true)};
58
	private static final IRequiredCapability[] BUNDLE_REQUIREMENT = new IRequiredCapability[] {MetadataFactory.createRequiredCapability("eclipse.touchpoint", "bundle", VersionRange.emptyRange, null, false, true)};
47
59
48
	protected static final Version DEFAULT_VERSION = new Version(1, 0, 0);
60
	protected static final Version DEFAULT_VERSION = new Version(1, 0, 0);
49
	public static final TouchpointType TOUCHPOINT_OSGI = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version(1, 0, 0));
61
	public static final TouchpointType TOUCHPOINT_OSGI = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version(1, 0, 0));
50
62
51
	protected static final Map NO_PROPERTIES = Collections.EMPTY_MAP;
63
	protected static final Map NO_PROPERTIES = Collections.EMPTY_MAP;
52
	protected static final ProvidedCapability[] NO_PROVIDES = new ProvidedCapability[0];
64
	protected static final IProvidedCapability[] NO_PROVIDES = new IProvidedCapability[0];
53
	protected static final RequiredCapability[] NO_REQUIRES = new RequiredCapability[0];
65
	protected static final IRequiredCapability[] NO_REQUIRES = new IRequiredCapability[0];
54
66
55
	protected static final TouchpointData NO_TP_DATA = MetadataFactory.createTouchpointData(new HashMap());
67
	protected static final ITouchpointData NO_TP_DATA = MetadataFactory.createTouchpointData(new HashMap());
56
68
57
	//flag used to disable currently failing (invalid) tests. This should always be set to true
69
	//flag used to disable currently failing (invalid) tests. This should always be set to true
58
	protected boolean DISABLED = true;
70
	protected boolean DISABLED = true;
Lines 207-213 Link Here
207
	 *  that is hosted by any bundle. The default self and fragment provided capabilities
219
	 *  that is hosted by any bundle. The default self and fragment provided capabilities
208
	 *  are added to the IU.
220
	 *  are added to the IU.
209
	 */
221
	 */
210
	public static IInstallableUnitFragment createBundleFragment(String name, Version version, TouchpointData tpData) {
222
	public static IInstallableUnitFragment createBundleFragment(String name, Version version, ITouchpointData tpData) {
211
		return createIUFragment(null, name, version, BUNDLE_REQUIREMENT, TOUCHPOINT_OSGI, tpData);
223
		return createIUFragment(null, name, version, BUNDLE_REQUIREMENT, TOUCHPOINT_OSGI, tpData);
212
	}
224
	}
213
225
Lines 242-248 Link Here
242
	 * 	Create an Eclipse InstallableUnit with the given attributes. All other attributes
254
	 * 	Create an Eclipse InstallableUnit with the given attributes. All other attributes
243
	 * assume default values, and the default self capability is also added to the IU.
255
	 * assume default values, and the default self capability is also added to the IU.
244
	 */
256
	 */
245
	public static IInstallableUnit createEclipseIU(String name, Version version, RequiredCapability[] requires, TouchpointData touchpointData) {
257
	public static IInstallableUnit createEclipseIU(String name, Version version, IRequiredCapability[] requires, ITouchpointData touchpointData) {
246
		return createIU(name, version, null, requires, BUNDLE_CAPABILITY, NO_PROPERTIES, TOUCHPOINT_OSGI, touchpointData, false);
258
		return createIU(name, version, null, requires, BUNDLE_CAPABILITY, NO_PROPERTIES, TOUCHPOINT_OSGI, touchpointData, false);
247
	}
259
	}
248
260
Lines 269-300 Link Here
269
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
281
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
270
	 * assume default values, and the default self capability is also added to the IU.
282
	 * assume default values, and the default self capability is also added to the IU.
271
	 */
283
	 */
272
	public static IInstallableUnit createIU(String name, ProvidedCapability[] additionalProvides) {
284
	public static IInstallableUnit createIU(String name, IProvidedCapability[] additionalProvides) {
273
		return createIU(name, DEFAULT_VERSION, null, NO_REQUIRES, additionalProvides, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
285
		return createIU(name, DEFAULT_VERSION, null, NO_REQUIRES, additionalProvides, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
274
	}
286
	}
275
287
276
	/**
288
	/**
277
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
289
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
278
	 * assume default values, and the default self capability is also added to the IU.
290
	 * assume default values, and the default self capability is also added to the IU.
279
	 */
291
	 */
280
	public static IInstallableUnit createIU(String name, RequiredCapability[] requires) {
292
	public static IInstallableUnit createIU(String name, IRequiredCapability[] requires) {
281
		return createIU(name, DEFAULT_VERSION, null, requires, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
293
		return createIU(name, DEFAULT_VERSION, null, requires, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
282
	}
294
	}
283
295
284
	/**
296
	/**
285
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
297
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
286
	 * assume default values, and the default self capability is also added to the IU.
298
	 * assume default values, and the default self capability is also added to the IU.
287
	 */
299
	 */
288
	public static IInstallableUnit createIU(String name, RequiredCapability[] requires, boolean singleton) {
300
	public static IInstallableUnit createIU(String name, IRequiredCapability[] requires, boolean singleton) {
289
		return createIU(name, DEFAULT_VERSION, null, requires, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, singleton);
301
		return createIU(name, DEFAULT_VERSION, null, requires, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, singleton);
290
	}
302
	}
291
303
292
	/**
304
	/**
293
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
305
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
294
	 * assume default values, and the default self capability is also added to the IU.
306
	 * assume default values, and the default self capability is also added to the IU.
295
	 */
307
	 */
296
	public static IInstallableUnit createIU(String name, String filter, ProvidedCapability[] additionalProvides) {
308
	public static IInstallableUnit createIU(String name, String filter, IProvidedCapability[] additionalProvides) {
297
		return createIU(name, DEFAULT_VERSION, filter, NO_REQUIRES, additionalProvides, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
309
		return createIU(name, DEFAULT_VERSION, filter, NO_REQUIRES, additionalProvides, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
298
	}
310
	}
299
311
300
	/**
312
	/**
Lines 302-308 Link Here
302
	 * assume default values, and the default self capability is also added to the IU.
314
	 * assume default values, and the default self capability is also added to the IU.
303
	 */
315
	 */
304
	public static IInstallableUnit createIU(String name, Version version) {
316
	public static IInstallableUnit createIU(String name, Version version) {
305
		return createIU(name, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
317
		return createIU(name, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
306
	}
318
	}
307
319
308
	/**
320
	/**
Lines 310-368 Link Here
310
	 * assume default values, and the default self capability is also added to the IU.
322
	 * assume default values, and the default self capability is also added to the IU.
311
	 */
323
	 */
312
	public static IInstallableUnit createIU(String name, Version version, boolean singleton) {
324
	public static IInstallableUnit createIU(String name, Version version, boolean singleton) {
313
		return createIU(name, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, singleton);
325
		return createIU(name, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, singleton);
314
	}
326
	}
315
327
316
	/**
328
	/**
317
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
329
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
318
	 * assume default values, and the default self capability is also added to the IU.
330
	 * assume default values, and the default self capability is also added to the IU.
319
	 */
331
	 */
320
	public static IInstallableUnit createIU(String name, Version version, ProvidedCapability[] additionalProvides) {
332
	public static IInstallableUnit createIU(String name, Version version, IProvidedCapability[] additionalProvides) {
321
		return createIU(name, version, null, NO_REQUIRES, additionalProvides, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
333
		return createIU(name, version, null, NO_REQUIRES, additionalProvides, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
322
	}
334
	}
323
335
324
	/**
336
	/**
325
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
337
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
326
	 * assume default values, and the default self capability is also added to the IU.
338
	 * assume default values, and the default self capability is also added to the IU.
327
	 */
339
	 */
328
	public static IInstallableUnit createIU(String name, Version version, RequiredCapability[] required) {
340
	public static IInstallableUnit createIU(String name, Version version, IRequiredCapability[] required) {
329
		return createIU(name, version, null, required, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
341
		return createIU(name, version, null, required, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
330
	}
342
	}
331
343
332
	/**
344
	/**
333
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
345
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
334
	 * assume default values, and the default self capability is also added to the IU.
346
	 * assume default values, and the default self capability is also added to the IU.
335
	 */
347
	 */
336
	public static IInstallableUnit createIU(String name, Version version, RequiredCapability[] required, Map properties, boolean singleton) {
348
	public static IInstallableUnit createIU(String name, Version version, IRequiredCapability[] required, Map properties, boolean singleton) {
337
		return createIU(name, version, null, required, NO_PROVIDES, properties, TouchpointType.NONE, NO_TP_DATA, singleton);
349
		return createIU(name, version, null, required, NO_PROVIDES, properties, ITouchpointType.NONE, NO_TP_DATA, singleton);
338
	}
350
	}
339
351
340
	/**
352
	/**
341
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
353
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
342
	 * assume default values, and the default self capability is also added to the IU.
354
	 * assume default values, and the default self capability is also added to the IU.
343
	 */
355
	 */
344
	public static IInstallableUnit createIU(String name, Version version, String filter, ProvidedCapability[] additionalProvides) {
356
	public static IInstallableUnit createIU(String name, Version version, String filter, IProvidedCapability[] additionalProvides) {
345
		return createIU(name, version, filter, NO_REQUIRES, additionalProvides, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false);
357
		return createIU(name, version, filter, NO_REQUIRES, additionalProvides, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false);
346
	}
358
	}
347
359
348
	/**
360
	/**
349
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
361
	 * 	Create a basic InstallableUnit with the given attributes. All other attributes
350
	 * assume default values, and the default self capability is also added to the IU.
362
	 * assume default values, and the default self capability is also added to the IU.
351
	 */
363
	 */
352
	public static IInstallableUnit createIU(String name, Version version, String filter, RequiredCapability[] required, ProvidedCapability[] additionalProvides, Map properties, TouchpointType tpType, TouchpointData tpData, boolean singleton) {
364
	public static IInstallableUnit createIU(String name, Version version, String filter, IRequiredCapability[] required, IProvidedCapability[] additionalProvides, Map properties, TouchpointType tpType, ITouchpointData tpData, boolean singleton) {
353
		return createIU(name, version, filter, required, additionalProvides, properties, tpType, tpData, singleton, null);
365
		return createIU(name, version, filter, required, additionalProvides, properties, tpType, tpData, singleton, null);
354
	}
366
	}
355
367
356
	public static IInstallableUnitPatch createIUPatch(String name, Version version, boolean singleton, RequirementChange[] changes, RequiredCapability[][] scope, RequiredCapability lifeCycle) {
368
	public static IInstallableUnitPatch createIUPatch(String name, Version version, boolean singleton, IRequirementChange[] changes, IRequiredCapability[][] scope, IRequiredCapability lifeCycle) {
357
		return createIUPatch(name, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, singleton, null, changes, scope, lifeCycle);
369
		return createIUPatch(name, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, singleton, null, changes, scope, lifeCycle);
358
	}
370
	}
359
371
360
	public static IInstallableUnitPatch createIUPatch(String name, Version version, String filter, RequiredCapability[] required, ProvidedCapability[] additionalProvides, Map properties, TouchpointType tpType, TouchpointData tpData, boolean singleton, IUpdateDescriptor update, RequirementChange[] reqChanges, RequiredCapability[][] scope, RequiredCapability lifeCycle) {
372
	public static IInstallableUnitPatch createIUPatch(String name, Version version, String filter, IRequiredCapability[] required, IProvidedCapability[] additionalProvides, Map properties, TouchpointType tpType, ITouchpointData tpData, boolean singleton, IUpdateDescriptor update, IRequirementChange[] reqChanges, IRequiredCapability[][] scope, IRequiredCapability lifeCycle) {
361
		InstallableUnitPatchDescription iu = new MetadataFactory.InstallableUnitPatchDescription();
373
		InstallableUnitPatchDescription iu = new MetadataFactory.InstallableUnitPatchDescription();
362
		iu.setId(name);
374
		iu.setId(name);
363
		iu.setVersion(version);
375
		iu.setVersion(version);
364
		iu.setFilter(filter);
376
		iu.setFilter(filter);
365
		ProvidedCapability[] provides = new ProvidedCapability[additionalProvides.length + 1];
377
		IProvidedCapability[] provides = new IProvidedCapability[additionalProvides.length + 1];
366
		provides[0] = getSelfCapability(name, version);
378
		provides[0] = getSelfCapability(name, version);
367
		for (int i = 0; i < additionalProvides.length; i++) {
379
		for (int i = 0; i < additionalProvides.length; i++) {
368
			provides[i + 1] = additionalProvides[i];
380
			provides[i + 1] = additionalProvides[i];
Lines 385-396 Link Here
385
		return MetadataFactory.createInstallableUnitPatch(iu);
397
		return MetadataFactory.createInstallableUnitPatch(iu);
386
	}
398
	}
387
399
388
	public static IInstallableUnit createIU(String name, Version version, String filter, RequiredCapability[] required, ProvidedCapability[] additionalProvides, Map properties, TouchpointType tpType, TouchpointData tpData, boolean singleton, IUpdateDescriptor update) {
400
	public static IInstallableUnit createIU(String name, Version version, String filter, IRequiredCapability[] required, IProvidedCapability[] additionalProvides, Map properties, TouchpointType tpType, ITouchpointData tpData, boolean singleton, IUpdateDescriptor update) {
389
		InstallableUnitDescription iu = new MetadataFactory.InstallableUnitDescription();
401
		InstallableUnitDescription iu = new MetadataFactory.InstallableUnitDescription();
390
		iu.setId(name);
402
		iu.setId(name);
391
		iu.setVersion(version);
403
		iu.setVersion(version);
392
		iu.setFilter(filter);
404
		iu.setFilter(filter);
393
		ProvidedCapability[] provides = new ProvidedCapability[additionalProvides.length + 1];
405
		IProvidedCapability[] provides = new IProvidedCapability[additionalProvides.length + 1];
394
		provides[0] = getSelfCapability(name, version);
406
		provides[0] = getSelfCapability(name, version);
395
		for (int i = 0; i < additionalProvides.length; i++) {
407
		for (int i = 0; i < additionalProvides.length; i++) {
396
			provides[i + 1] = additionalProvides[i];
408
			provides[i + 1] = additionalProvides[i];
Lines 415-428 Link Here
415
	 * The self and fragment provided capabilities are added to the IU.
427
	 * The self and fragment provided capabilities are added to the IU.
416
	 */
428
	 */
417
	public static IInstallableUnitFragment createIUFragment(IInstallableUnit host, String name, Version version) {
429
	public static IInstallableUnitFragment createIUFragment(IInstallableUnit host, String name, Version version) {
418
		return createIUFragment(host, name, version, NO_REQUIRES, TouchpointType.NONE, NO_TP_DATA);
430
		return createIUFragment(host, name, version, NO_REQUIRES, ITouchpointType.NONE, NO_TP_DATA);
419
	}
431
	}
420
432
421
	/**
433
	/**
422
	 * 	Create a basic InstallableUnitFragment with the given attributes. 
434
	 * 	Create a basic InstallableUnitFragment with the given attributes. 
423
	 * The self and fragment provided capabilities are added to the IU.
435
	 * The self and fragment provided capabilities are added to the IU.
424
	 */
436
	 */
425
	public static IInstallableUnitFragment createIUFragment(IInstallableUnit host, String name, Version version, RequiredCapability[] required, TouchpointType tpType, TouchpointData tpData) {
437
	public static IInstallableUnitFragment createIUFragment(IInstallableUnit host, String name, Version version, IRequiredCapability[] required, TouchpointType tpType, ITouchpointData tpData) {
426
		InstallableUnitFragmentDescription fragment = new InstallableUnitFragmentDescription();
438
		InstallableUnitFragmentDescription fragment = new InstallableUnitFragmentDescription();
427
		fragment.setId(name);
439
		fragment.setId(name);
428
		fragment.setVersion(version);
440
		fragment.setVersion(version);
Lines 433-446 Link Here
433
			fragment.addTouchpointData(tpData);
445
			fragment.addTouchpointData(tpData);
434
		if (host != null) {
446
		if (host != null) {
435
			VersionRange hostRange = new VersionRange(host.getVersion(), true, host.getVersion(), true);
447
			VersionRange hostRange = new VersionRange(host.getVersion(), true, host.getVersion(), true);
436
			fragment.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, host.getId(), hostRange, null, false, false)});
448
			fragment.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, host.getId(), hostRange, null, false, false)});
437
		}
449
		}
438
		fragment.setCapabilities(new ProvidedCapability[] {getSelfCapability(name, version)});
450
		fragment.setCapabilities(new IProvidedCapability[] {getSelfCapability(name, version)});
439
		return MetadataFactory.createInstallableUnitFragment(fragment);
451
		return MetadataFactory.createInstallableUnitFragment(fragment);
440
	}
452
	}
441
453
442
	public static void changeVersion(InstallableUnitDescription desc, Version newVersion) {
454
	public static void changeVersion(InstallableUnitDescription desc, Version newVersion) {
443
		ProvidedCapability[] capabilities = desc.getProvidedCapabilities();
455
		IProvidedCapability[] capabilities = desc.getProvidedCapabilities();
444
		for (int i = 0; i < capabilities.length; i++) {
456
		for (int i = 0; i < capabilities.length; i++) {
445
			if (desc.getVersion().equals(capabilities[i].getVersion()))
457
			if (desc.getVersion().equals(capabilities[i].getVersion()))
446
				capabilities[i] = MetadataFactory.createProvidedCapability(capabilities[i].getNamespace(), capabilities[i].getName(), newVersion);
458
				capabilities[i] = MetadataFactory.createProvidedCapability(capabilities[i].getNamespace(), capabilities[i].getName(), newVersion);
Lines 451-458 Link Here
451
	public static MetadataFactory.InstallableUnitDescription createIUDescriptor(IInstallableUnit prototype) {
463
	public static MetadataFactory.InstallableUnitDescription createIUDescriptor(IInstallableUnit prototype) {
452
		InstallableUnitDescription desc = new MetadataFactory.InstallableUnitDescription();
464
		InstallableUnitDescription desc = new MetadataFactory.InstallableUnitDescription();
453
		desc.setArtifacts(prototype.getArtifacts());
465
		desc.setArtifacts(prototype.getArtifacts());
454
		ProvidedCapability originalCapabilities[] = prototype.getProvidedCapabilities();
466
		IProvidedCapability originalCapabilities[] = prototype.getProvidedCapabilities();
455
		ProvidedCapability newCapabilities[] = new ProvidedCapability[originalCapabilities.length];
467
		IProvidedCapability newCapabilities[] = new IProvidedCapability[originalCapabilities.length];
456
		for (int i = 0; i < originalCapabilities.length; i++) {
468
		for (int i = 0; i < originalCapabilities.length; i++) {
457
			newCapabilities[i] = MetadataFactory.createProvidedCapability(originalCapabilities[i].getNamespace(), originalCapabilities[i].getName(), originalCapabilities[i].getVersion());
469
			newCapabilities[i] = MetadataFactory.createProvidedCapability(originalCapabilities[i].getNamespace(), originalCapabilities[i].getName(), originalCapabilities[i].getVersion());
458
		}
470
		}
Lines 461-468 Link Here
461
		desc.setFilter(prototype.getFilter());
473
		desc.setFilter(prototype.getFilter());
462
		desc.setId(prototype.getId());
474
		desc.setId(prototype.getId());
463
		desc.setLicense(prototype.getLicense());
475
		desc.setLicense(prototype.getLicense());
464
		RequiredCapability[] originalRequirements = prototype.getRequiredCapabilities();
476
		IRequiredCapability[] originalRequirements = prototype.getRequiredCapabilities();
465
		RequiredCapability[] newRequirements = new RequiredCapability[originalRequirements.length];
477
		IRequiredCapability[] newRequirements = new IRequiredCapability[originalRequirements.length];
466
		for (int i = 0; i < newRequirements.length; i++) {
478
		for (int i = 0; i < newRequirements.length; i++) {
467
			newRequirements[i] = MetadataFactory.createRequiredCapability(originalRequirements[i].getNamespace(), originalRequirements[i].getName(), originalRequirements[i].getRange(), originalRequirements[i].getFilter(), originalRequirements[i].isOptional(), originalRequirements[i].isMultiple(), originalRequirements[i].isGreedy());
479
			newRequirements[i] = MetadataFactory.createRequiredCapability(originalRequirements[i].getNamespace(), originalRequirements[i].getName(), originalRequirements[i].getRange(), originalRequirements[i].getFilter(), originalRequirements[i].isOptional(), originalRequirements[i].isMultiple(), originalRequirements[i].isGreedy());
468
		}
480
		}
Lines 487-501 Link Here
487
	/**
499
	/**
488
	 * Creates and returns a required capability with the provided attributes.
500
	 * Creates and returns a required capability with the provided attributes.
489
	 */
501
	 */
490
	protected static RequiredCapability[] createRequiredCapabilities(String namespace, String name, String filter) {
502
	protected static IRequiredCapability[] createRequiredCapabilities(String namespace, String name, String filter) {
491
		return createRequiredCapabilities(namespace, name, ANY_VERSION, filter);
503
		return createRequiredCapabilities(namespace, name, ANY_VERSION, filter);
492
	}
504
	}
493
505
494
	/**
506
	/**
495
	 * Creates and returns a required capability with the provided attributes.
507
	 * Creates and returns a required capability with the provided attributes.
496
	 */
508
	 */
497
	protected static RequiredCapability[] createRequiredCapabilities(String namespace, String name, VersionRange range, String filter) {
509
	protected static IRequiredCapability[] createRequiredCapabilities(String namespace, String name, VersionRange range, String filter) {
498
		return new RequiredCapability[] {MetadataFactory.createRequiredCapability(namespace, name, range, filter, false, false)};
510
		return new IRequiredCapability[] {MetadataFactory.createRequiredCapability(namespace, name, range, filter, false, false)};
499
	}
511
	}
500
512
501
	public static boolean delete(File file) {
513
	public static boolean delete(File file) {
Lines 554-567 Link Here
554
	/**
566
	/**
555
	 * 	Get the 'self' capability for the given installable unit.
567
	 * 	Get the 'self' capability for the given installable unit.
556
	 */
568
	 */
557
	protected static ProvidedCapability getSelfCapability(IInstallableUnit iu) {
569
	protected static IProvidedCapability getSelfCapability(IInstallableUnit iu) {
558
		return getSelfCapability(iu.getId(), iu.getVersion());
570
		return getSelfCapability(iu.getId(), iu.getVersion());
559
	}
571
	}
560
572
561
	/**
573
	/**
562
	 * 	Get the 'self' capability for an installable unit with the give id and version.
574
	 * 	Get the 'self' capability for an installable unit with the give id and version.
563
	 */
575
	 */
564
	private static ProvidedCapability getSelfCapability(String installableUnitId, Version installableUnitVersion) {
576
	private static IProvidedCapability getSelfCapability(String installableUnitId, Version installableUnitVersion) {
565
		return MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, installableUnitId, installableUnitVersion);
577
		return MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, installableUnitId, installableUnitVersion);
566
	}
578
	}
567
579
Lines 1037-1043 Link Here
1037
	/*
1049
	/*
1038
	 * Compare 2 copyright objects and fail if they are not considered equal.
1050
	 * Compare 2 copyright objects and fail if they are not considered equal.
1039
	 */
1051
	 */
1040
	protected static void assertEquals(String message, Copyright cpyrt1, Copyright cpyrt2) {
1052
	protected static void assertEquals(String message, ICopyright cpyrt1, ICopyright cpyrt2) {
1041
		if (cpyrt1 == cpyrt2)
1053
		if (cpyrt1 == cpyrt2)
1042
			return;
1054
			return;
1043
		if (cpyrt1 == null || cpyrt2 == null) {
1055
		if (cpyrt1 == null || cpyrt2 == null) {
(-)src/org/eclipse/equinox/p2/tests/engine/InstructionParserTest.java (-3 / +4 lines)
Lines 1-5 Link Here
1
package org.eclipse.equinox.p2.tests.engine;
1
package org.eclipse.equinox.p2.tests.engine;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
4
3
import org.eclipse.equinox.internal.p2.engine.InstructionParser;
5
import org.eclipse.equinox.internal.p2.engine.InstructionParser;
4
6
5
import java.util.Map;
7
import java.util.Map;
Lines 9-25 Link Here
9
import org.eclipse.equinox.internal.p2.engine.ActionManager;
11
import org.eclipse.equinox.internal.p2.engine.ActionManager;
10
import org.eclipse.equinox.internal.provisional.p2.engine.*;
12
import org.eclipse.equinox.internal.provisional.p2.engine.*;
11
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
13
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
12
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointType;
13
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
14
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
14
import org.eclipse.equinox.internal.provisional.p2.core.Version;
15
import org.eclipse.equinox.internal.provisional.p2.core.Version;
15
16
16
public class InstructionParserTest extends AbstractProvisioningTest {
17
public class InstructionParserTest extends AbstractProvisioningTest {
17
18
18
	public static final TouchpointType TOUCHPOINT_TYPE = MetadataFactory.createTouchpointType("InstructionParserTestTouchpoint", new Version("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
19
	public static final ITouchpointType TOUCHPOINT_TYPE = MetadataFactory.createTouchpointType("InstructionParserTestTouchpoint", new Version("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
19
20
20
	public static class InstructionParserTestTouchpoint extends Touchpoint {
21
	public static class InstructionParserTestTouchpoint extends Touchpoint {
21
22
22
		public TouchpointType getTouchpointType() {
23
		public ITouchpointType getTouchpointType() {
23
			return TOUCHPOINT_TYPE;
24
			return TOUCHPOINT_TYPE;
24
		}
25
		}
25
26
(-)src/org/eclipse/equinox/p2/tests/engine/PhaseTest.java (-5 / +5 lines)
Lines 13-24 Link Here
13
import java.util.*;
13
import java.util.*;
14
import org.eclipse.core.runtime.*;
14
import org.eclipse.core.runtime.*;
15
import org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction;
15
import org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction;
16
import org.eclipse.equinox.internal.provisional.p2.core.Version;
16
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
18
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.p2.tests.TestActivator;
20
import org.eclipse.equinox.p2.tests.TestActivator;
20
import org.osgi.framework.ServiceReference;
21
import org.osgi.framework.ServiceReference;
21
import org.eclipse.equinox.internal.provisional.p2.core.Version;
22
22
23
/**
23
/**
24
 * Simple test of the engine API.
24
 * Simple test of the engine API.
Lines 82-89 Link Here
82
			if (parsedActions != null)
82
			if (parsedActions != null)
83
				return parsedActions;
83
				return parsedActions;
84
84
85
			TouchpointType type = unit.getTouchpointType();
85
			ITouchpointType type = unit.getTouchpointType();
86
			if (type == null || type == TouchpointType.NONE)
86
			if (type == null || ITouchpointType.NONE.equals(type))
87
				return null;
87
				return null;
88
88
89
			ProvisioningAction action = actionManager.getTouchpointQualifiedAction(phaseId, type);
89
			ProvisioningAction action = actionManager.getTouchpointQualifiedAction(phaseId, type);
Lines 251-258 Link Here
251
		Map instructions = new HashMap();
251
		Map instructions = new HashMap();
252
		instructions.put("test1", MetadataFactory.createTouchpointInstruction("test1.test()", null));
252
		instructions.put("test1", MetadataFactory.createTouchpointInstruction("test1.test()", null));
253
		instructions.put("test2", MetadataFactory.createTouchpointInstruction("test2.test()", null));
253
		instructions.put("test2", MetadataFactory.createTouchpointInstruction("test2.test()", null));
254
		TouchpointData touchpointData = MetadataFactory.createTouchpointData(instructions);
254
		ITouchpointData touchpointData = MetadataFactory.createTouchpointData(instructions);
255
		IInstallableUnit unit = createIU("test", new Version("1.0.0"), null, NO_REQUIRES, new ProvidedCapability[0], NO_PROPERTIES, TouchpointType.NONE, touchpointData, false);
255
		IInstallableUnit unit = createIU("test", new Version("1.0.0"), null, NO_REQUIRES, new IProvidedCapability[0], NO_PROPERTIES, ITouchpointType.NONE, touchpointData, false);
256
		IStatus status = engine.perform(profile, phaseSet, new InstallableUnitOperand[] {new InstallableUnitOperand(null, unit)}, null, new NullProgressMonitor());
256
		IStatus status = engine.perform(profile, phaseSet, new InstallableUnitOperand[] {new InstallableUnitOperand(null, unit)}, null, new NullProgressMonitor());
257
		if (!status.isOK()) {
257
		if (!status.isOK()) {
258
			fail(status.toString());
258
			fail(status.toString());
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java (-6 / +10 lines)
Lines 11-16 Link Here
11
11
12
import static org.easymock.EasyMock.*;
12
import static org.easymock.EasyMock.*;
13
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
15
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
17
14
import java.io.*;
18
import java.io.*;
15
import java.util.*;
19
import java.util.*;
16
import junit.framework.Assert;
20
import junit.framework.Assert;
Lines 55-68 Link Here
55
		return (String[]) result.toArray(new String[result.size()]);
59
		return (String[]) result.toArray(new String[result.size()]);
56
	}
60
	}
57
61
58
	protected void verifyProvidedCapability(ProvidedCapability[] prov, String namespace, String name, Version version) {
62
	protected void verifyProvidedCapability(IProvidedCapability[] prov, String namespace, String name, Version version) {
59
		for (int i = 0; i < prov.length; i++)
63
		for (int i = 0; i < prov.length; i++)
60
			if (prov[i].getName().equalsIgnoreCase(name) && prov[i].getNamespace().equalsIgnoreCase(namespace) && prov[i].getVersion().equals(version))
64
			if (prov[i].getName().equalsIgnoreCase(name) && prov[i].getNamespace().equalsIgnoreCase(namespace) && prov[i].getVersion().equals(version))
61
				return; // pass
65
				return; // pass
62
		Assert.fail("Missing ProvidedCapability: " + name + version.toString()); //$NON-NLS-1$
66
		Assert.fail("Missing ProvidedCapability: " + name + version.toString()); //$NON-NLS-1$
63
	}
67
	}
64
68
65
	protected void verifyRequiredCapability(RequiredCapability[] required, String namespace, String name, VersionRange range) {
69
	protected void verifyRequiredCapability(IRequiredCapability[] required, String namespace, String name, VersionRange range) {
66
		for (int i = 0; i < required.length; i++)
70
		for (int i = 0; i < required.length; i++)
67
			if (required[i].getName().equalsIgnoreCase(name) && required[i].getNamespace().equalsIgnoreCase(namespace) && required[i].getRange().equals(range))
71
			if (required[i].getName().equalsIgnoreCase(name) && required[i].getNamespace().equalsIgnoreCase(namespace) && required[i].getRange().equals(range))
68
				return;
72
				return;
Lines 104-121 Link Here
104
		return map;
108
		return map;
105
	}
109
	}
106
110
107
	protected void contains(ProvidedCapability[] capabilities, String namespace, String name, Version version) {
111
	protected void contains(IProvidedCapability[] capabilities, String namespace, String name, Version version) {
108
		for (int i = 0; i < capabilities.length; i++) {
112
		for (int i = 0; i < capabilities.length; i++) {
109
			ProvidedCapability capability = capabilities[i];
113
			IProvidedCapability capability = capabilities[i];
110
			if (capability.getNamespace().equals(namespace) && capability.getName().equals(name) && capability.getVersion().equals(version))
114
			if (capability.getNamespace().equals(namespace) && capability.getName().equals(name) && capability.getVersion().equals(version))
111
				return;
115
				return;
112
		}
116
		}
113
		fail();
117
		fail();
114
	}
118
	}
115
119
116
	protected void contains(RequiredCapability[] capabilities, String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple) {
120
	protected void contains(IRequiredCapability[] capabilities, String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple) {
117
		for (int i = 0; i < capabilities.length; i++) {
121
		for (int i = 0; i < capabilities.length; i++) {
118
			RequiredCapability capability = capabilities[i];
122
			IRequiredCapability capability = capabilities[i];
119
			if (filter == null) {
123
			if (filter == null) {
120
				if (capability.getFilter() != null)
124
				if (capability.getFilter() != null)
121
					continue;
125
					continue;
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java (-3 / +4 lines)
Lines 12-23 Link Here
12
12
13
import static org.easymock.EasyMock.expect;
13
import static org.easymock.EasyMock.expect;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
15
import java.util.ArrayList;
17
import java.util.ArrayList;
16
import java.util.Collection;
18
import java.util.Collection;
17
import org.eclipse.core.runtime.NullProgressMonitor;
19
import org.eclipse.core.runtime.NullProgressMonitor;
18
import org.eclipse.core.runtime.Status;
20
import org.eclipse.core.runtime.Status;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository;
22
import org.eclipse.equinox.internal.provisional.p2.query.Query;
23
import org.eclipse.equinox.internal.provisional.p2.query.Query;
23
import org.eclipse.equinox.p2.publisher.IPublisherResult;
24
import org.eclipse.equinox.p2.publisher.IPublisherResult;
Lines 270-276 Link Here
270
		IInstallableUnit iu = (IInstallableUnit) ius.get(0);
271
		IInstallableUnit iu = (IInstallableUnit) ius.get(0);
271
		assertTrue(iu != null);
272
		assertTrue(iu != null);
272
		assertTrue(iu.getVersion().equals(versionArg));
273
		assertTrue(iu.getVersion().equals(versionArg));
273
		RequiredCapability[] required = iu.getRequiredCapabilities();
274
		IRequiredCapability[] required = iu.getRequiredCapabilities();
274
		if ((testSpec & EMPTY) > 0)
275
		if ((testSpec & EMPTY) > 0)
275
			assertEquals(required.length, 0);
276
			assertEquals(required.length, 0);
276
		String confirmedIUs = ""; //$NON-NLS-1$
277
		String confirmedIUs = ""; //$NON-NLS-1$
Lines 296-302 Link Here
296
			debug("Confirmed \t\t  Empty"); //$NON-NLS-1$
297
			debug("Confirmed \t\t  Empty"); //$NON-NLS-1$
297
	}
298
	}
298
299
299
	private boolean contains(RequiredCapability[] required, String iu) {
300
	private boolean contains(IRequiredCapability[] required, String iu) {
300
		for (int i = 0; i < required.length; i++)
301
		for (int i = 0; i < required.length; i++)
301
			if (required[i].getName().equalsIgnoreCase(iu))
302
			if (required[i].getName().equalsIgnoreCase(iu))
302
				return true;
303
				return true;
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java (-8 / +16 lines)
Lines 12-17 Link Here
12
12
13
import static org.easymock.EasyMock.*;
13
import static org.easymock.EasyMock.*;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
20
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
22
15
import java.io.File;
23
import java.io.File;
16
import java.io.FileInputStream;
24
import java.io.FileInputStream;
17
import java.util.*;
25
import java.util.*;
Lines 124-145 Link Here
124
		assertEquals("1.1", bundle1IU.getVersion(), BUNDLE1_VERSION);
132
		assertEquals("1.1", bundle1IU.getVersion(), BUNDLE1_VERSION);
125
133
126
		// check required capabilities
134
		// check required capabilities
127
		RequiredCapability[] requiredCapability = bundle1IU.getRequiredCapabilities();
135
		IRequiredCapability[] requiredCapability = bundle1IU.getRequiredCapabilities();
128
		verifyRequiredCapability(requiredCapability, TEST1_IUD_NAMESPACE, TEST1_IUD_NAME, TEST1_IUD_VERSION_RANGE);
136
		verifyRequiredCapability(requiredCapability, TEST1_IUD_NAMESPACE, TEST1_IUD_NAME, TEST1_IUD_VERSION_RANGE);
129
		assertEquals("2.0", 1, requiredCapability.length);
137
		assertEquals("2.0", 1, requiredCapability.length);
130
138
131
		// check provided capabilities
139
		// check provided capabilities
132
		ProvidedCapability[] providedCapabilities = bundle1IU.getProvidedCapabilities();
140
		IProvidedCapability[] providedCapabilities = bundle1IU.getProvidedCapabilities();
133
		verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
141
		verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
134
		verifyProvidedCapability(providedCapabilities, OSGI, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
142
		verifyProvidedCapability(providedCapabilities, OSGI, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
135
		verifyProvidedCapability(providedCapabilities, TEST1_PROVZ_NAMESPACE, TEST1_PROVZ_NAME, TEST2_PROVZ_VERSION);
143
		verifyProvidedCapability(providedCapabilities, TEST1_PROVZ_NAMESPACE, TEST1_PROVZ_NAME, TEST2_PROVZ_VERSION);
136
		verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "source", new Version("1.0.0"));//$NON-NLS-1$//$NON-NLS-2$
144
		verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "source", new Version("1.0.0"));//$NON-NLS-1$//$NON-NLS-2$
137
		assertEquals("2.1", 4, providedCapabilities.length);
145
		assertEquals("2.1", 4, providedCapabilities.length);
138
146
139
		TouchpointData[] data = bundle1IU.getTouchpointData();
147
		ITouchpointData[] data = bundle1IU.getTouchpointData();
140
		boolean found = false;
148
		boolean found = false;
141
		for (int i = 0; i < data.length; i++) {
149
		for (int i = 0; i < data.length; i++) {
142
			TouchpointInstruction configure = data[i].getInstruction("configure");
150
			ITouchpointInstruction configure = data[i].getInstruction("configure");
143
			if (configure == null)
151
			if (configure == null)
144
				continue;
152
				continue;
145
			String body = configure.getBody();
153
			String body = configure.getBody();
Lines 159-172 Link Here
159
		assertEquals(bundle2IU.getVersion(), BUNDLE2_VERSION);
167
		assertEquals(bundle2IU.getVersion(), BUNDLE2_VERSION);
160
168
161
		// check required capabilities
169
		// check required capabilities
162
		RequiredCapability[] requiredCapabilities = bundle2IU.getRequiredCapabilities();
170
		IRequiredCapability[] requiredCapabilities = bundle2IU.getRequiredCapabilities();
163
		verifyRequiredCapability(requiredCapabilities, TEST2_IUA_NAMESPACE, TEST2_REQA_NAME, TEST2_IUA_VERSION_RANGE);
171
		verifyRequiredCapability(requiredCapabilities, TEST2_IUA_NAMESPACE, TEST2_REQA_NAME, TEST2_IUA_VERSION_RANGE);
164
		verifyRequiredCapability(requiredCapabilities, TEST2_IUB_NAMESPACE, TEST2_REQB_NAME, TEST2_IUB_VERSION_RANGE);
172
		verifyRequiredCapability(requiredCapabilities, TEST2_IUB_NAMESPACE, TEST2_REQB_NAME, TEST2_IUB_VERSION_RANGE);
165
		verifyRequiredCapability(requiredCapabilities, TEST2_IUC_NAMESPACE, TEST2_REQC_NAME, TEST2_IUC_VERSION_RANGE);
173
		verifyRequiredCapability(requiredCapabilities, TEST2_IUC_NAMESPACE, TEST2_REQC_NAME, TEST2_IUC_VERSION_RANGE);
166
		assertTrue(requiredCapabilities.length == 3 /*number of tested elements*/);
174
		assertTrue(requiredCapabilities.length == 3 /*number of tested elements*/);
167
175
168
		// check provided capabilities
176
		// check provided capabilities
169
		ProvidedCapability[] providedCapabilities = bundle2IU.getProvidedCapabilities();
177
		IProvidedCapability[] providedCapabilities = bundle2IU.getProvidedCapabilities();
170
		verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST2_PROVBUNDLE_NAME, PROVBUNDLE2_VERSION);
178
		verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST2_PROVBUNDLE_NAME, PROVBUNDLE2_VERSION);
171
		verifyProvidedCapability(providedCapabilities, OSGI, TEST2_PROVBUNDLE_NAME, BUNDLE2_VERSION);
179
		verifyProvidedCapability(providedCapabilities, OSGI, TEST2_PROVBUNDLE_NAME, BUNDLE2_VERSION);
172
		verifyProvidedCapability(providedCapabilities, TEST2_PROVZ_NAMESPACE, TEST2_PROVZ_NAME, TEST2_PROVZ_VERSION);
180
		verifyProvidedCapability(providedCapabilities, TEST2_PROVZ_NAMESPACE, TEST2_PROVZ_NAME, TEST2_PROVZ_VERSION);
Lines 180-189 Link Here
180
		assertTrue(prop.get("org.eclipse.equinox.p2.name").toString().equalsIgnoreCase("%bundleName"));//$NON-NLS-1$//$NON-NLS-2$
188
		assertTrue(prop.get("org.eclipse.equinox.p2.name").toString().equalsIgnoreCase("%bundleName"));//$NON-NLS-1$//$NON-NLS-2$
181
		assertTrue(prop.get("org.eclipse.equinox.p2.provider").toString().equalsIgnoreCase("%providerName"));//$NON-NLS-1$//$NON-NLS-2$
189
		assertTrue(prop.get("org.eclipse.equinox.p2.provider").toString().equalsIgnoreCase("%providerName"));//$NON-NLS-1$//$NON-NLS-2$
182
190
183
		TouchpointData[] data = bundle2IU.getTouchpointData();
191
		ITouchpointData[] data = bundle2IU.getTouchpointData();
184
		boolean found = false;
192
		boolean found = false;
185
		for (int i = 0; i < data.length; i++) {
193
		for (int i = 0; i < data.length; i++) {
186
			TouchpointInstruction configure = data[i].getInstruction("configure");
194
			ITouchpointInstruction configure = data[i].getInstruction("configure");
187
			if (configure == null)
195
			if (configure == null)
188
				continue;
196
				continue;
189
			String body = configure.getBody();
197
			String body = configure.getBody();
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java (-2 / +3 lines)
Lines 12-23 Link Here
12
12
13
import static org.easymock.EasyMock.*;
13
import static org.easymock.EasyMock.*;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
15
import java.util.ArrayList;
17
import java.util.ArrayList;
16
import java.util.Map;
18
import java.util.Map;
17
import org.eclipse.core.runtime.NullProgressMonitor;
19
import org.eclipse.core.runtime.NullProgressMonitor;
18
import org.eclipse.equinox.internal.p2.metadata.InstallableUnitFragment;
20
import org.eclipse.equinox.internal.p2.metadata.InstallableUnitFragment;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.ProvidedCapability;
21
import org.eclipse.equinox.p2.publisher.IPublisherResult;
22
import org.eclipse.equinox.p2.publisher.IPublisherResult;
22
import org.eclipse.equinox.p2.publisher.PublisherResult;
23
import org.eclipse.equinox.p2.publisher.PublisherResult;
23
import org.eclipse.equinox.p2.publisher.actions.IVersionAdvice;
24
import org.eclipse.equinox.p2.publisher.actions.IVersionAdvice;
Lines 71-77 Link Here
71
				verifyRequiredCapability(iu.getRequiredCapabilities(), PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", new VersionRange(new Version("1.0.0"), true, new Version("2.0.0"), false)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
72
				verifyRequiredCapability(iu.getRequiredCapabilities(), PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", new VersionRange(new Version("1.0.0"), true, new Version("2.0.0"), false)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
72
				assertTrue(iu.getRequiredCapabilities().length == 2);
73
				assertTrue(iu.getRequiredCapabilities().length == 2);
73
74
74
				ProvidedCapability[] cap = iu.getProvidedCapabilities();
75
				IProvidedCapability[] cap = iu.getProvidedCapabilities();
75
				verifyProvidedCapability(cap, IInstallableUnit.NAMESPACE_IU_ID, flavorArg + "org.eclipse.equinox.launcher", Version.emptyVersion); //$NON-NLS-1$ 
76
				verifyProvidedCapability(cap, IInstallableUnit.NAMESPACE_IU_ID, flavorArg + "org.eclipse.equinox.launcher", Version.emptyVersion); //$NON-NLS-1$ 
76
				verifyProvidedCapability(cap, "org.eclipse.equinox.p2.flavor", flavorArg, new Version("1.0.0")); //$NON-NLS-1$//$NON-NLS-2$ 
77
				verifyProvidedCapability(cap, "org.eclipse.equinox.p2.flavor", flavorArg, new Version("1.0.0")); //$NON-NLS-1$//$NON-NLS-2$ 
77
				assertTrue(cap.length == 2);
78
				assertTrue(cap.length == 2);
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionWithAdviceFileTest.java (-2 / +3 lines)
Lines 10-20 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.tests.publisher.actions;
11
package org.eclipse.equinox.p2.tests.publisher.actions;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
13
import java.io.File;
15
import java.io.File;
14
import java.io.IOException;
16
import java.io.IOException;
15
import java.util.Collection;
17
import java.util.Collection;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointData;
18
import org.eclipse.equinox.p2.publisher.IPublisherResult;
19
import org.eclipse.equinox.p2.publisher.IPublisherResult;
19
import org.eclipse.equinox.p2.publisher.PublisherInfo;
20
import org.eclipse.equinox.p2.publisher.PublisherInfo;
20
import org.eclipse.equinox.p2.publisher.eclipse.ProductAction;
21
import org.eclipse.equinox.p2.publisher.eclipse.ProductAction;
Lines 45-51 Link Here
45
		Collection productIUs = publisherResult.getIUs("productWithAdvice.product", IPublisherResult.NON_ROOT);
46
		Collection productIUs = publisherResult.getIUs("productWithAdvice.product", IPublisherResult.NON_ROOT);
46
		assertEquals("1.0", 1, productIUs.size());
47
		assertEquals("1.0", 1, productIUs.size());
47
		IInstallableUnit product = (IInstallableUnit) productIUs.iterator().next();
48
		IInstallableUnit product = (IInstallableUnit) productIUs.iterator().next();
48
		TouchpointData[] data = product.getTouchpointData();
49
		ITouchpointData[] data = product.getTouchpointData();
49
		assertEquals("1.1", 1, data.length);
50
		assertEquals("1.1", 1, data.length);
50
		String configure = data[0].getInstruction("configure").getBody();
51
		String configure = data[0].getInstruction("configure").getBody();
51
		assertEquals("1.2", "addRepository(type:0,location:http${#58}//download.eclipse.org/releases/fred);addRepository(type:1,location:http${#58}//download.eclipse.org/releases/fred);", configure);
52
		assertEquals("1.2", "addRepository(type:0,location:http${#58}//download.eclipse.org/releases/fred);addRepository(type:1,location:http${#58}//download.eclipse.org/releases/fred);", configure);
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java (-8 / +16 lines)
Lines 12-17 Link Here
12
12
13
import static org.easymock.EasyMock.*;
13
import static org.easymock.EasyMock.*;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
20
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
22
15
import java.io.File;
23
import java.io.File;
16
import java.io.IOException;
24
import java.io.IOException;
17
import java.util.*;
25
import java.util.*;
Lines 88-101 Link Here
88
		assertTrue(foo.getTouchpointType().getVersion().equals(fooVersion));
96
		assertTrue(foo.getTouchpointType().getVersion().equals(fooVersion));
89
97
90
		//zipped=true
98
		//zipped=true
91
		TouchpointData[] tpData = foo.getTouchpointData();
99
		ITouchpointData[] tpData = foo.getTouchpointData();
92
		String fooValue = ((TouchpointInstruction) tpData[0].getInstructions().get("zipped")).getBody(); //$NON-NLS-1$
100
		String fooValue = ((ITouchpointInstruction) tpData[0].getInstructions().get("zipped")).getBody(); //$NON-NLS-1$
93
		assertTrue(fooValue.equalsIgnoreCase("true")); //$NON-NLS-1$
101
		assertTrue(fooValue.equalsIgnoreCase("true")); //$NON-NLS-1$
94
102
95
		RequiredCapability[] fooRequiredCapabilities = foo.getRequiredCapabilities();
103
		IRequiredCapability[] fooRequiredCapabilities = foo.getRequiredCapabilities();
96
		assertTrue(fooRequiredCapabilities.length == 0);
104
		assertTrue(fooRequiredCapabilities.length == 0);
97
105
98
		ProvidedCapability[] fooProvidedCapabilities = foo.getProvidedCapabilities();
106
		IProvidedCapability[] fooProvidedCapabilities = foo.getProvidedCapabilities();
99
		contains(fooProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "foo.feature.jar", fooVersion); //$NON-NLS-1$
107
		contains(fooProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "foo.feature.jar", fooVersion); //$NON-NLS-1$
100
		contains(fooProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$ 
108
		contains(fooProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$ 
101
		contains(fooProvidedCapabilities, "org.eclipse.update.feature", FOO, fooVersion); //$NON-NLS-1$
109
		contains(fooProvidedCapabilities, "org.eclipse.update.feature", FOO, fooVersion); //$NON-NLS-1$
Lines 107-113 Link Here
107
		IInstallableUnit fooGroup = (IInstallableUnit) fooIUs.get(0);
115
		IInstallableUnit fooGroup = (IInstallableUnit) fooIUs.get(0);
108
		tpData = fooGroup.getTouchpointData();
116
		tpData = fooGroup.getTouchpointData();
109
		assertEquals(1, tpData.length);
117
		assertEquals(1, tpData.length);
110
		TouchpointInstruction instruction = tpData[0].getInstruction("install");
118
		ITouchpointInstruction instruction = tpData[0].getInstruction("install");
111
		assertNotNull(instruction);
119
		assertNotNull(instruction);
112
		assertEquals("ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);", instruction.getBody());
120
		assertEquals("ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);", instruction.getBody());
113
121
Lines 126-143 Link Here
126
		assertTrue(bar.isSingleton());
134
		assertTrue(bar.isSingleton());
127
135
128
		//check zipped=true in touchpointData
136
		//check zipped=true in touchpointData
129
		String barValue = ((TouchpointInstruction) bar.getTouchpointData()[0].getInstructions().get("zipped")).getBody(); //$NON-NLS-1$
137
		String barValue = ((ITouchpointInstruction) bar.getTouchpointData()[0].getInstructions().get("zipped")).getBody(); //$NON-NLS-1$
130
		assertTrue(barValue.equalsIgnoreCase("true")); //$NON-NLS-1$
138
		assertTrue(barValue.equalsIgnoreCase("true")); //$NON-NLS-1$
131
139
132
		//check touchpointType
140
		//check touchpointType
133
		assertTrue(bar.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.osgi")); //$NON-NLS-1$
141
		assertTrue(bar.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.osgi")); //$NON-NLS-1$
134
		assertTrue(bar.getTouchpointType().getVersion().equals(fooVersion));
142
		assertTrue(bar.getTouchpointType().getVersion().equals(fooVersion));
135
		//String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy)
143
		//String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy)
136
		RequiredCapability[] barRequiredCapabilities = bar.getRequiredCapabilities();
144
		IRequiredCapability[] barRequiredCapabilities = bar.getRequiredCapabilities();
137
		contains(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar_root", new VersionRange(barVersion, true, barVersion, true), "(org.eclipse.update.install.features=true)", false /*multiple*/, false /*optional*/); //$NON-NLS-1$//$NON-NLS-2$ 
145
		contains(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar_root", new VersionRange(barVersion, true, barVersion, true), "(org.eclipse.update.install.features=true)", false /*multiple*/, false /*optional*/); //$NON-NLS-1$//$NON-NLS-2$ 
138
		assertTrue(barRequiredCapabilities.length == 1);
146
		assertTrue(barRequiredCapabilities.length == 1);
139
147
140
		ProvidedCapability[] barProvidedCapabilities = bar.getProvidedCapabilities();
148
		IProvidedCapability[] barProvidedCapabilities = bar.getProvidedCapabilities();
141
		contains(barProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", barVersion); //$NON-NLS-1$ 
149
		contains(barProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", barVersion); //$NON-NLS-1$ 
142
		contains(barProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$ 
150
		contains(barProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$ 
143
		contains(barProvidedCapabilities, "org.eclipse.update.feature", BAR, barVersion); //$NON-NLS-1$
151
		contains(barProvidedCapabilities, "org.eclipse.update.feature", BAR, barVersion); //$NON-NLS-1$
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java (-6 / +10 lines)
Lines 12-17 Link Here
12
12
13
import static org.easymock.EasyMock.expect;
13
import static org.easymock.EasyMock.expect;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
18
15
import java.io.File;
19
import java.io.File;
16
import java.util.ArrayList;
20
import java.util.ArrayList;
17
import org.eclipse.core.runtime.NullProgressMonitor;
21
import org.eclipse.core.runtime.NullProgressMonitor;
Lines 92-101 Link Here
92
			IInstallableUnit possibleEclipse = (IInstallableUnit) iuList.get(i);
96
			IInstallableUnit possibleEclipse = (IInstallableUnit) iuList.get(i);
93
			if (possibleEclipse.getId().equals(flavorArg + idBase + ".executable." + configSpec)) {//$NON-NLS-1$ 
97
			if (possibleEclipse.getId().equals(flavorArg + idBase + ".executable." + configSpec)) {//$NON-NLS-1$ 
94
				IInstallableUnitFragment fragment = (IInstallableUnitFragment) iuList.get(i);
98
				IInstallableUnitFragment fragment = (IInstallableUnitFragment) iuList.get(i);
95
				ProvidedCapability[] providedCapability = fragment.getProvidedCapabilities();
99
				IProvidedCapability[] providedCapability = fragment.getProvidedCapabilities();
96
				verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, flavorArg + idBase + ".executable." + configSpec, version); //$NON-NLS-1$ 
100
				verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, flavorArg + idBase + ".executable." + configSpec, version); //$NON-NLS-1$ 
97
				assertTrue(providedCapability.length == 1);
101
				assertTrue(providedCapability.length == 1);
98
				RequiredCapability[] requiredCapability = fragment.getRequiredCapabilities();
102
				IRequiredCapability[] requiredCapability = fragment.getRequiredCapabilities();
99
				verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + configSpec, new VersionRange(version, true, version, true)); //$NON-NLS-1$ 
103
				verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + configSpec, new VersionRange(version, true, version, true)); //$NON-NLS-1$ 
100
				assertTrue(requiredCapability.length == 1);
104
				assertTrue(requiredCapability.length == 1);
101
				assertTrue(fragment.getFilter().equals("(& (osgi.ws=" + ws + ")(osgi.os=" + os + ")(osgi.arch=" + arch + "))")); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
105
				assertTrue(fragment.getFilter().equals("(& (osgi.ws=" + ws + ")(osgi.os=" + os + ")(osgi.arch=" + arch + "))")); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
Lines 112-121 Link Here
112
			IInstallableUnit possibleEclipse = (IInstallableUnit) iuList.get(i);
116
			IInstallableUnit possibleEclipse = (IInstallableUnit) iuList.get(i);
113
			if (possibleEclipse.getId().equals((idBase + ".executable." + configSpec + ".eclipse"))) { //$NON-NLS-1$//$NON-NLS-2$
117
			if (possibleEclipse.getId().equals((idBase + ".executable." + configSpec + ".eclipse"))) { //$NON-NLS-1$//$NON-NLS-2$
114
				assertTrue(possibleEclipse.getVersion().equals(version));
118
				assertTrue(possibleEclipse.getVersion().equals(version));
115
				ProvidedCapability[] providedCapability = possibleEclipse.getProvidedCapabilities();
119
				IProvidedCapability[] providedCapability = possibleEclipse.getProvidedCapabilities();
116
				verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + configSpec + ".eclipse", version); //$NON-NLS-1$ //$NON-NLS-2$ 
120
				verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + configSpec + ".eclipse", version); //$NON-NLS-1$ //$NON-NLS-2$ 
117
				assertTrue(providedCapability.length == 1);
121
				assertTrue(providedCapability.length == 1);
118
				RequiredCapability[] req = possibleEclipse.getRequiredCapabilities();
122
				IRequiredCapability[] req = possibleEclipse.getRequiredCapabilities();
119
				assertTrue(req.length == 0);
123
				assertTrue(req.length == 0);
120
				return;//pass
124
				return;//pass
121
			}
125
			}
Lines 138-149 Link Here
138
				assertTrue(eKey.getClassifier().equals("binary")); //$NON-NLS-1$
142
				assertTrue(eKey.getClassifier().equals("binary")); //$NON-NLS-1$
139
				assertTrue(eKey.getId().equals(idBase + ".executable." + configSpec)); //$NON-NLS-1$
143
				assertTrue(eKey.getId().equals(idBase + ".executable." + configSpec)); //$NON-NLS-1$
140
				assertTrue(eKey.getVersion().equals(version));
144
				assertTrue(eKey.getVersion().equals(version));
141
				ProvidedCapability[] providedCapabilities = possibleExec.getProvidedCapabilities();
145
				IProvidedCapability[] providedCapabilities = possibleExec.getProvidedCapabilities();
142
				verifyProvidedCapability(providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + configSpec, version); //$NON-NLS-1$ 
146
				verifyProvidedCapability(providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + configSpec, version); //$NON-NLS-1$ 
143
				verifyProvidedCapability(providedCapabilities, flavorArg + idBase, idBase + ".executable", version); //$NON-NLS-1$
147
				verifyProvidedCapability(providedCapabilities, flavorArg + idBase, idBase + ".executable", version); //$NON-NLS-1$
144
				assertTrue(providedCapabilities.length == 2);
148
				assertTrue(providedCapabilities.length == 2);
145
149
146
				RequiredCapability[] requiredCapability = possibleExec.getRequiredCapabilities();
150
				IRequiredCapability[] requiredCapability = possibleExec.getRequiredCapabilities();
147
				verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.launcher." + (idBase.equals("mac") || idBase.equals("macCocoa") ? configSpec.substring(0, configSpec.lastIndexOf(".")) : configSpec), VersionRange.emptyRange); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
151
				verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.launcher." + (idBase.equals("mac") || idBase.equals("macCocoa") ? configSpec.substring(0, configSpec.lastIndexOf(".")) : configSpec), VersionRange.emptyRange); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
148
				assertTrue(requiredCapability.length == 1);
152
				assertTrue(requiredCapability.length == 1);
149
				return;//pass
153
				return;//pass
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java (-3 / +7 lines)
Lines 12-17 Link Here
12
12
13
import static org.easymock.EasyMock.expect;
13
import static org.easymock.EasyMock.expect;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
18
15
import java.io.File;
19
import java.io.File;
16
import java.util.ArrayList;
20
import java.util.ArrayList;
17
import org.eclipse.core.runtime.NullProgressMonitor;
21
import org.eclipse.core.runtime.NullProgressMonitor;
Lines 57-69 Link Here
57
		assertTrue(iu.getId().equalsIgnoreCase(flavor + id + ".configuration")); //$NON-NLS-1$
61
		assertTrue(iu.getId().equalsIgnoreCase(flavor + id + ".configuration")); //$NON-NLS-1$
58
62
59
		//verify ProvidedCapabilities
63
		//verify ProvidedCapabilities
60
		ProvidedCapability[] providedCapabilities = iu.getProvidedCapabilities();
64
		IProvidedCapability[] providedCapabilities = iu.getProvidedCapabilities();
61
		verifyProvidedCapability(providedCapabilities, "org.eclipse.equinox.p2.iu", iu.getId(), version); //$NON-NLS-1$
65
		verifyProvidedCapability(providedCapabilities, "org.eclipse.equinox.p2.iu", iu.getId(), version); //$NON-NLS-1$
62
		//		verifyProvidedCapability(providedCapabilities, flavor + id, id + ".config", version); //$NON-NLS-1$
66
		//		verifyProvidedCapability(providedCapabilities, flavor + id, id + ".config", version); //$NON-NLS-1$
63
		assertTrue(providedCapabilities.length == 1);
67
		assertTrue(providedCapabilities.length == 1);
64
68
65
		//verify RequiredCapabilities
69
		//verify RequiredCapabilities
66
		RequiredCapability[] requiredCapability = iu.getRequiredCapabilities();
70
		IRequiredCapability[] requiredCapability = iu.getRequiredCapabilities();
67
		verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + ".config." + configSpec, new VersionRange(version, true, version, true)); //$NON-NLS-1$
71
		verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + ".config." + configSpec, new VersionRange(version, true, version, true)); //$NON-NLS-1$
68
		verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + ".ini." + configSpec, new VersionRange(version, true, version, true)); //$NON-NLS-1$
72
		verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + ".ini." + configSpec, new VersionRange(version, true, version, true)); //$NON-NLS-1$
69
		assertTrue(requiredCapability.length == 2);
73
		assertTrue(requiredCapability.length == 2);
Lines 83-89 Link Here
83
				assertTrue(iu.getVersion().equals(version));
87
				assertTrue(iu.getVersion().equals(version));
84
				assertTrue(iu.getProperty("org.eclipse.equinox.p2.type.fragment").equals("true")); //$NON-NLS-1$//$NON-NLS-2$
88
				assertTrue(iu.getProperty("org.eclipse.equinox.p2.type.fragment").equals("true")); //$NON-NLS-1$//$NON-NLS-2$
85
				assertFalse(iu.isSingleton());
89
				assertFalse(iu.isSingleton());
86
				ProvidedCapability[] providedCapabilities = iu.getProvidedCapabilities();
90
				IProvidedCapability[] providedCapabilities = iu.getProvidedCapabilities();
87
				verifyProvidedCapability(providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + "." + cuType + "." + configSpec, version); //$NON-NLS-1$//$NON-NLS-2$
91
				verifyProvidedCapability(providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + "." + cuType + "." + configSpec, version); //$NON-NLS-1$//$NON-NLS-2$
88
				verifyProvidedCapability(providedCapabilities, flavor + id, id + "." + cuType, version); //$NON-NLS-1$
92
				verifyProvidedCapability(providedCapabilities, flavor + id, id + "." + cuType, version); //$NON-NLS-1$
89
				assertTrue(providedCapabilities.length == 2);
93
				assertTrue(providedCapabilities.length == 2);
(-)src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java (-5 / +11 lines)
Lines 12-17 Link Here
12
12
13
import static org.easymock.EasyMock.expect;
13
import static org.easymock.EasyMock.expect;
14
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
20
15
import java.io.*;
21
import java.io.*;
16
import java.util.*;
22
import java.util.*;
17
import java.util.zip.ZipInputStream;
23
import java.util.zip.ZipInputStream;
Lines 82-88 Link Here
82
		assertTrue(foo.getTouchpointType().getVersion().equals(new Version("1.0.0"))); //$NON-NLS-1$
88
		assertTrue(foo.getTouchpointType().getVersion().equals(new Version("1.0.0"))); //$NON-NLS-1$
83
89
84
		// check provided capabilities
90
		// check provided capabilities
85
		ProvidedCapability[] fooProvidedCapabilities = foo.getProvidedCapabilities();
91
		IProvidedCapability[] fooProvidedCapabilities = foo.getProvidedCapabilities();
86
		assertTrue(fooProvidedCapabilities.length == numProvidedCapabilities);
92
		assertTrue(fooProvidedCapabilities.length == numProvidedCapabilities);
87
93
88
		ArrayList barIUs = new ArrayList(publisherResult.getIUs("config.a.jre", IPublisherResult.ROOT)); //$NON-NLS-1$
94
		ArrayList barIUs = new ArrayList(publisherResult.getIUs("config.a.jre", IPublisherResult.ROOT)); //$NON-NLS-1$
Lines 90-103 Link Here
90
		IInstallableUnit bar = (IInstallableUnit) barIUs.get(0);
96
		IInstallableUnit bar = (IInstallableUnit) barIUs.get(0);
91
97
92
		Map instructions = bar.getTouchpointData()[0].getInstructions();
98
		Map instructions = bar.getTouchpointData()[0].getInstructions();
93
		assertTrue(((TouchpointInstruction) instructions.get("install")).getBody().equals("unzip(source:@artifact, target:${installFolder});")); //$NON-NLS-1$//$NON-NLS-2$
99
		assertTrue(((ITouchpointInstruction) instructions.get("install")).getBody().equals("unzip(source:@artifact, target:${installFolder});")); //$NON-NLS-1$//$NON-NLS-2$
94
		assertTrue(((TouchpointInstruction) instructions.get("uninstall")).getBody().equals("cleanupzip(source:@artifact, target:${installFolder});")); //$NON-NLS-1$ //$NON-NLS-2$
100
		assertTrue(((ITouchpointInstruction) instructions.get("uninstall")).getBody().equals("cleanupzip(source:@artifact, target:${installFolder});")); //$NON-NLS-1$ //$NON-NLS-2$
95
101
96
		RequiredCapability[] requiredCapability = bar.getRequiredCapabilities();
102
		IRequiredCapability[] requiredCapability = bar.getRequiredCapabilities();
97
		verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, "a.jre", new VersionRange(JREVersion, true, new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE), true)); //$NON-NLS-1$ 
103
		verifyRequiredCapability(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, "a.jre", new VersionRange(JREVersion, true, new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE), true)); //$NON-NLS-1$ 
98
		assertTrue(requiredCapability.length == 1);
104
		assertTrue(requiredCapability.length == 1);
99
105
100
		ProvidedCapability[] providedCapability = bar.getProvidedCapabilities();
106
		IProvidedCapability[] providedCapability = bar.getProvidedCapabilities();
101
		verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, "config.a.jre", JREVersion); //$NON-NLS-1$ 
107
		verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, "config.a.jre", JREVersion); //$NON-NLS-1$ 
102
		assertTrue(providedCapability.length == 1);
108
		assertTrue(providedCapability.length == 1);
103
109
(-)src/org/eclipse/equinox/p2/tests/updatesite/UpdateSiteTest.java (-3 / +9 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.updatesite;
11
package org.eclipse.equinox.p2.tests.updatesite;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
13
import java.io.ByteArrayOutputStream;
19
import java.io.ByteArrayOutputStream;
14
import java.io.File;
20
import java.io.File;
15
import java.net.URI;
21
import java.net.URI;
Lines 424-430 Link Here
424
		Collector result = metadataRepo.query(query, new Collector(), null);
430
		Collector result = metadataRepo.query(query, new Collector(), null);
425
		assertEquals("1.0", 1, result.size());
431
		assertEquals("1.0", 1, result.size());
426
		IInstallableUnit featureIU = (IInstallableUnit) result.iterator().next();
432
		IInstallableUnit featureIU = (IInstallableUnit) result.iterator().next();
427
		RequiredCapability[] required = featureIU.getRequiredCapabilities();
433
		IRequiredCapability[] required = featureIU.getRequiredCapabilities();
428
		for (int i = 0; i < required.length; i++) {
434
		for (int i = 0; i < required.length; i++) {
429
			if (required[i].getName().equals("org.eclipse.ui.ide")) {
435
			if (required[i].getName().equals("org.eclipse.ui.ide")) {
430
				assertEquals("2.0", VersionRange.emptyRange, required[i].getRange());
436
				assertEquals("2.0", VersionRange.emptyRange, required[i].getRange());
Lines 471-481 Link Here
471
		Collector result = repository.query(new InstallableUnitQuery("test.feature.feature.jar"), new Collector(), getMonitor());
477
		Collector result = repository.query(new InstallableUnitQuery("test.feature.feature.jar"), new Collector(), getMonitor());
472
		assertTrue("1.0", !result.isEmpty());
478
		assertTrue("1.0", !result.isEmpty());
473
		IInstallableUnit unit = (IInstallableUnit) result.iterator().next();
479
		IInstallableUnit unit = (IInstallableUnit) result.iterator().next();
474
		TouchpointData[] data = unit.getTouchpointData();
480
		ITouchpointData[] data = unit.getTouchpointData();
475
		assertEquals("1.1", 1, data.length);
481
		assertEquals("1.1", 1, data.length);
476
		Map instructions = data[0].getInstructions();
482
		Map instructions = data[0].getInstructions();
477
		assertEquals("1.2", 1, instructions.size());
483
		assertEquals("1.2", 1, instructions.size());
478
		assertEquals("1.3", "true", ((TouchpointInstruction) instructions.get("zipped")).getBody());
484
		assertEquals("1.3", "true", ((ITouchpointInstruction) instructions.get("zipped")).getBody());
479
	}
485
	}
480
486
481
	public void testMetadtaRepoCount() {
487
	public void testMetadtaRepoCount() {
(-)src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AddRepositoryActionTest.java (-1 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
11
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
13
import java.net.URI;
15
import java.net.URI;
14
import java.util.HashMap;
16
import java.util.HashMap;
15
import java.util.Map;
17
import java.util.Map;
Lines 116-122 Link Here
116
		Version version = new Version(1, 0, 0);
118
		Version version = new Version(1, 0, 0);
117
		Map instructions = new HashMap();
119
		Map instructions = new HashMap();
118
		instructions.put("configure", TouchpointInstruction.encodeAction("addRepository", getValidArguments()));
120
		instructions.put("configure", TouchpointInstruction.encodeAction("addRepository", getValidArguments()));
119
		TouchpointData tpData = MetadataFactory.createTouchpointData(instructions);
121
		ITouchpointData tpData = MetadataFactory.createTouchpointData(instructions);
120
		IInstallableUnit iu = createIU(id, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TOUCHPOINT_OSGI, tpData, true, createUpdateDescriptor(id, version));
122
		IInstallableUnit iu = createIU(id, version, null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TOUCHPOINT_OSGI, tpData, true, createUpdateDescriptor(id, version));
121
		IProfile profile = createProfile(id);
123
		IProfile profile = createProfile(id);
122
		ProfileChangeRequest request = new ProfileChangeRequest(profile);
124
		ProfileChangeRequest request = new ProfileChangeRequest(profile);
(-)src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/UtilTest.java (-3 / +4 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
11
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
13
import java.io.File;
15
import java.io.File;
14
import java.net.MalformedURLException;
16
import java.net.MalformedURLException;
15
import java.net.URISyntaxException;
17
import java.net.URISyntaxException;
Lines 24-30 Link Here
24
import org.eclipse.equinox.internal.provisional.p2.core.location.AgentLocation;
26
import org.eclipse.equinox.internal.provisional.p2.core.location.AgentLocation;
25
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
27
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
26
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
28
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
27
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointData;
28
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
29
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
29
30
30
/**
31
/**
Lines 64-70 Link Here
64
	}
65
	}
65
66
66
	public void testMissingManifest() {
67
	public void testMissingManifest() {
67
		TouchpointData emptyData = MetadataFactory.createTouchpointData(Collections.EMPTY_MAP);
68
		ITouchpointData emptyData = MetadataFactory.createTouchpointData(Collections.EMPTY_MAP);
68
		assertNull(Util.getManifest(new TouchpointData[] {emptyData}));
69
		assertNull(Util.getManifest(new ITouchpointData[] {emptyData}));
69
	}
70
	}
70
}
71
}
(-)src/org/eclipse/equinox/p2/tests/updatechecker/UpdateCheckerTest.java (-1 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.updatechecker;
11
package org.eclipse.equinox.p2.tests.updatechecker;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
13
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
14
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
16
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
15
import org.eclipse.equinox.internal.p2.publisher.Activator;
17
import org.eclipse.equinox.internal.p2.publisher.Activator;
Lines 45-51 Link Here
45
		String id = "toInstall." + getName();
47
		String id = "toInstall." + getName();
46
		toInstallIU = createIU(id, new Version(1, 0, 0));
48
		toInstallIU = createIU(id, new Version(1, 0, 0));
47
		IUpdateDescriptor updateDescriptor = createUpdateDescriptor(id, new Version(2, 0, 0));
49
		IUpdateDescriptor updateDescriptor = createUpdateDescriptor(id, new Version(2, 0, 0));
48
		update = createIU(id, new Version(2, 0, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, true, updateDescriptor);
50
		update = createIU(id, new Version(2, 0, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, true, updateDescriptor);
49
51
50
		IInstallableUnit[] allUnits = new IInstallableUnit[] {toInstallIU, update};
52
		IInstallableUnit[] allUnits = new IInstallableUnit[] {toInstallIU, update};
51
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
53
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
(-)src/org/eclipse/equinox/p2/tests/director/OperationGenerationTest.java (-11 / +13 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.director;
11
package org.eclipse.equinox.p2.tests.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
13
import java.util.ArrayList;
15
import java.util.ArrayList;
14
import java.util.Collection;
16
import java.util.Collection;
15
import org.eclipse.equinox.internal.p2.director.OperationGenerator;
17
import org.eclipse.equinox.internal.p2.director.OperationGenerator;
Lines 232-243 Link Here
232
	public void test248468b() {
234
	public void test248468b() {
233
		String id = "myBundle";
235
		String id = "myBundle";
234
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
236
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
235
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
237
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
236
		IUpdateDescriptor update2 = createUpdateDescriptor(id, new Version("2.0.0"));
238
		IUpdateDescriptor update2 = createUpdateDescriptor(id, new Version("2.0.0"));
237
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update2);
239
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update2);
238
240
239
		IUpdateDescriptor update3 = createUpdateDescriptor(id, new Version("3.0.0"));
241
		IUpdateDescriptor update3 = createUpdateDescriptor(id, new Version("3.0.0"));
240
		IInstallableUnit three = createIU(id, new Version("3.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update3);
242
		IInstallableUnit three = createIU(id, new Version("3.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update3);
241
243
242
		Collection from = new ArrayList();
244
		Collection from = new ArrayList();
243
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
245
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
Lines 264-275 Link Here
264
	public void test248468d() {
266
	public void test248468d() {
265
		String id = "myBundle";
267
		String id = "myBundle";
266
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
268
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
267
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
269
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
268
		update = createUpdateDescriptor(id, new Version("2.0.0"));
270
		update = createUpdateDescriptor(id, new Version("2.0.0"));
269
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
271
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
270
272
271
		IUpdateDescriptor update3 = createUpdateDescriptor(id, new Version("3.0.0"));
273
		IUpdateDescriptor update3 = createUpdateDescriptor(id, new Version("3.0.0"));
272
		IInstallableUnit three = createIU("anotherBundle", new Version("3.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update3);
274
		IInstallableUnit three = createIU("anotherBundle", new Version("3.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update3);
273
275
274
		Collection from = new ArrayList();
276
		Collection from = new ArrayList();
275
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
277
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
Lines 297-309 Link Here
297
	public void test248468c() {
299
	public void test248468c() {
298
		String id = "myBundle";
300
		String id = "myBundle";
299
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
301
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
300
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
302
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
301
		update = createUpdateDescriptor(id, new Version("2.0.0"));
303
		update = createUpdateDescriptor(id, new Version("2.0.0"));
302
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
304
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
303
305
304
		IUpdateDescriptor update3 = MetadataFactory.createUpdateDescriptor(id, new VersionRange(new Version(2, 0, 0), true, new Version(3, 0, 0), false), IUpdateDescriptor.HIGH, "desc");
306
		IUpdateDescriptor update3 = MetadataFactory.createUpdateDescriptor(id, new VersionRange(new Version(2, 0, 0), true, new Version(3, 0, 0), false), IUpdateDescriptor.HIGH, "desc");
305
		//		IUpdateDescriptor update3 = createUpdateDescriptor(id, new Version("3.0.0"));
307
		//		IUpdateDescriptor update3 = createUpdateDescriptor(id, new Version("3.0.0"));
306
		IInstallableUnit three = createIU("anotherBundle", new Version("3.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update3);
308
		IInstallableUnit three = createIU("anotherBundle", new Version("3.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update3);
307
309
308
		Collection from = new ArrayList();
310
		Collection from = new ArrayList();
309
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
311
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
Lines 333-341 Link Here
333
	public void test248468() {
335
	public void test248468() {
334
		String id = "myBundle";
336
		String id = "myBundle";
335
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
337
		IUpdateDescriptor update = createUpdateDescriptor(id, new Version("1.0.0"));
336
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
338
		IInstallableUnit one = createIU(id, new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
337
		update = createUpdateDescriptor(id, new Version("2.0.0"));
339
		update = createUpdateDescriptor(id, new Version("2.0.0"));
338
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, update);
340
		IInstallableUnit two = createIU(id, new Version("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, update);
339
341
340
		Collection from = new ArrayList();
342
		Collection from = new ArrayList();
341
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
343
		from.add(MetadataFactory.createResolvedInstallableUnit(one, new IInstallableUnitFragment[0]));
(-)src/org/eclipse/equinox/p2/tests/director/OracleTest2.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.director;
9
package org.eclipse.equinox.p2.tests.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
14
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
13
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
15
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
Lines 29-35 Link Here
29
	IProfile profile;
31
	IProfile profile;
30
32
31
	protected void setUp() throws Exception {
33
	protected void setUp() throws Exception {
32
		RequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 2.0.0)"), null);
34
		IRequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 2.0.0)"), null);
33
		a1 = createIU("A", requires, true);
35
		a1 = createIU("A", requires, true);
34
36
35
		c1 = createIU("C", DEFAULT_VERSION, true);
37
		c1 = createIU("C", DEFAULT_VERSION, true);
(-)src/org/eclipse/equinox/p2/tests/director/AutomatedDirectorTest.java (-13 / +17 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.director;
9
package org.eclipse.equinox.p2.tests.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
14
11
import java.util.HashMap;
15
import java.util.HashMap;
12
import java.util.Map;
16
import java.util.Map;
13
import junit.framework.Test;
17
import junit.framework.Test;
Lines 50-57 Link Here
50
54
51
		// The IU to be installed
55
		// The IU to be installed
52
		String filter = createFilter("FilterKey", "true");
56
		String filter = createFilter("FilterKey", "true");
53
		RequiredCapability capability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, requiredIU.getId(), ANY_VERSION, filter, false, false);
57
		IRequiredCapability capability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, requiredIU.getId(), ANY_VERSION, filter, false, false);
54
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new RequiredCapability[] {capability});
58
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new IRequiredCapability[] {capability});
55
59
56
		IInstallableUnit[] allUnits = new IInstallableUnit[] {requiredIU, toInstallIU};
60
		IInstallableUnit[] allUnits = new IInstallableUnit[] {requiredIU, toInstallIU};
57
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
61
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
Lines 75-85 Link Here
75
	public void testInstallOptionalAvailable() {
79
	public void testInstallOptionalAvailable() {
76
		String capabilityId = "test." + getName();
80
		String capabilityId = "test." + getName();
77
		//The IU that exports the capability
81
		//The IU that exports the capability
78
		IInstallableUnit requiredIU = createIU("required." + getName(), new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", capabilityId, DEFAULT_VERSION)});
82
		IInstallableUnit requiredIU = createIU("required." + getName(), new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", capabilityId, DEFAULT_VERSION)});
79
83
80
		//The IU that optionally requires the capability
84
		//The IU that optionally requires the capability
81
		RequiredCapability required = MetadataFactory.createRequiredCapability("test.capability", capabilityId, ANY_VERSION, null, /* optional=> */true, /* multiple=> */false, /* greedy=>*/false);
85
		IRequiredCapability required = MetadataFactory.createRequiredCapability("test.capability", capabilityId, ANY_VERSION, null, /* optional=> */true, /* multiple=> */false, /* greedy=>*/false);
82
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new RequiredCapability[] {required});
86
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new IRequiredCapability[] {required});
83
87
84
		IInstallableUnit[] allUnits = new IInstallableUnit[] {toInstallIU, requiredIU};
88
		IInstallableUnit[] allUnits = new IInstallableUnit[] {toInstallIU, requiredIU};
85
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
89
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
Lines 102-109 Link Here
102
	public void testInstallOptionalUnavailable() {
106
	public void testInstallOptionalUnavailable() {
103
		String capabilityId = "test." + getName();
107
		String capabilityId = "test." + getName();
104
		//no IU will be available that exports this capability
108
		//no IU will be available that exports this capability
105
		RequiredCapability required = MetadataFactory.createRequiredCapability("test.capability", capabilityId, ANY_VERSION, null, true, false);
109
		IRequiredCapability required = MetadataFactory.createRequiredCapability("test.capability", capabilityId, ANY_VERSION, null, true, false);
106
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new RequiredCapability[] {required});
110
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new IRequiredCapability[] {required});
107
111
108
		IInstallableUnit[] allUnits = new IInstallableUnit[] {toInstallIU};
112
		IInstallableUnit[] allUnits = new IInstallableUnit[] {toInstallIU};
109
		createTestMetdataRepository(allUnits);
113
		createTestMetdataRepository(allUnits);
Lines 126-132 Link Here
126
	public void testInstallPlatformFilter() {
130
	public void testInstallPlatformFilter() {
127
		//The IU that exports the capability
131
		//The IU that exports the capability
128
		String capabilityId = "test." + getName();
132
		String capabilityId = "test." + getName();
129
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", capabilityId, DEFAULT_VERSION)};
133
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", capabilityId, DEFAULT_VERSION)};
130
		IInstallableUnit requiredIU = createIU("required." + getName(), createFilter("osgi.os", "blort"), provides);
134
		IInstallableUnit requiredIU = createIU("required." + getName(), createFilter("osgi.os", "blort"), provides);
131
135
132
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), createRequiredCapabilities("test.capability", capabilityId, ANY_VERSION, null));
136
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), createRequiredCapabilities("test.capability", capabilityId, ANY_VERSION, null));
Lines 186-192 Link Here
186
	public void testSimpleInstallRequired() {
190
	public void testSimpleInstallRequired() {
187
		String capabilityId = "test." + getName();
191
		String capabilityId = "test." + getName();
188
		//The IU that exports the capability
192
		//The IU that exports the capability
189
		IInstallableUnit requiredIU = createIU("required." + getName(), new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", capabilityId, DEFAULT_VERSION)});
193
		IInstallableUnit requiredIU = createIU("required." + getName(), new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", capabilityId, DEFAULT_VERSION)});
190
194
191
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), createRequiredCapabilities("test.capability", capabilityId, ANY_VERSION, null));
195
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), createRequiredCapabilities("test.capability", capabilityId, ANY_VERSION, null));
192
196
Lines 214-221 Link Here
214
		//The IU that is needed
218
		//The IU that is needed
215
		IInstallableUnit requiredIU = createIU("required." + getName());
219
		IInstallableUnit requiredIU = createIU("required." + getName());
216
220
217
		RequiredCapability capability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, requiredIU.getId(), null, null, false, false);
221
		IRequiredCapability capability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, requiredIU.getId(), null, null, false, false);
218
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new RequiredCapability[] {capability});
222
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new IRequiredCapability[] {capability});
219
223
220
		IInstallableUnit[] allUnits = new IInstallableUnit[] {requiredIU, toInstallIU};
224
		IInstallableUnit[] allUnits = new IInstallableUnit[] {requiredIU, toInstallIU};
221
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
225
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
Lines 242-249 Link Here
242
		//The IU that exports the capability
246
		//The IU that exports the capability
243
		IInstallableUnit requiredIU = createIU("required." + getName());
247
		IInstallableUnit requiredIU = createIU("required." + getName());
244
248
245
		RequiredCapability capability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, requiredIU.getId(), ANY_VERSION, null, false, false);
249
		IRequiredCapability capability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, requiredIU.getId(), ANY_VERSION, null, false, false);
246
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new RequiredCapability[] {capability});
250
		IInstallableUnit toInstallIU = createIU("toInstall." + getName(), new IRequiredCapability[] {capability});
247
251
248
		IInstallableUnit[] allUnits = new IInstallableUnit[] {requiredIU, toInstallIU};
252
		IInstallableUnit[] allUnits = new IInstallableUnit[] {requiredIU, toInstallIU};
249
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
253
		IInstallableUnit[] toInstallArray = new IInstallableUnit[] {toInstallIU};
(-)src/org/eclipse/equinox/p2/tests/director/OracleTest.java (-2 / +3 lines)
Lines 8-19 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.director;
9
package org.eclipse.equinox.p2.tests.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
14
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
13
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
15
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
14
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
16
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
17
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
18
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
18
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
19
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
19
import org.eclipse.equinox.internal.provisional.p2.core.Version;
20
import org.eclipse.equinox.internal.provisional.p2.core.Version;
Lines 30-36 Link Here
30
	IProfile profile;
31
	IProfile profile;
31
32
32
	protected void setUp() throws Exception {
33
	protected void setUp() throws Exception {
33
		RequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 2.0.0)"), null);
34
		IRequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 2.0.0)"), null);
34
		a1 = createIU("A", requires, true);
35
		a1 = createIU("A", requires, true);
35
36
36
		requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 3.0.0)"), null);
37
		requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 3.0.0)"), null);
(-)src/org/eclipse/equinox/p2/tests/director/ResolutionHelperTest.java (-20 / +24 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.director;
9
package org.eclipse.equinox.p2.tests.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
14
11
import java.util.*;
15
import java.util.*;
12
import junit.framework.Test;
16
import junit.framework.Test;
13
import junit.framework.TestSuite;
17
import junit.framework.TestSuite;
Lines 44-54 Link Here
44
		Version version = new Version(5, 0, 0);
48
		Version version = new Version(5, 0, 0);
45
49
46
		//The IU that exports the capability
50
		//The IU that exports the capability
47
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
51
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
48
		IInstallableUnit required = createIU("required", version, provides);
52
		IInstallableUnit required = createIU("required", version, provides);
49
53
50
		//an IU whose required capability falls outside available range
54
		//an IU whose required capability falls outside available range
51
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", new VersionRange("[2.0,5.0)"), null);
55
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", new VersionRange("[2.0,5.0)"), null);
52
		IInstallableUnit toInstall = createIU("match", version, requires);
56
		IInstallableUnit toInstall = createIU("match", version, requires);
53
57
54
		ResolutionHelper rh = new ResolutionHelper(null, null);
58
		ResolutionHelper rh = new ResolutionHelper(null, null);
Lines 60-66 Link Here
60
64
61
		assertEquals("1.0", 1, unsatisfied.length);
65
		assertEquals("1.0", 1, unsatisfied.length);
62
		assertEquals("1.1", "match", unsatisfied[0].getUnsatisfiedUnit().getId());
66
		assertEquals("1.1", "match", unsatisfied[0].getUnsatisfiedUnit().getId());
63
		RequiredCapability capability = unsatisfied[0].getRequiredCapability();
67
		IRequiredCapability capability = unsatisfied[0].getRequiredCapability();
64
		assertEquals("1.4", "test.capability", capability.getNamespace());
68
		assertEquals("1.4", "test.capability", capability.getNamespace());
65
		assertEquals("1.5", "test", capability.getName());
69
		assertEquals("1.5", "test", capability.getName());
66
	}
70
	}
Lines 73-83 Link Here
73
		Version version = new Version(2, 0, 0);
77
		Version version = new Version(2, 0, 0);
74
78
75
		//The IU that exports the capability
79
		//The IU that exports the capability
76
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
80
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
77
		IInstallableUnit required = createIU("required", version, provides);
81
		IInstallableUnit required = createIU("required", version, provides);
78
82
79
		//an IU whose required capability falls outside available range
83
		//an IU whose required capability falls outside available range
80
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", new VersionRange("(2.0,3.0)"), null);
84
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", new VersionRange("(2.0,3.0)"), null);
81
		IInstallableUnit toInstall = createIU("match", version, requires);
85
		IInstallableUnit toInstall = createIU("match", version, requires);
82
86
83
		ResolutionHelper rh = new ResolutionHelper(null, null);
87
		ResolutionHelper rh = new ResolutionHelper(null, null);
Lines 89-95 Link Here
89
93
90
		assertEquals("1.0", 1, unsatisfied.length);
94
		assertEquals("1.0", 1, unsatisfied.length);
91
		assertEquals("1.1", "match", unsatisfied[0].getUnsatisfiedUnit().getId());
95
		assertEquals("1.1", "match", unsatisfied[0].getUnsatisfiedUnit().getId());
92
		RequiredCapability capability = unsatisfied[0].getRequiredCapability();
96
		IRequiredCapability capability = unsatisfied[0].getRequiredCapability();
93
		assertEquals("1.4", "test.capability", capability.getNamespace());
97
		assertEquals("1.4", "test.capability", capability.getNamespace());
94
		assertEquals("1.5", "test", capability.getName());
98
		assertEquals("1.5", "test", capability.getName());
95
	}
99
	}
Lines 98-107 Link Here
98
		Version version = new Version(1, 0, 0);
102
		Version version = new Version(1, 0, 0);
99
103
100
		//The IU that exports the capability
104
		//The IU that exports the capability
101
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
105
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
102
		IInstallableUnit required = createIU("required", version, createFilter(FILTER_KEY, "win32"), provides);
106
		IInstallableUnit required = createIU("required", version, createFilter(FILTER_KEY, "win32"), provides);
103
107
104
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", ANY_VERSION, null);
108
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", ANY_VERSION, null);
105
		IInstallableUnit toInstall = createIU("toInstall", version, requires);
109
		IInstallableUnit toInstall = createIU("toInstall", version, requires);
106
110
107
		//setup context so that platform filter will satisfy dependency
111
		//setup context so that platform filter will satisfy dependency
Lines 120-126 Link Here
120
		unsatisfied = rh.install(installSet, available);
124
		unsatisfied = rh.install(installSet, available);
121
		assertEquals("1.1", 1, unsatisfied.length);
125
		assertEquals("1.1", 1, unsatisfied.length);
122
		assertEquals("1.2", "toInstall", unsatisfied[0].getUnsatisfiedUnit().getId());
126
		assertEquals("1.2", "toInstall", unsatisfied[0].getUnsatisfiedUnit().getId());
123
		RequiredCapability capability = unsatisfied[0].getRequiredCapability();
127
		IRequiredCapability capability = unsatisfied[0].getRequiredCapability();
124
		assertEquals("1.3", "test.capability", capability.getNamespace());
128
		assertEquals("1.3", "test.capability", capability.getNamespace());
125
		assertEquals("1.4", "test", capability.getName());
129
		assertEquals("1.4", "test", capability.getName());
126
130
Lines 144-154 Link Here
144
		Version version = new Version(1, 0, 0);
148
		Version version = new Version(1, 0, 0);
145
149
146
		//The IU that exports the capability
150
		//The IU that exports the capability
147
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
151
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
148
		IInstallableUnit required = createIU("required", version, provides);
152
		IInstallableUnit required = createIU("required", version, provides);
149
153
150
		//an IU whose filter will match the environment
154
		//an IU whose filter will match the environment
151
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", createFilter(FILTER_KEY, "matchValue"));
155
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", createFilter(FILTER_KEY, "matchValue"));
152
		IInstallableUnit toInstall = createIU("match", version, requires);
156
		IInstallableUnit toInstall = createIU("match", version, requires);
153
157
154
		Dictionary environment = new Hashtable();
158
		Dictionary environment = new Hashtable();
Lines 172-182 Link Here
172
		Version version = new Version(1, 0, 0);
176
		Version version = new Version(1, 0, 0);
173
177
174
		//The IU that exports the capability
178
		//The IU that exports the capability
175
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
179
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
176
		IInstallableUnit required = createIU("required", version, provides);
180
		IInstallableUnit required = createIU("required", version, provides);
177
181
178
		//an IU whose filter will not match the environment
182
		//an IU whose filter will not match the environment
179
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", createFilter(FILTER_KEY, "noMatchValue"));
183
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "test", createFilter(FILTER_KEY, "noMatchValue"));
180
		IInstallableUnit toInstall = createIU("noMatch", version, requires);
184
		IInstallableUnit toInstall = createIU("noMatch", version, requires);
181
185
182
		Dictionary environment = new Hashtable();
186
		Dictionary environment = new Hashtable();
Lines 192-201 Link Here
192
	}
196
	}
193
197
194
	public void testSimpleDependency() {
198
	public void testSimpleDependency() {
195
		RequiredCapability[] requires = new RequiredCapability[] {MetadataFactory.createRequiredCapability("java.runtime", "JRE", null, null, false, false)};
199
		IRequiredCapability[] requires = new IRequiredCapability[] {MetadataFactory.createRequiredCapability("java.runtime", "JRE", null, null, false, false)};
196
		IInstallableUnit osgi = createIU("org.eclipse.osgi", new Version(3, 2, 0, null), requires, NO_PROPERTIES, false);
200
		IInstallableUnit osgi = createIU("org.eclipse.osgi", new Version(3, 2, 0, null), requires, NO_PROPERTIES, false);
197
201
198
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("java.runtime", "JRE", new Version(1, 4, 2, "sr2"))};
202
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("java.runtime", "JRE", new Version(1, 4, 2, "sr2"))};
199
		IInstallableUnit jre = createIU("com.ibm.jre", new Version(1, 4, 2, "sr2"), provides);
203
		IInstallableUnit jre = createIU("com.ibm.jre", new Version(1, 4, 2, "sr2"), provides);
200
204
201
		ResolutionHelper rh = new ResolutionHelper(null, null);
205
		ResolutionHelper rh = new ResolutionHelper(null, null);
Lines 215-225 Link Here
215
		Version version = new Version(1, 0, 0);
219
		Version version = new Version(1, 0, 0);
216
220
217
		//The IU that exports the capability
221
		//The IU that exports the capability
218
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
222
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
219
		IInstallableUnit required = createIU("required", version, provides);
223
		IInstallableUnit required = createIU("required", version, provides);
220
224
221
		//an IU whose filter will match the environment
225
		//an IU whose filter will match the environment
222
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "does.not.exist", createFilter(FILTER_KEY, "matchValue"));
226
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "does.not.exist", createFilter(FILTER_KEY, "matchValue"));
223
		IInstallableUnit toInstall = createIU("match", version, requires);
227
		IInstallableUnit toInstall = createIU("match", version, requires);
224
228
225
		Dictionary environment = new Hashtable();
229
		Dictionary environment = new Hashtable();
Lines 233-239 Link Here
233
237
234
		assertEquals("1.0", 1, unsatisfied.length);
238
		assertEquals("1.0", 1, unsatisfied.length);
235
		assertEquals("1.1", "match", unsatisfied[0].getUnsatisfiedUnit().getId());
239
		assertEquals("1.1", "match", unsatisfied[0].getUnsatisfiedUnit().getId());
236
		RequiredCapability capability = unsatisfied[0].getRequiredCapability();
240
		IRequiredCapability capability = unsatisfied[0].getRequiredCapability();
237
		assertEquals("1.4", "test.capability", capability.getNamespace());
241
		assertEquals("1.4", "test.capability", capability.getNamespace());
238
		assertEquals("1.5", "does.not.exist", capability.getName());
242
		assertEquals("1.5", "does.not.exist", capability.getName());
239
	}
243
	}
Lines 248-258 Link Here
248
		Version version = new Version(1, 0, 0);
252
		Version version = new Version(1, 0, 0);
249
253
250
		//The IU that exports the capability
254
		//The IU that exports the capability
251
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
255
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
252
		IInstallableUnit required = createIU("required", version, provides);
256
		IInstallableUnit required = createIU("required", version, provides);
253
257
254
		//an IU whose filter will not match the environment
258
		//an IU whose filter will not match the environment
255
		RequiredCapability[] requires = createRequiredCapabilities("test.capability", "does.not.exist", createFilter(FILTER_KEY, "noMatchValue"));
259
		IRequiredCapability[] requires = createRequiredCapabilities("test.capability", "does.not.exist", createFilter(FILTER_KEY, "noMatchValue"));
256
		IInstallableUnit toInstall = createIU("noMatch", version, requires);
260
		IInstallableUnit toInstall = createIU("noMatch", version, requires);
257
261
258
		Dictionary environment = new Hashtable();
262
		Dictionary environment = new Hashtable();
(-)src/org/eclipse/equinox/p2/tests/director/PickerTest.java (-4 / +8 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.director;
11
package org.eclipse.equinox.p2.tests.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import org.eclipse.equinox.internal.p2.director.Picker;
17
import org.eclipse.equinox.internal.p2.director.Picker;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
15
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
Lines 36-42 Link Here
36
		Version version = new Version(5, 0, 0);
40
		Version version = new Version(5, 0, 0);
37
41
38
		//create some sample IUs to be available for the picker
42
		//create some sample IUs to be available for the picker
39
		ProvidedCapability[] provides = new ProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
43
		IProvidedCapability[] provides = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("test.capability", "test", version)};
40
		unitVersion5 = createIU("required", version, provides);
44
		unitVersion5 = createIU("required", version, provides);
41
45
42
		IInstallableUnit[] units = new IInstallableUnit[] {unitVersion5};
46
		IInstallableUnit[] units = new IInstallableUnit[] {unitVersion5};
Lines 51-57 Link Here
51
	public void testRequiredBelowVersionRange() {
55
	public void testRequiredBelowVersionRange() {
52
56
53
		//an IU whose required capability falls outside available range
57
		//an IU whose required capability falls outside available range
54
		RequiredCapability[] required = createRequiredCapabilities("test.capability", "test", new VersionRange("[2.0,5.0)"), null);
58
		IRequiredCapability[] required = createRequiredCapabilities("test.capability", "test", new VersionRange("[2.0,5.0)"), null);
55
59
56
		IInstallableUnit[][] result = picker.findInstallableUnit(null, null, required, false);
60
		IInstallableUnit[][] result = picker.findInstallableUnit(null, null, required, false);
57
		assertEquals("1.0", 0, result[0].length + result[1].length);
61
		assertEquals("1.0", 0, result[0].length + result[1].length);
Lines 64-70 Link Here
64
	public void testRequiredWithinVersionRange() {
68
	public void testRequiredWithinVersionRange() {
65
69
66
		//in middle of range
70
		//in middle of range
67
		RequiredCapability[] required = createRequiredCapabilities("test.capability", "test", new VersionRange("[2.0,6.0)"), null);
71
		IRequiredCapability[] required = createRequiredCapabilities("test.capability", "test", new VersionRange("[2.0,6.0)"), null);
68
		IInstallableUnit[] result = picker.findInstallableUnit(null, null, required, false)[1];
72
		IInstallableUnit[] result = picker.findInstallableUnit(null, null, required, false)[1];
69
		assertEquals("1.0", 1, result.length);
73
		assertEquals("1.0", 1, result.length);
70
		assertEquals("1.1", unitVersion5, result[0]);
74
		assertEquals("1.1", unitVersion5, result[0]);
Lines 89-95 Link Here
89
	public void testRequiredAboveVersionRange() {
93
	public void testRequiredAboveVersionRange() {
90
94
91
		//an IU whose required capability falls outside available range
95
		//an IU whose required capability falls outside available range
92
		RequiredCapability[] required = createRequiredCapabilities("test.capability", "test", new VersionRange("[5.1,6.0)"), null);
96
		IRequiredCapability[] required = createRequiredCapabilities("test.capability", "test", new VersionRange("[5.1,6.0)"), null);
93
97
94
		IInstallableUnit[][] result = picker.findInstallableUnit(null, null, required, false);
98
		IInstallableUnit[][] result = picker.findInstallableUnit(null, null, required, false);
95
		assertEquals("1.0", 0, result[0].length + result[1].length);
99
		assertEquals("1.0", 0, result[0].length + result[1].length);
(-)src/org/eclipse/equinox/p2/tests/director/ReplacePlanTest.java (-2 / +3 lines)
Lines 10-20 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.director;
11
package org.eclipse.equinox.p2.tests.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
14
import org.eclipse.equinox.internal.provisional.p2.director.*;
16
import org.eclipse.equinox.internal.provisional.p2.director.*;
15
import org.eclipse.equinox.internal.provisional.p2.engine.*;
17
import org.eclipse.equinox.internal.provisional.p2.engine.*;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
18
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.equinox.internal.provisional.p2.core.Version;
21
import org.eclipse.equinox.internal.provisional.p2.core.Version;
Lines 48-54 Link Here
48
		frag1_4 = createIUFragment(f1, "frag1", f1_4.getVersion());
49
		frag1_4 = createIUFragment(f1, "frag1", f1_4.getVersion());
49
50
50
		//IUs that require base IU
51
		//IUs that require base IU
51
		RequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "f1", new VersionRange("[1.0.0, 1.3.0)"), null);
52
		IRequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "f1", new VersionRange("[1.0.0, 1.3.0)"), null);
52
		fa = createIU("fa", requires, false);
53
		fa = createIU("fa", requires, false);
53
		requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "f1", new VersionRange("[1.0.0, 1.4.0)"), null);
54
		requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "f1", new VersionRange("[1.0.0, 1.4.0)"), null);
54
		fap = createIU("fa", new Version(1, 1, 0), requires, NO_PROPERTIES, false);
55
		fap = createIU("fa", new Version(1, 1, 0), requires, NO_PROPERTIES, false);
(-)src/org/eclipse/equinox/p2/tests/director/UpdateTest.java (-2 / +3 lines)
Lines 8-20 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.director;
9
package org.eclipse.equinox.p2.tests.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.core.runtime.IStatus;
13
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.core.runtime.NullProgressMonitor;
14
import org.eclipse.core.runtime.NullProgressMonitor;
13
import org.eclipse.equinox.internal.provisional.p2.director.*;
15
import org.eclipse.equinox.internal.provisional.p2.director.*;
14
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
16
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
15
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
17
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
18
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
19
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
import org.eclipse.equinox.internal.provisional.p2.core.Version;
21
import org.eclipse.equinox.internal.provisional.p2.core.Version;
Lines 36-42 Link Here
36
		f1_1 = createIU(f1Id, new Version(1, 1, 0), true);
37
		f1_1 = createIU(f1Id, new Version(1, 1, 0), true);
37
		f1_4 = createIU(f1Id, new Version(1, 4, 0), true);
38
		f1_4 = createIU(f1Id, new Version(1, 4, 0), true);
38
39
39
		RequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, f1Id, new VersionRange("[1.0.0, 1.3.0)"), null);
40
		IRequiredCapability[] requires = createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, f1Id, new VersionRange("[1.0.0, 1.3.0)"), null);
40
		String faId = getName() + ".fa";
41
		String faId = getName() + ".fa";
41
		fa = createIU(faId, requires, false);
42
		fa = createIU(faId, requires, false);
42
43
(-)src/org/eclipse/equinox/p2/tests/director/RollbackTest.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.tests.director;
9
package org.eclipse.equinox.p2.tests.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import java.net.*;
13
import java.net.*;
12
import java.util.ArrayList;
14
import java.util.ArrayList;
13
import java.util.List;
15
import java.util.List;
Lines 46-52 Link Here
46
		b1 = createIU("B", DEFAULT_VERSION, true);
48
		b1 = createIU("B", DEFAULT_VERSION, true);
47
		c1 = createIU("C", DEFAULT_VERSION, true);
49
		c1 = createIU("C", DEFAULT_VERSION, true);
48
50
49
		RequiredCapability[] req = new RequiredCapability[1];
51
		IRequiredCapability[] req = new IRequiredCapability[1];
50
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
52
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, true);
51
		d1 = createIU("D", new Version("1.0.0"), req);
53
		d1 = createIU("D", new Version("1.0.0"), req);
52
54
(-)src/org/eclipse/equinox/p2/tests/director/RecommendationTest.java (-16 / +18 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.director;
11
package org.eclipse.equinox.p2.tests.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
14
16
15
import java.lang.reflect.Method;
17
import java.lang.reflect.Method;
Lines 27-44 Link Here
27
	//test
29
	//test
28
	//check that the picker is returning something in the range
30
	//check that the picker is returning something in the range
29
	public void testRecommendation() {
31
	public void testRecommendation() {
30
		RequiredCapability applyOn, newValue;
32
		IRequiredCapability applyOn, newValue;
31
		applyOn = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
33
		applyOn = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
32
		newValue = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.1, 2.0)"), null, false, false);
34
		newValue = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.1, 2.0)"), null, false, false);
33
		Recommendation r1 = new Recommendation(applyOn, newValue);
35
		Recommendation r1 = new Recommendation(applyOn, newValue);
34
36
35
		RequiredCapability goodMatch = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
37
		IRequiredCapability goodMatch = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
36
		assertEquals(true, r1.matches(goodMatch));
38
		assertEquals(true, r1.matches(goodMatch));
37
39
38
		RequiredCapability badNamespace = MetadataFactory.createRequiredCapability("badNamespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
40
		IRequiredCapability badNamespace = MetadataFactory.createRequiredCapability("badNamespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
39
		assertEquals(false, r1.matches(badNamespace));
41
		assertEquals(false, r1.matches(badNamespace));
40
42
41
		RequiredCapability badName = MetadataFactory.createRequiredCapability("namespace", "badName", new VersionRange("[1.0, 2.0)"), null, false, false);
43
		IRequiredCapability badName = MetadataFactory.createRequiredCapability("namespace", "badName", new VersionRange("[1.0, 2.0)"), null, false, false);
42
		assertEquals(false, r1.matches(badName));
44
		assertEquals(false, r1.matches(badName));
43
	}
45
	}
44
46
Lines 48-59 Link Here
48
		IInstallableUnit iu2 = createIU("iu2", new Version(4, 0, 0));
50
		IInstallableUnit iu2 = createIU("iu2", new Version(4, 0, 0));
49
51
50
		//The recommendations to be used
52
		//The recommendations to be used
51
		RequiredCapability applyOn, newValue;
53
		IRequiredCapability applyOn, newValue;
52
		applyOn = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[1.0, 2.0)"), null, false, false);
54
		applyOn = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[1.0, 2.0)"), null, false, false);
53
		newValue = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[1.1, 2.0)"), null, false, false);
55
		newValue = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[1.1, 2.0)"), null, false, false);
54
		Recommendation r1 = new Recommendation(applyOn, newValue);
56
		Recommendation r1 = new Recommendation(applyOn, newValue);
55
57
56
		RequiredCapability applyOn2, newValue2;
58
		IRequiredCapability applyOn2, newValue2;
57
		applyOn2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu2", new VersionRange("[4.2, 5.0)"), null, false, false);
59
		applyOn2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu2", new VersionRange("[4.2, 5.0)"), null, false, false);
58
		newValue2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu2", new VersionRange("[4.0, 5.0)"), null, false, false);
60
		newValue2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu2", new VersionRange("[4.0, 5.0)"), null, false, false);
59
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
61
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
Lines 62-76 Link Here
62
		recommendations.add(r2);
64
		recommendations.add(r2);
63
65
64
		Picker p = new Picker(new IInstallableUnit[] {iu1, iu2}, null);
66
		Picker p = new Picker(new IInstallableUnit[] {iu1, iu2}, null);
65
		IInstallableUnit[][] matches = p.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", null, null, false, false)}, false);
67
		IInstallableUnit[][] matches = p.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", null, null, false, false)}, false);
66
		assertEquals(matches[1][0], iu1);
68
		assertEquals(matches[1][0], iu1);
67
69
68
		Picker p1 = new Picker(new IInstallableUnit[] {iu1, iu2}, new RecommendationDescriptor(recommendations));
70
		Picker p1 = new Picker(new IInstallableUnit[] {iu1, iu2}, new RecommendationDescriptor(recommendations));
69
		matches = p1.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[1.0, 2.0)"), null, false, false)}, false);
71
		matches = p1.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[1.0, 2.0)"), null, false, false)}, false);
70
		assertEquals(matches[0].length, 0);
72
		assertEquals(matches[0].length, 0);
71
		assertEquals(matches[1].length, 0);
73
		assertEquals(matches[1].length, 0);
72
74
73
		matches = p1.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.2, 5.0)"), null, false, false)}, false);
75
		matches = p1.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.2, 5.0)"), null, false, false)}, false);
74
		assertEquals(matches[0].length, 0);
76
		assertEquals(matches[0].length, 0);
75
		assertEquals(matches[1].length, 0);
77
		assertEquals(matches[1].length, 0);
76
	}
78
	}
Lines 80-86 Link Here
80
		IInstallableUnit iu1 = createIU("iu1", new Version(4, 0, 0));
82
		IInstallableUnit iu1 = createIU("iu1", new Version(4, 0, 0));
81
83
82
		//Here we add recommendation that widen the range of the bundle we are looking for
84
		//Here we add recommendation that widen the range of the bundle we are looking for
83
		RequiredCapability applyOn2, newValue2;
85
		IRequiredCapability applyOn2, newValue2;
84
		applyOn2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.2, 5.0)"), null, false, false);
86
		applyOn2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.2, 5.0)"), null, false, false);
85
		newValue2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.0, 5.0)"), null, false, false);
87
		newValue2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.0, 5.0)"), null, false, false);
86
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
88
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
Lines 89-106 Link Here
89
91
90
		//Check without the recommendations
92
		//Check without the recommendations
91
		Picker p2 = new Picker(new IInstallableUnit[] {iu1}, null);
93
		Picker p2 = new Picker(new IInstallableUnit[] {iu1}, null);
92
		IInstallableUnit[][] matches = p2.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.0, 5.0)"), null, false, false)}, false);
94
		IInstallableUnit[][] matches = p2.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.0, 5.0)"), null, false, false)}, false);
93
		assertEquals(matches[1].length, 1);
95
		assertEquals(matches[1].length, 1);
94
96
95
		//Check the widening works
97
		//Check the widening works
96
		Picker p1 = new Picker(new IInstallableUnit[] {iu1}, new RecommendationDescriptor(recommendations));
98
		Picker p1 = new Picker(new IInstallableUnit[] {iu1}, new RecommendationDescriptor(recommendations));
97
		matches = p1.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.2, 5.0)"), null, false, false)}, false);
99
		matches = p1.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "iu1", new VersionRange("[4.2, 5.0)"), null, false, false)}, false);
98
		assertEquals(matches[1].length, 1);
100
		assertEquals(matches[1].length, 1);
99
101
100
	}
102
	}
101
103
102
	public void testRecommendationDescriptorMerge() {
104
	public void testRecommendationDescriptorMerge() {
103
		RequiredCapability applyOn1, newValue1;
105
		IRequiredCapability applyOn1, newValue1;
104
		applyOn1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
106
		applyOn1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
105
		newValue1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.1, 2.0)"), null, false, false);
107
		newValue1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.1, 2.0)"), null, false, false);
106
		Recommendation r1 = new Recommendation(applyOn1, newValue1);
108
		Recommendation r1 = new Recommendation(applyOn1, newValue1);
Lines 108-114 Link Here
108
		list1.add(r1);
110
		list1.add(r1);
109
		RecommendationDescriptor desc1 = new RecommendationDescriptor(list1);
111
		RecommendationDescriptor desc1 = new RecommendationDescriptor(list1);
110
112
111
		RequiredCapability applyOn2, newValue2;
113
		IRequiredCapability applyOn2, newValue2;
112
		applyOn2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
114
		applyOn2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
113
		newValue2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.3, 2.0)"), null, false, false);
115
		newValue2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.3, 2.0)"), null, false, false);
114
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
116
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
Lines 122-128 Link Here
122
	}
124
	}
123
125
124
	public void testRecommendationDescriptorMergeConflict() {
126
	public void testRecommendationDescriptorMergeConflict() {
125
		RequiredCapability applyOn1, newValue1;
127
		IRequiredCapability applyOn1, newValue1;
126
		applyOn1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
128
		applyOn1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
127
		newValue1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.1, 2.0)"), null, false, false);
129
		newValue1 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.1, 2.0)"), null, false, false);
128
		Recommendation r1 = new Recommendation(applyOn1, newValue1);
130
		Recommendation r1 = new Recommendation(applyOn1, newValue1);
Lines 130-136 Link Here
130
		list1.add(r1);
132
		list1.add(r1);
131
		RecommendationDescriptor desc1 = new RecommendationDescriptor(list1);
133
		RecommendationDescriptor desc1 = new RecommendationDescriptor(list1);
132
134
133
		RequiredCapability applyOn2, newValue2;
135
		IRequiredCapability applyOn2, newValue2;
134
		applyOn2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
136
		applyOn2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[1.0, 2.0)"), null, false, false);
135
		newValue2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[2.1, 3.0)"), null, false, false);
137
		newValue2 = MetadataFactory.createRequiredCapability("namespace", "name", new VersionRange("[2.1, 3.0)"), null, false, false);
136
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
138
		Recommendation r2 = new Recommendation(applyOn2, newValue2);
(-)src/org/eclipse/equinox/p2/tests/directorywatcher/RepositoryListenerTest.java (-1 / +3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.directorywatcher;
11
package org.eclipse.equinox.p2.tests.directorywatcher;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
13
import java.io.File;
15
import java.io.File;
14
import junit.framework.Test;
16
import junit.framework.Test;
15
import junit.framework.TestSuite;
17
import junit.framework.TestSuite;
Lines 33-39 Link Here
33
		return new TestSuite(RepositoryListenerTest.class);
35
		return new TestSuite(RepositoryListenerTest.class);
34
	}
36
	}
35
37
36
	public static boolean isZipped(TouchpointData[] data) {
38
	public static boolean isZipped(ITouchpointData[] data) {
37
		if (data == null || data.length == 0)
39
		if (data == null || data.length == 0)
38
			return false;
40
			return false;
39
		for (int i = 0; i < data.length; i++) {
41
		for (int i = 0; i < data.length; i++) {
(-)src/org/eclipse/equinox/internal/p2/director/ApplicablePatchQuery.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.director;
9
package org.eclipse.equinox.internal.p2.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
13
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
12
import org.eclipse.equinox.internal.provisional.p2.query.Query;
14
import org.eclipse.equinox.internal.provisional.p2.query.Query;
13
15
Lines 40-46 Link Here
40
		if (!(candidate instanceof IInstallableUnitPatch))
42
		if (!(candidate instanceof IInstallableUnitPatch))
41
			return false;
43
			return false;
42
		IInstallableUnitPatch patchIU = (IInstallableUnitPatch) candidate;
44
		IInstallableUnitPatch patchIU = (IInstallableUnitPatch) candidate;
43
		RequiredCapability[][] scopeDescription = patchIU.getApplicabilityScope();
45
		IRequiredCapability[][] scopeDescription = patchIU.getApplicabilityScope();
44
		if (scopeDescription.length == 0)
46
		if (scopeDescription.length == 0)
45
			return true;
47
			return true;
46
48
(-)src/org/eclipse/equinox/internal/p2/director/RequirementBasedFilter.java (-3 / +4 lines)
Lines 8-20 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.director;
9
package org.eclipse.equinox.internal.p2.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
12
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
13
14
14
public class RequirementBasedFilter extends IUFilter {
15
public class RequirementBasedFilter extends IUFilter {
15
	private RequiredCapability[] reqs;
16
	private IRequiredCapability[] reqs;
16
17
17
	public RequirementBasedFilter(RequiredCapability[] toFilterOn) {
18
	public RequirementBasedFilter(IRequiredCapability[] toFilterOn) {
18
		reqs = toFilterOn;
19
		reqs = toFilterOn;
19
	}
20
	}
20
21
(-)src/org/eclipse/equinox/internal/p2/director/SimplePlanner.java (-6 / +8 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.internal.p2.director;
11
package org.eclipse.equinox.internal.p2.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.equinox.internal.provisional.p2.director.RequestStatus;
15
import org.eclipse.equinox.internal.provisional.p2.director.RequestStatus;
14
16
15
import java.net.URI;
17
import java.net.URI;
Lines 334-340 Link Here
334
		String time = Long.toString(System.currentTimeMillis());
336
		String time = Long.toString(System.currentTimeMillis());
335
		iud.setId(time);
337
		iud.setId(time);
336
		iud.setVersion(new Version(0, 0, 0, time));
338
		iud.setVersion(new Version(0, 0, 0, time));
337
		iud.setRequiredCapabilities((RequiredCapability[]) allRequirements.toArray(new RequiredCapability[allRequirements.size()]));
339
		iud.setRequiredCapabilities((IRequiredCapability[]) allRequirements.toArray(new IRequiredCapability[allRequirements.size()]));
338
		return MetadataFactory.createInstallableUnit(iud);
340
		return MetadataFactory.createInstallableUnit(iud);
339
	}
341
	}
340
342
Lines 378-384 Link Here
378
		Map iuPropertiesToAdd = profileChangeRequest.getInstallableUnitProfilePropertiesToAdd();
380
		Map iuPropertiesToAdd = profileChangeRequest.getInstallableUnitProfilePropertiesToAdd();
379
		for (int i = 0; i < added.length; i++) {
381
		for (int i = 0; i < added.length; i++) {
380
			Map propertiesForIU = (Map) iuPropertiesToAdd.get(added[i]);
382
			Map propertiesForIU = (Map) iuPropertiesToAdd.get(added[i]);
381
			RequiredCapability profileRequirement = null;
383
			IRequiredCapability profileRequirement = null;
382
			if (propertiesForIU != null) {
384
			if (propertiesForIU != null) {
383
				profileRequirement = createRequirement(added[i], (String) propertiesForIU.get(INCLUSION_RULES));
385
				profileRequirement = createRequirement(added[i], (String) propertiesForIU.get(INCLUSION_RULES));
384
			}
386
			}
Lines 393-399 Link Here
393
		for (Iterator iterator = alreadyInstalled.iterator(); iterator.hasNext();) {
395
		for (Iterator iterator = alreadyInstalled.iterator(); iterator.hasNext();) {
394
			IInstallableUnit iu = (IInstallableUnit) iterator.next();
396
			IInstallableUnit iu = (IInstallableUnit) iterator.next();
395
			Map propertiesForIU = (Map) iuPropertiesToAdd.get(iu);
397
			Map propertiesForIU = (Map) iuPropertiesToAdd.get(iu);
396
			RequiredCapability profileRequirement = null;
398
			IRequiredCapability profileRequirement = null;
397
			//Test if the value has changed
399
			//Test if the value has changed
398
			if (propertiesForIU != null) {
400
			if (propertiesForIU != null) {
399
				profileRequirement = createRequirement(iu, (String) propertiesForIU.get(INCLUSION_RULES));
401
				profileRequirement = createRequirement(iu, (String) propertiesForIU.get(INCLUSION_RULES));
Lines 406-412 Link Here
406
		return new IInstallableUnit[] {createIURepresentingTheProfile(gatheredRequirements)};
408
		return new IInstallableUnit[] {createIURepresentingTheProfile(gatheredRequirements)};
407
	}
409
	}
408
410
409
	private RequiredCapability createRequirement(IInstallableUnit iu, String rule) {
411
	private IRequiredCapability createRequirement(IInstallableUnit iu, String rule) {
410
		if (rule == null)
412
		if (rule == null)
411
			return null;
413
			return null;
412
		if (rule.equals(PlannerHelper.createStrictInclusionRule(iu))) {
414
		if (rule.equals(PlannerHelper.createStrictInclusionRule(iu))) {
Lines 418-428 Link Here
418
		return null;
420
		return null;
419
	}
421
	}
420
422
421
	private RequiredCapability createOptionalRequirement(IInstallableUnit iu) {
423
	private IRequiredCapability createOptionalRequirement(IInstallableUnit iu) {
422
		return MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), new VersionRange(iu.getVersion(), true, iu.getVersion(), true), null, true, false, true);
424
		return MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), new VersionRange(iu.getVersion(), true, iu.getVersion(), true), null, true, false, true);
423
	}
425
	}
424
426
425
	private RequiredCapability createStrictRequirement(IInstallableUnit iu) {
427
	private IRequiredCapability createStrictRequirement(IInstallableUnit iu) {
426
		return MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), new VersionRange(iu.getVersion(), true, iu.getVersion(), true), null, false, false, true);
428
		return MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), new VersionRange(iu.getVersion(), true, iu.getVersion(), true), null, false, false, true);
427
	}
429
	}
428
430
(-)src/org/eclipse/equinox/internal/p2/director/Projector.java (-20 / +24 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.internal.p2.director;
11
package org.eclipse.equinox.internal.p2.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
13
import java.io.*;
17
import java.io.*;
14
import java.util.*;
18
import java.util.*;
15
import java.util.Map.Entry;
19
import java.util.Map.Entry;
Lines 175-181 Link Here
175
		if (patches == null)
179
		if (patches == null)
176
			return patchesWeight;
180
			return patchesWeight;
177
		for (int i = 0; i < ius.length; i++) {
181
		for (int i = 0; i < ius.length; i++) {
178
			RequiredCapability[] reqs = ius[i].getRequiredCapabilities();
182
			IRequiredCapability[] reqs = ius[i].getRequiredCapabilities();
179
			for (int j = 0; j < reqs.length; j++) {
183
			for (int j = 0; j < reqs.length; j++) {
180
				Collector matches = patches.query(new CapabilityQuery(reqs[j]), new Collector(), null);
184
				Collector matches = patches.query(new CapabilityQuery(reqs[j]), new Collector(), null);
181
				for (Iterator iterator = matches.iterator(); iterator.hasNext();) {
185
				for (Iterator iterator = matches.iterator(); iterator.hasNext();) {
Lines 200-206 Link Here
200
	}
204
	}
201
205
202
	// Check whether the requirement is applicable
206
	// Check whether the requirement is applicable
203
	private boolean isApplicable(RequiredCapability req) {
207
	private boolean isApplicable(IRequiredCapability req) {
204
		String filter = req.getFilter();
208
		String filter = req.getFilter();
205
		if (filter == null)
209
		if (filter == null)
206
			return true;
210
			return true;
Lines 327-333 Link Here
327
		expandLifeCycle(iu);
331
		expandLifeCycle(iu);
328
		//No patches apply, normal code path
332
		//No patches apply, normal code path
329
		if (patches.size() == 0) {
333
		if (patches.size() == 0) {
330
			RequiredCapability[] reqs = iu.getRequiredCapabilities();
334
			IRequiredCapability[] reqs = iu.getRequiredCapabilities();
331
			if (reqs.length == 0) {
335
			if (reqs.length == 0) {
332
				return;
336
				return;
333
			}
337
			}
Lines 345-351 Link Here
345
			Map unchangedRequirements = new HashMap(iu.getRequiredCapabilities().length);
349
			Map unchangedRequirements = new HashMap(iu.getRequiredCapabilities().length);
346
			for (Iterator iterator = patches.iterator(); iterator.hasNext();) {
350
			for (Iterator iterator = patches.iterator(); iterator.hasNext();) {
347
				IInstallableUnitPatch patch = (IInstallableUnitPatch) iterator.next();
351
				IInstallableUnitPatch patch = (IInstallableUnitPatch) iterator.next();
348
				RequiredCapability[][] reqs = mergeRequirements(iu, patch);
352
				IRequiredCapability[][] reqs = mergeRequirements(iu, patch);
349
				if (reqs.length == 0)
353
				if (reqs.length == 0)
350
					return;
354
					return;
351
355
Lines 387-395 Link Here
387
					expression.append(" 1 " + getVariable(patch)); //$NON-NLS-1$
391
					expression.append(" 1 " + getVariable(patch)); //$NON-NLS-1$
388
				}
392
				}
389
				if (allPatches.size() != 0)
393
				if (allPatches.size() != 0)
390
					genericExpandRequirement(expression.toString(), iu, (RequiredCapability) entry.getKey(), " >= 0", " 1 " + getVariable(iu) + "=0;"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
394
					genericExpandRequirement(expression.toString(), iu, (IRequiredCapability) entry.getKey(), " >= 0", " 1 " + getVariable(iu) + "=0;"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
391
				else
395
				else
392
					expandRequirement(null, iu, (RequiredCapability) entry.getKey());
396
					expandRequirement(null, iu, (IRequiredCapability) entry.getKey());
393
			}
397
			}
394
		}
398
		}
395
	}
399
	}
Lines 403-409 Link Here
403
		expandNormalRequirement(null, iu, patch.getLifeCycle());
407
		expandNormalRequirement(null, iu, patch.getLifeCycle());
404
	}
408
	}
405
409
406
	private void genericExpandRequirement(String var, IInstallableUnit iu, RequiredCapability req, String value, String negationExpression) {
410
	private void genericExpandRequirement(String var, IInstallableUnit iu, IRequiredCapability req, String value, String negationExpression) {
407
		if (req.isOptional())
411
		if (req.isOptional())
408
			genericOptionalRequirementExpansion(var, iu, req, value);
412
			genericOptionalRequirementExpansion(var, iu, req, value);
409
		else
413
		else
Lines 411-421 Link Here
411
	}
415
	}
412
416
413
	//Return a new array of requirements representing the application of the patch
417
	//Return a new array of requirements representing the application of the patch
414
	private RequiredCapability[][] mergeRequirements(IInstallableUnit iu, IInstallableUnitPatch patch) {
418
	private IRequiredCapability[][] mergeRequirements(IInstallableUnit iu, IInstallableUnitPatch patch) {
415
		if (patch == null)
419
		if (patch == null)
416
			return null;
420
			return null;
417
		RequirementChange[] changes = patch.getRequirementsChange();
421
		IRequirementChange[] changes = patch.getRequirementsChange();
418
		RequiredCapability[] originalRequirements = new RequiredCapability[iu.getRequiredCapabilities().length];
422
		IRequiredCapability[] originalRequirements = new IRequiredCapability[iu.getRequiredCapabilities().length];
419
		System.arraycopy(iu.getRequiredCapabilities(), 0, originalRequirements, 0, originalRequirements.length);
423
		System.arraycopy(iu.getRequiredCapabilities(), 0, originalRequirements, 0, originalRequirements.length);
420
		List rrr = new ArrayList();
424
		List rrr = new ArrayList();
421
		boolean found = false;
425
		boolean found = false;
Lines 424-446 Link Here
424
				if (originalRequirements[j] != null && changes[i].matches(originalRequirements[j])) {
428
				if (originalRequirements[j] != null && changes[i].matches(originalRequirements[j])) {
425
					found = true;
429
					found = true;
426
					if (changes[i].newValue() != null)
430
					if (changes[i].newValue() != null)
427
						rrr.add(new RequiredCapability[] {originalRequirements[j], changes[i].newValue()});
431
						rrr.add(new IRequiredCapability[] {originalRequirements[j], changes[i].newValue()});
428
					else
432
					else
429
						// case where a requirement is removed
433
						// case where a requirement is removed
430
						rrr.add(new RequiredCapability[] {originalRequirements[j], null});
434
						rrr.add(new IRequiredCapability[] {originalRequirements[j], null});
431
					originalRequirements[j] = null;
435
					originalRequirements[j] = null;
432
				}
436
				}
433
				//				break;
437
				//				break;
434
			}
438
			}
435
			if (!found && changes[i].applyOn() == null && changes[i].newValue() != null) //Case where a new requirement is added
439
			if (!found && changes[i].applyOn() == null && changes[i].newValue() != null) //Case where a new requirement is added
436
				rrr.add(new RequiredCapability[] {null, changes[i].newValue()});
440
				rrr.add(new IRequiredCapability[] {null, changes[i].newValue()});
437
		}
441
		}
438
		//Add all the unmodified requirements to the result
442
		//Add all the unmodified requirements to the result
439
		for (int i = 0; i < originalRequirements.length; i++) {
443
		for (int i = 0; i < originalRequirements.length; i++) {
440
			if (originalRequirements[i] != null)
444
			if (originalRequirements[i] != null)
441
				rrr.add(new RequiredCapability[] {originalRequirements[i], originalRequirements[i]});
445
				rrr.add(new IRequiredCapability[] {originalRequirements[i], originalRequirements[i]});
442
		}
446
		}
443
		return (RequiredCapability[][]) rrr.toArray(new RequiredCapability[rrr.size()][]);
447
		return (IRequiredCapability[][]) rrr.toArray(new IRequiredCapability[rrr.size()][]);
444
	}
448
	}
445
449
446
	private void addOptionalityExpression() {
450
	private void addOptionalityExpression() {
Lines 454-460 Link Here
454
	private int countOptionalIUs = 0;
458
	private int countOptionalIUs = 0;
455
	private QueryableArray patches;
459
	private QueryableArray patches;
456
460
457
	private void expandOptionalRequirement(String iuVar, IInstallableUnit iu, RequiredCapability req) {
461
	private void expandOptionalRequirement(String iuVar, IInstallableUnit iu, IRequiredCapability req) {
458
		if (iuVar == null)
462
		if (iuVar == null)
459
			iuVar = getVariable(iu);
463
			iuVar = getVariable(iu);
460
		String abstractVar = getAbstractVariable();
464
		String abstractVar = getAbstractVariable();
Lines 495-501 Link Here
495
		}
499
		}
496
	}
500
	}
497
501
498
	private void genericOptionalRequirementExpansion(String iuVar, IInstallableUnit iu, RequiredCapability req, String value) {
502
	private void genericOptionalRequirementExpansion(String iuVar, IInstallableUnit iu, IRequiredCapability req, String value) {
499
		String abstractVar = getAbstractVariable();
503
		String abstractVar = getAbstractVariable();
500
		String expression = iuVar;
504
		String expression = iuVar;
501
		Collector matches = picker.query(new CapabilityQuery(req), new Collector(), null);
505
		Collector matches = picker.query(new CapabilityQuery(req), new Collector(), null);
Lines 534-540 Link Here
534
		}
538
		}
535
	}
539
	}
536
540
537
	private void genericRequirementExpansion(String varIu, IInstallableUnit iu, RequiredCapability req, String value, String negationExpression) {
541
	private void genericRequirementExpansion(String varIu, IInstallableUnit iu, IRequiredCapability req, String value, String negationExpression) {
538
		String expression = varIu;
542
		String expression = varIu;
539
		Collector matches = picker.query(new CapabilityQuery(req), new Collector(), null);
543
		Collector matches = picker.query(new CapabilityQuery(req), new Collector(), null);
540
		StringBuffer comment = new StringBuffer();
544
		StringBuffer comment = new StringBuffer();
Lines 568-574 Link Here
568
		}
572
		}
569
	}
573
	}
570
574
571
	private void expandNormalRequirement(String varIu, IInstallableUnit iu, RequiredCapability req) {
575
	private void expandNormalRequirement(String varIu, IInstallableUnit iu, IRequiredCapability req) {
572
		//Generate the regular requirement
576
		//Generate the regular requirement
573
		if (varIu == null)
577
		if (varIu == null)
574
			varIu = getVariable(iu);
578
			varIu = getVariable(iu);
Lines 616-622 Link Here
616
		return patches.query(new ApplicablePatchQuery(iu), new Collector(), null);
620
		return patches.query(new ApplicablePatchQuery(iu), new Collector(), null);
617
	}
621
	}
618
622
619
	private void expandRequirement(String var, IInstallableUnit iu, RequiredCapability req) {
623
	private void expandRequirement(String var, IInstallableUnit iu, IRequiredCapability req) {
620
		if (req.isOptional())
624
		if (req.isOptional())
621
			expandOptionalRequirement(var, iu, req);
625
			expandOptionalRequirement(var, iu, req);
622
		else
626
		else
(-)src/org/eclipse/equinox/internal/p2/director/Recommendation.java (-7 / +8 lines)
Lines 8-36 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.director;
9
package org.eclipse.equinox.internal.p2.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import org.eclipse.equinox.internal.provisional.p2.core.Version;
13
import org.eclipse.equinox.internal.provisional.p2.core.Version;
12
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
14
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
13
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
15
16
16
public class Recommendation {
17
public class Recommendation {
17
	private RequiredCapability applyOn;
18
	private IRequiredCapability applyOn;
18
	private RequiredCapability newValue;
19
	private IRequiredCapability newValue;
19
20
20
	public Recommendation(RequiredCapability applyOn2, RequiredCapability newValue2) {
21
	public Recommendation(IRequiredCapability applyOn2, IRequiredCapability newValue2) {
21
		this.applyOn = applyOn2;
22
		this.applyOn = applyOn2;
22
		this.newValue = newValue2;
23
		this.newValue = newValue2;
23
	}
24
	}
24
25
25
	public RequiredCapability applyOn() {
26
	public IRequiredCapability applyOn() {
26
		return applyOn;
27
		return applyOn;
27
	}
28
	}
28
29
29
	public RequiredCapability newValue() {
30
	public IRequiredCapability newValue() {
30
		return newValue;
31
		return newValue;
31
	}
32
	}
32
33
33
	public boolean matches(RequiredCapability toMatch) {
34
	public boolean matches(IRequiredCapability toMatch) {
34
		if (!toMatch.getNamespace().equals(applyOn.getNamespace()))
35
		if (!toMatch.getNamespace().equals(applyOn.getNamespace()))
35
			return false;
36
			return false;
36
		if (!toMatch.getName().equals(applyOn.getName()))
37
		if (!toMatch.getName().equals(applyOn.getName()))
(-)src/org/eclipse/equinox/internal/p2/director/Slicer.java (-7 / +11 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.director;
9
package org.eclipse.equinox.internal.p2.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import java.util.*;
15
import java.util.*;
12
import org.eclipse.core.runtime.*;
16
import org.eclipse.core.runtime.*;
13
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
17
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
Lines 86-92 Link Here
86
	}
90
	}
87
91
88
	// Check whether the requirement is applicable
92
	// Check whether the requirement is applicable
89
	private boolean isApplicable(RequiredCapability req) {
93
	private boolean isApplicable(IRequiredCapability req) {
90
		String filter = req.getFilter();
94
		String filter = req.getFilter();
91
		if (filter == null)
95
		if (filter == null)
92
			return true;
96
			return true;
Lines 116-122 Link Here
116
			return;
120
			return;
117
		}
121
		}
118
122
119
		RequiredCapability[] reqs = getRequiredCapabilities(iu);
123
		IRequiredCapability[] reqs = getRequiredCapabilities(iu);
120
		if (reqs.length == 0) {
124
		if (reqs.length == 0) {
121
			return;
125
			return;
122
		}
126
		}
Lines 132-146 Link Here
132
		}
136
		}
133
	}
137
	}
134
138
135
	private RequiredCapability[] getRequiredCapabilities(IInstallableUnit iu) {
139
	private IRequiredCapability[] getRequiredCapabilities(IInstallableUnit iu) {
136
		if (!(iu instanceof IInstallableUnitPatch)) {
140
		if (!(iu instanceof IInstallableUnitPatch)) {
137
			return iu.getRequiredCapabilities();
141
			return iu.getRequiredCapabilities();
138
		}
142
		}
139
		RequiredCapability[] aggregatedCapabilities;
143
		IRequiredCapability[] aggregatedCapabilities;
140
		IInstallableUnitPatch patchIU = (IInstallableUnitPatch) iu;
144
		IInstallableUnitPatch patchIU = (IInstallableUnitPatch) iu;
141
		RequirementChange[] changes = patchIU.getRequirementsChange();
145
		IRequirementChange[] changes = patchIU.getRequirementsChange();
142
		int initialRequirementCount = iu.getRequiredCapabilities().length;
146
		int initialRequirementCount = iu.getRequiredCapabilities().length;
143
		aggregatedCapabilities = new RequiredCapability[initialRequirementCount + changes.length];
147
		aggregatedCapabilities = new IRequiredCapability[initialRequirementCount + changes.length];
144
		System.arraycopy(iu.getRequiredCapabilities(), 0, aggregatedCapabilities, 0, initialRequirementCount);
148
		System.arraycopy(iu.getRequiredCapabilities(), 0, aggregatedCapabilities, 0, initialRequirementCount);
145
		for (int i = 0; i < changes.length; i++) {
149
		for (int i = 0; i < changes.length; i++) {
146
			aggregatedCapabilities[initialRequirementCount++] = changes[i].newValue();
150
			aggregatedCapabilities[initialRequirementCount++] = changes[i].newValue();
Lines 148-154 Link Here
148
		return aggregatedCapabilities;
152
		return aggregatedCapabilities;
149
	}
153
	}
150
154
151
	private void expandRequirement(IInstallableUnit iu, RequiredCapability req) {
155
	private void expandRequirement(IInstallableUnit iu, IRequiredCapability req) {
152
		Collector matches = possibilites.query(new CapabilityQuery(req), new Collector(), null);
156
		Collector matches = possibilites.query(new CapabilityQuery(req), new Collector(), null);
153
		int validMatches = 0;
157
		int validMatches = 0;
154
		for (Iterator iterator = matches.iterator(); iterator.hasNext();) {
158
		for (Iterator iterator = matches.iterator(); iterator.hasNext();) {
(-)src/org/eclipse/equinox/internal/p2/director/IUTransformationHelper.java (-4 / +6 lines)
Lines 8-30 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.director;
9
package org.eclipse.equinox.internal.p2.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import java.util.ArrayList;
13
import java.util.ArrayList;
12
import java.util.Iterator;
14
import java.util.Iterator;
13
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
15
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
15
17
16
public class IUTransformationHelper {
18
public class IUTransformationHelper {
17
	static public RequiredCapability[] toRequirements(Iterator ius, boolean optional) {
19
	static public IRequiredCapability[] toRequirements(Iterator ius, boolean optional) {
18
		ArrayList result = new ArrayList();
20
		ArrayList result = new ArrayList();
19
		while (ius.hasNext()) {
21
		while (ius.hasNext()) {
20
			IInstallableUnit current = (IInstallableUnit) ius.next();
22
			IInstallableUnit current = (IInstallableUnit) ius.next();
21
			result.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, current.getId(), new VersionRange(current.getVersion(), true, current.getVersion(), true), null, optional, false));
23
			result.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, current.getId(), new VersionRange(current.getVersion(), true, current.getVersion(), true), null, optional, false));
22
		}
24
		}
23
		return (RequiredCapability[]) result.toArray(new RequiredCapability[result.size()]);
25
		return (IRequiredCapability[]) result.toArray(new IRequiredCapability[result.size()]);
24
	}
26
	}
25
27
26
	static public RequiredCapability[] toRequirements(IInstallableUnit[] ius, boolean optional) {
28
	static public IRequiredCapability[] toRequirements(IInstallableUnit[] ius, boolean optional) {
27
		RequiredCapability[] result = new RequiredCapability[ius.length];
29
		IRequiredCapability[] result = new IRequiredCapability[ius.length];
28
		for (int i = 0; i < result.length; i++) {
30
		for (int i = 0; i < result.length; i++) {
29
			IInstallableUnit current = ius[i];
31
			IInstallableUnit current = ius[i];
30
			result[i] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, current.getId(), new VersionRange(current.getVersion(), true, current.getVersion(), true), null, optional, false);
32
			result[i] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, current.getId(), new VersionRange(current.getVersion(), true, current.getVersion(), true), null, optional, false);
(-)src/org/eclipse/equinox/internal/p2/director/QueryableArray.java (-5 / +9 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.director;
11
package org.eclipse.equinox.internal.p2.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.util.*;
17
import java.util.*;
14
import org.eclipse.core.runtime.IProgressMonitor;
18
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
Lines 19-27 Link Here
19
public class QueryableArray implements IQueryable {
23
public class QueryableArray implements IQueryable {
20
	static class IUCapability {
24
	static class IUCapability {
21
		final IInstallableUnit iu;
25
		final IInstallableUnit iu;
22
		final ProvidedCapability capability;
26
		final IProvidedCapability capability;
23
27
24
		public IUCapability(IInstallableUnit iu, ProvidedCapability capability) {
28
		public IUCapability(IInstallableUnit iu, IProvidedCapability capability) {
25
			this.iu = iu;
29
			this.iu = iu;
26
			this.capability = capability;
30
			this.capability = capability;
27
		}
31
		}
Lines 43-49 Link Here
43
	private Collector queryCapability(CapabilityQuery query, Collector collector, IProgressMonitor monitor) {
47
	private Collector queryCapability(CapabilityQuery query, Collector collector, IProgressMonitor monitor) {
44
		generateNamedCapabilityIndex();
48
		generateNamedCapabilityIndex();
45
49
46
		RequiredCapability[] requiredCapabilities = query.getRequiredCapabilities();
50
		IRequiredCapability[] requiredCapabilities = query.getRequiredCapabilities();
47
		Collection resultIUs = null;
51
		Collection resultIUs = null;
48
		for (int i = 0; i < requiredCapabilities.length; i++) {
52
		for (int i = 0; i < requiredCapabilities.length; i++) {
49
			Collection matchingIUs = findMatchingIUs(requiredCapabilities[i]);
53
			Collection matchingIUs = findMatchingIUs(requiredCapabilities[i]);
Lines 61-67 Link Here
61
		return collector;
65
		return collector;
62
	}
66
	}
63
67
64
	private Collection findMatchingIUs(RequiredCapability requiredCapability) {
68
	private Collection findMatchingIUs(IRequiredCapability requiredCapability) {
65
		List iuCapabilities = (List) namedCapabilityIndex.get(requiredCapability.getName());
69
		List iuCapabilities = (List) namedCapabilityIndex.get(requiredCapability.getName());
66
		if (iuCapabilities == null)
70
		if (iuCapabilities == null)
67
			return null;
71
			return null;
Lines 83-89 Link Here
83
		for (Iterator iterator = dataSet.iterator(); iterator.hasNext();) {
87
		for (Iterator iterator = dataSet.iterator(); iterator.hasNext();) {
84
			IInstallableUnit iu = (IInstallableUnit) iterator.next();
88
			IInstallableUnit iu = (IInstallableUnit) iterator.next();
85
89
86
			ProvidedCapability[] providedCapabilities = iu.getProvidedCapabilities();
90
			IProvidedCapability[] providedCapabilities = iu.getProvidedCapabilities();
87
			for (int i = 0; i < providedCapabilities.length; i++) {
91
			for (int i = 0; i < providedCapabilities.length; i++) {
88
				String name = providedCapabilities[i].getName();
92
				String name = providedCapabilities[i].getName();
89
				List iuCapabilities = (List) namedCapabilityIndex.get(name);
93
				List iuCapabilities = (List) namedCapabilityIndex.get(name);
(-)src/org/eclipse/equinox/internal/p2/director/NewDependencyExpander.java (-24 / +36 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.internal.p2.director;
11
package org.eclipse.equinox.internal.p2.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
20
21
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
22
23
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
24
13
import java.util.*;
25
import java.util.*;
14
import org.eclipse.core.runtime.*;
26
import org.eclipse.core.runtime.*;
15
import org.eclipse.equinox.internal.p2.resolution.ResolutionHelper;
27
import org.eclipse.equinox.internal.p2.resolution.ResolutionHelper;
Lines 37-45 Link Here
37
		 * The environment against which capability filters are evaluated for this match.
49
		 * The environment against which capability filters are evaluated for this match.
38
		 */
50
		 */
39
		Dictionary env;
51
		Dictionary env;
40
		RequiredCapability req;
52
		IRequiredCapability req;
41
53
42
		public Match(RequiredCapability range, Dictionary environment) {
54
		public Match(IRequiredCapability range, Dictionary environment) {
43
			this.req = range;
55
			this.req = range;
44
			this.env = environment;
56
			this.env = environment;
45
			candidates = new HashSet(2);
57
			candidates = new HashSet(2);
Lines 63-69 Link Here
63
		String name;
75
		String name;
64
		String namespace;
76
		String namespace;
65
77
66
		MatchKey(RequiredCapability capability) {
78
		MatchKey(IRequiredCapability capability) {
67
			this.namespace = capability.getNamespace();
79
			this.namespace = capability.getNamespace();
68
			this.name = capability.getName();
80
			this.name = capability.getName();
69
		}
81
		}
Lines 126-139 Link Here
126
			return true;
138
			return true;
127
		}
139
		}
128
140
129
		public RequiredCapability[] getRequiredCapabilities() {
141
		public IRequiredCapability[] getRequiredCapabilities() {
130
			ArrayList result = new ArrayList();
142
			ArrayList result = new ArrayList();
131
			ProvidedCapability[] caps = wrapped.getProvidedCapabilities();
143
			IProvidedCapability[] caps = wrapped.getProvidedCapabilities();
132
			for (int i = 0; i < caps.length; i++) {
144
			for (int i = 0; i < caps.length; i++) {
133
				result.add(MetadataFactory.createRequiredCapability(caps[i].getNamespace(), caps[i].getName(), new VersionRange(caps[i].getVersion(), true, caps[i].getVersion(), true), wrapped.getFilter(), optionalReqs, false));
145
				result.add(MetadataFactory.createRequiredCapability(caps[i].getNamespace(), caps[i].getName(), new VersionRange(caps[i].getVersion(), true, caps[i].getVersion(), true), wrapped.getFilter(), optionalReqs, false));
134
			}
146
			}
135
			result.addAll(Arrays.asList(wrapped.getRequiredCapabilities()));
147
			result.addAll(Arrays.asList(wrapped.getRequiredCapabilities()));
136
			return (RequiredCapability[]) result.toArray(new RequiredCapability[result.size()]);
148
			return (IRequiredCapability[]) result.toArray(new IRequiredCapability[result.size()]);
137
		}
149
		}
138
150
139
		public int hashCode() {
151
		public int hashCode() {
Lines 155-169 Link Here
155
			return wrapped.getProperties();
167
			return wrapped.getProperties();
156
		}
168
		}
157
169
158
		public ProvidedCapability[] getProvidedCapabilities() {
170
		public IProvidedCapability[] getProvidedCapabilities() {
159
			return wrapped.getProvidedCapabilities();
171
			return wrapped.getProvidedCapabilities();
160
		}
172
		}
161
173
162
		public TouchpointData[] getTouchpointData() {
174
		public ITouchpointData[] getTouchpointData() {
163
			return wrapped.getTouchpointData();
175
			return wrapped.getTouchpointData();
164
		}
176
		}
165
177
166
		public TouchpointType getTouchpointType() {
178
		public ITouchpointType getTouchpointType() {
167
			return wrapped.getTouchpointType();
179
			return wrapped.getTouchpointType();
168
		}
180
		}
169
181
Lines 195-209 Link Here
195
			return wrapped.getUpdateDescriptor();
207
			return wrapped.getUpdateDescriptor();
196
		}
208
		}
197
209
198
		public License getLicense() {
210
		public ILicense getLicense() {
199
			return wrapped.getLicense();
211
			return wrapped.getLicense();
200
		}
212
		}
201
213
202
		public Copyright getCopyright() {
214
		public ICopyright getCopyright() {
203
			return wrapped.getCopyright();
215
			return wrapped.getCopyright();
204
		}
216
		}
205
217
206
		public boolean satisfies(RequiredCapability candidate) {
218
		public boolean satisfies(IRequiredCapability candidate) {
207
			return wrapped.satisfies(candidate);
219
			return wrapped.satisfies(candidate);
208
		}
220
		}
209
	}
221
	}
Lines 254-263 Link Here
254
	/**
266
	/**
255
	 * Creates a problem status for the given unsatisfied dependency.
267
	 * Creates a problem status for the given unsatisfied dependency.
256
	 */
268
	 */
257
	private void addUnsatisfied(RequiredCapability req, Collection toAdd, MultiStatus problems) {
269
	private void addUnsatisfied(IRequiredCapability req, Collection toAdd, MultiStatus problems) {
258
		for (Iterator it = toAdd.iterator(); it.hasNext();) {
270
		for (Iterator it = toAdd.iterator(); it.hasNext();) {
259
			IInstallableUnit unit = (IInstallableUnit) it.next();
271
			IInstallableUnit unit = (IInstallableUnit) it.next();
260
			RequiredCapability[] required = unit.getRequiredCapabilities();
272
			IRequiredCapability[] required = unit.getRequiredCapabilities();
261
			for (int i = 0; i < required.length; i++) {
273
			for (int i = 0; i < required.length; i++) {
262
				if (required[i].equals(req)) {
274
				if (required[i].equals(req)) {
263
					UnsatisfiedCapability unsatisfied = new UnsatisfiedCapability(req, unit);
275
					UnsatisfiedCapability unsatisfied = new UnsatisfiedCapability(req, unit);
Lines 327-333 Link Here
327
		String flavor = (String) selectionContext.get(IProfile.PROP_ENVIRONMENTS);
339
		String flavor = (String) selectionContext.get(IProfile.PROP_ENVIRONMENTS);
328
		if (flavor == null)
340
		if (flavor == null)
329
			return new HashSet();
341
			return new HashSet();
330
		IInstallableUnit[][] picked = picker.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_FLAVOR, flavor, VersionRange.emptyRange, null, false, false)}, true /* fragmentsOnly */);
342
		IInstallableUnit[][] picked = picker.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_FLAVOR, flavor, VersionRange.emptyRange, null, false, false)}, true /* fragmentsOnly */);
331
		IInstallableUnit[] ius;
343
		IInstallableUnit[] ius;
332
		if (picked[0].length > 0)
344
		if (picked[0].length > 0)
333
			ius = picked[0];
345
			ius = picked[0];
Lines 346-352 Link Here
346
		Set picked = new HashSet();
358
		Set picked = new HashSet();
347
		for (Iterator iterator = ius.iterator(); iterator.hasNext();) {
359
		for (Iterator iterator = ius.iterator(); iterator.hasNext();) {
348
			IInstallableUnit current = (IInstallableUnit) iterator.next();
360
			IInstallableUnit current = (IInstallableUnit) iterator.next();
349
			IInstallableUnit[][] candidates = picker.findInstallableUnit(null, null, new RequiredCapability[] {MetadataFactory.createRequiredCapability("fragment", current.getId(), VersionRange.emptyRange, null, true, false)}, false /* not fragmentsOnly */); //$NON-NLS-1$
361
			IInstallableUnit[][] candidates = picker.findInstallableUnit(null, null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability("fragment", current.getId(), VersionRange.emptyRange, null, true, false)}, false /* not fragmentsOnly */); //$NON-NLS-1$
350
			IInstallableUnit[] matches = candidates[0].length > 0 ? candidates[0] : candidates[1];
362
			IInstallableUnit[] matches = candidates[0].length > 0 ? candidates[0] : candidates[1];
351
			if (matches.length > 0) { //TODO Here we need to check the filter of the found iu
363
			if (matches.length > 0) { //TODO Here we need to check the filter of the found iu
352
				if (matches.length == 1) {
364
				if (matches.length == 1) {
Lines 354-363 Link Here
354
					continue;
366
					continue;
355
				}
367
				}
356
				//verify that each IU requires the current iu
368
				//verify that each IU requires the current iu
357
				ProvidedCapability capForCurrent = MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, current.getId(), current.getVersion());
369
				IProvidedCapability capForCurrent = MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, current.getId(), current.getVersion());
358
				Map toAdd = new HashMap();
370
				Map toAdd = new HashMap();
359
				for (int i = 0; i < matches.length; i++) {
371
				for (int i = 0; i < matches.length; i++) {
360
					RequiredCapability[] reqs = matches[i].getRequiredCapabilities();
372
					IRequiredCapability[] reqs = matches[i].getRequiredCapabilities();
361
					boolean isReallyAFragment = false;
373
					boolean isReallyAFragment = false;
362
					for (int j = 0; j < reqs.length; j++) {
374
					for (int j = 0; j < reqs.length; j++) {
363
						isReallyAFragment = capForCurrent.satisfies(reqs[j]);
375
						isReallyAFragment = capForCurrent.satisfies(reqs[j]);
Lines 477-485 Link Here
477
		//map of MatchKey->Match
489
		//map of MatchKey->Match
478
		for (Iterator iterator = ius.iterator(); iterator.hasNext();) {
490
		for (Iterator iterator = ius.iterator(); iterator.hasNext();) {
479
			IInstallableUnit currentUnit = (IInstallableUnit) iterator.next();
491
			IInstallableUnit currentUnit = (IInstallableUnit) iterator.next();
480
			RequiredCapability[] toAdd = currentUnit.getRequiredCapabilities();
492
			IRequiredCapability[] toAdd = currentUnit.getRequiredCapabilities();
481
			outer: for (int i = 0; i < toAdd.length; i++) {
493
			outer: for (int i = 0; i < toAdd.length; i++) {
482
				RequiredCapability current = toAdd[i];
494
				IRequiredCapability current = toAdd[i];
483
				if (isApplicable(current) && !isMeta(current) && !current.isOptional()) {
495
				if (isApplicable(current) && !isMeta(current) && !current.isOptional()) {
484
					MatchKey key = new MatchKey(current);
496
					MatchKey key = new MatchKey(current);
485
					List match = (List) must.get(key);
497
					List match = (List) must.get(key);
Lines 584-590 Link Here
584
	}
596
	}
585
597
586
	// Check whether the requirement is applicable
598
	// Check whether the requirement is applicable
587
	private boolean isApplicable(RequiredCapability req) {
599
	private boolean isApplicable(IRequiredCapability req) {
588
		String filter = req.getFilter();
600
		String filter = req.getFilter();
589
		if (filter == null)
601
		if (filter == null)
590
			return true;
602
			return true;
Lines 600-606 Link Here
600
	 * about inter-component dependencies, we end up having dependencies that cause
612
	 * about inter-component dependencies, we end up having dependencies that cause
601
	 * the whole world to be selected. We are here filtering them out.
613
	 * the whole world to be selected. We are here filtering them out.
602
	 */
614
	 */
603
	private boolean isMeta(RequiredCapability requiredCapability) {
615
	private boolean isMeta(IRequiredCapability requiredCapability) {
604
		String namespace = requiredCapability.getNamespace();
616
		String namespace = requiredCapability.getNamespace();
605
		//TODO Should not reference OSGi touchpoint concepts here
617
		//TODO Should not reference OSGi touchpoint concepts here
606
		return namespace.equals("org.eclipse.equinox.p2.eclipse.type") || namespace.equals(IInstallableUnit.NAMESPACE_FLAVOR); //$NON-NLS-1$
618
		return namespace.equals("org.eclipse.equinox.p2.eclipse.type") || namespace.equals(IInstallableUnit.NAMESPACE_FLAVOR); //$NON-NLS-1$
Lines 614-620 Link Here
614
		return null;
626
		return null;
615
	}
627
	}
616
628
617
	private Dictionary mergeEnvironments(Dictionary context, RequiredCapability newCapability) {
629
	private Dictionary mergeEnvironments(Dictionary context, IRequiredCapability newCapability) {
618
		String[] newSelectors = newCapability.getSelectors();
630
		String[] newSelectors = newCapability.getSelectors();
619
		if (newSelectors == null || newSelectors.length == 0)
631
		if (newSelectors == null || newSelectors.length == 0)
620
			return context;
632
			return context;
Lines 635-641 Link Here
635
		return false;
647
		return false;
636
	}
648
	}
637
649
638
	private boolean requirementEnabled(RequiredCapability req) {
650
	private boolean requirementEnabled(IRequiredCapability req) {
639
		if (req.isOptional())
651
		if (req.isOptional())
640
			return false;
652
			return false;
641
		return isApplicable(req);
653
		return isApplicable(req);
(-)src/org/eclipse/equinox/internal/p2/director/RecommendationDescriptor.java (-2 / +3 lines)
Lines 8-18 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.director;
9
package org.eclipse.equinox.internal.p2.director;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import java.util.*;
13
import java.util.*;
12
import org.eclipse.core.runtime.*;
14
import org.eclipse.core.runtime.*;
13
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
15
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
16
17
17
public class RecommendationDescriptor {
18
public class RecommendationDescriptor {
18
	public static final String TOUCHPOINT_DATA_KEY = "recommendations";
19
	public static final String TOUCHPOINT_DATA_KEY = "recommendations";
Lines 28-34 Link Here
28
		return recommendations;
29
		return recommendations;
29
	}
30
	}
30
31
31
	public Recommendation findRecommendation(RequiredCapability toMatch) {
32
	public Recommendation findRecommendation(IRequiredCapability toMatch) {
32
		for (Iterator iterator = recommendations.iterator(); iterator.hasNext();) {
33
		for (Iterator iterator = recommendations.iterator(); iterator.hasNext();) {
33
			Recommendation name = (Recommendation) iterator.next();
34
			Recommendation name = (Recommendation) iterator.next();
34
			if (name.matches(toMatch))
35
			if (name.matches(toMatch))
(-)src/org/eclipse/equinox/internal/p2/director/Picker.java (-8 / +12 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.director;
11
package org.eclipse.equinox.internal.p2.director;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.util.*;
17
import java.util.*;
14
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
18
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
Lines 36-43 Link Here
36
		this.filters = new ArrayList(2);
40
		this.filters = new ArrayList(2);
37
	}
41
	}
38
42
39
	public Collection[] findInstallableUnit(String id, VersionRange range, RequiredCapability searchedCapability) {
43
	public Collection[] findInstallableUnit(String id, VersionRange range, IRequiredCapability searchedCapability) {
40
		IInstallableUnit[][] tmp = findInstallableUnit(id, range, new RequiredCapability[] {searchedCapability}, false);
44
		IInstallableUnit[][] tmp = findInstallableUnit(id, range, new IRequiredCapability[] {searchedCapability}, false);
41
		return new Collection[] {Arrays.asList(tmp[0]), Arrays.asList(tmp[1])};
45
		return new Collection[] {Arrays.asList(tmp[0]), Arrays.asList(tmp[1])};
42
	}
46
	}
43
47
Lines 62-75 Link Here
62
		secondChoiceSet = (IInstallableUnit[]) secondChoice.toArray(new IInstallableUnit[secondChoice.size()]);
66
		secondChoiceSet = (IInstallableUnit[]) secondChoice.toArray(new IInstallableUnit[secondChoice.size()]);
63
	}
67
	}
64
68
65
	public IInstallableUnit[][] findInstallableUnit(String id, VersionRange range, RequiredCapability[] searchedCapability, boolean fragmentsOnly) {
69
	public IInstallableUnit[][] findInstallableUnit(String id, VersionRange range, IRequiredCapability[] searchedCapability, boolean fragmentsOnly) {
66
		return new IInstallableUnit[][] {findInstallableUnit(preferredSet, id, range, searchedCapability, fragmentsOnly), findInstallableUnit(secondChoiceSet, id, range, searchedCapability, fragmentsOnly)};
70
		return new IInstallableUnit[][] {findInstallableUnit(preferredSet, id, range, searchedCapability, fragmentsOnly), findInstallableUnit(secondChoiceSet, id, range, searchedCapability, fragmentsOnly)};
67
	}
71
	}
68
72
69
	//TODO what should be the return value when all the parameters are null. Is it even a valid call?
73
	//TODO what should be the return value when all the parameters are null. Is it even a valid call?
70
	//TODO A lot of improvement could be done on this algorithm, for example
74
	//TODO A lot of improvement could be done on this algorithm, for example
71
	// - remove from the set of searchedCapability the one that are found
75
	// - remove from the set of searchedCapability the one that are found
72
	private IInstallableUnit[] findInstallableUnit(IInstallableUnit[] pool, String id, VersionRange range, RequiredCapability[] searchedCapability, boolean fragmentsOnly) {
76
	private IInstallableUnit[] findInstallableUnit(IInstallableUnit[] pool, String id, VersionRange range, IRequiredCapability[] searchedCapability, boolean fragmentsOnly) {
73
		if (pool == null || pool.length == 0)
77
		if (pool == null || pool.length == 0)
74
			return new IInstallableUnit[0];
78
			return new IInstallableUnit[0];
75
		Set candidates = new HashSet();
79
		Set candidates = new HashSet();
Lines 90-96 Link Here
90
				IInstallableUnit candidate = pool[i];
94
				IInstallableUnit candidate = pool[i];
91
				for (int k = 0; k < searchedCapability.length; k++) {
95
				for (int k = 0; k < searchedCapability.length; k++) {
92
					boolean valid = false;
96
					boolean valid = false;
93
					ProvidedCapability[] capabilities = candidate.getProvidedCapabilities();
97
					IProvidedCapability[] capabilities = candidate.getProvidedCapabilities();
94
					if (capabilities.length == 0)
98
					if (capabilities.length == 0)
95
						valid = false;
99
						valid = false;
96
					for (int j = 0; j < capabilities.length; j++) {
100
					for (int j = 0; j < capabilities.length; j++) {
Lines 110-119 Link Here
110
		return pool;
114
		return pool;
111
	}
115
	}
112
116
113
	private RequiredCapability[] rewrite(RequiredCapability[] requiredCapabilities) {
117
	private IRequiredCapability[] rewrite(IRequiredCapability[] requiredCapabilities) {
114
		if (recommendations == null)
118
		if (recommendations == null)
115
			return requiredCapabilities;
119
			return requiredCapabilities;
116
		RequiredCapability[] result = new RequiredCapability[requiredCapabilities.length];
120
		IRequiredCapability[] result = new IRequiredCapability[requiredCapabilities.length];
117
		for (int i = 0; i < requiredCapabilities.length; i++) {
121
		for (int i = 0; i < requiredCapabilities.length; i++) {
118
			result[i] = getRecommendation(requiredCapabilities[i]);
122
			result[i] = getRecommendation(requiredCapabilities[i]);
119
			if (result[i] == null)
123
			if (result[i] == null)
Lines 122-128 Link Here
122
		return result;
126
		return result;
123
	}
127
	}
124
128
125
	private RequiredCapability getRecommendation(RequiredCapability match) {
129
	private IRequiredCapability getRecommendation(IRequiredCapability match) {
126
		Recommendation foundRecommendation = recommendations.findRecommendation(match);
130
		Recommendation foundRecommendation = recommendations.findRecommendation(match);
127
		return foundRecommendation != null ? foundRecommendation.newValue() : match;
131
		return foundRecommendation != null ? foundRecommendation.newValue() : match;
128
	}
132
	}
(-)src/org/eclipse/equinox/internal/p2/resolution/Transformer.java (-6 / +10 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.resolution;
11
package org.eclipse.equinox.internal.p2.resolution;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.util.*;
17
import java.util.*;
14
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.Status;
19
import org.eclipse.core.runtime.Status;
Lines 59-65 Link Here
59
		return result;
63
		return result;
60
	}
64
	}
61
65
62
	private boolean isEnabled(RequiredCapability capability) {
66
	private boolean isEnabled(IRequiredCapability capability) {
63
		// If there is no context then be optimistic
67
		// If there is no context then be optimistic
64
		if (context == null)
68
		if (context == null)
65
			return true;
69
			return true;
Lines 89-95 Link Here
89
		return buf.toString();
93
		return buf.toString();
90
	}
94
	}
91
95
92
	public void visitCapability(ProvidedCapability capability) {
96
	public void visitCapability(IProvidedCapability capability) {
93
		iuCapabilities.add(factory.createGenericDescription(capability.getName(), capability.getNamespace(), Version.toOSGiVersion(capability.getVersion()), null));
97
		iuCapabilities.add(factory.createGenericDescription(capability.getName(), capability.getNamespace(), Version.toOSGiVersion(capability.getVersion()), null));
94
	}
98
	}
95
99
Lines 97-110 Link Here
97
		kind = IU_KIND;
101
		kind = IU_KIND;
98
102
99
		//Start with the dependencies
103
		//Start with the dependencies
100
		RequiredCapability[] requires = toTransform.getRequiredCapabilities();
104
		IRequiredCapability[] requires = toTransform.getRequiredCapabilities();
101
		iuDependencies = new HashMap(requires.length);
105
		iuDependencies = new HashMap(requires.length);
102
		for (int i = 0; i < requires.length; i++) {
106
		for (int i = 0; i < requires.length; i++) {
103
			visitRequiredCapability(requires[i]);
107
			visitRequiredCapability(requires[i]);
104
		}
108
		}
105
109
106
		//Do the capabilities
110
		//Do the capabilities
107
		ProvidedCapability[] capabilities = toTransform.getProvidedCapabilities();
111
		IProvidedCapability[] capabilities = toTransform.getProvidedCapabilities();
108
		iuCapabilities = new ArrayList(requires.length + 1);
112
		iuCapabilities = new ArrayList(requires.length + 1);
109
		for (int i = 0; i < capabilities.length; i++) {
113
		for (int i = 0; i < capabilities.length; i++) {
110
			visitCapability(capabilities[i]);
114
			visitCapability(capabilities[i]);
Lines 125-131 Link Here
125
		result.setUserObject(new StateMetadataMap(toTransform, iuDependencies));
129
		result.setUserObject(new StateMetadataMap(toTransform, iuDependencies));
126
	}
130
	}
127
131
128
	public void visitRequiredCapability(RequiredCapability capability) {
132
	public void visitRequiredCapability(IRequiredCapability capability) {
129
		try {
133
		try {
130
			if (isEnabled(capability)) {
134
			if (isEnabled(capability)) {
131
				capability = rewrite(capability);
135
				capability = rewrite(capability);
Lines 136-142 Link Here
136
		}
140
		}
137
	}
141
	}
138
142
139
	private RequiredCapability rewrite(RequiredCapability match) {
143
	private IRequiredCapability rewrite(IRequiredCapability match) {
140
		if (recommendations == null)
144
		if (recommendations == null)
141
			return match;
145
			return match;
142
		Recommendation foundRecommendation = recommendations.findRecommendation(match);
146
		Recommendation foundRecommendation = recommendations.findRecommendation(match);
(-)src/org/eclipse/equinox/internal/p2/resolution/ResolutionHelper.java (-2 / +4 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.resolution;
11
package org.eclipse.equinox.internal.p2.resolution;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.util.*;
15
import java.util.*;
14
import org.eclipse.equinox.internal.p2.director.DirectorActivator;
16
import org.eclipse.equinox.internal.p2.director.DirectorActivator;
15
import org.eclipse.equinox.internal.p2.director.RecommendationDescriptor;
17
import org.eclipse.equinox.internal.p2.director.RecommendationDescriptor;
Lines 92-98 Link Here
92
	private ArrayList createUnsatisfiedCapabilities(VersionConstraint[] unsatisfied, BundleDescription description) {
94
	private ArrayList createUnsatisfiedCapabilities(VersionConstraint[] unsatisfied, BundleDescription description) {
93
		ArrayList results = new ArrayList();
95
		ArrayList results = new ArrayList();
94
		for (int i = 0; i < unsatisfied.length; i++) {
96
		for (int i = 0; i < unsatisfied.length; i++) {
95
			RequiredCapability originalDependency = (RequiredCapability) ((StateMetadataMap) description.getUserObject()).getGenericSpecifications().get(unsatisfied[i]);
97
			IRequiredCapability originalDependency = (IRequiredCapability) ((StateMetadataMap) description.getUserObject()).getGenericSpecifications().get(unsatisfied[i]);
96
			results.add(new UnsatisfiedCapability(originalDependency, ((StateMetadataMap) description.getUserObject()).getUnit()));
98
			results.add(new UnsatisfiedCapability(originalDependency, ((StateMetadataMap) description.getUserObject()).getUnit()));
97
		}
99
		}
98
		return results;
100
		return results;
Lines 133-139 Link Here
133
				IInstallableUnitFragment potentialFragment = (IInstallableUnitFragment) dependentIU;
135
				IInstallableUnitFragment potentialFragment = (IInstallableUnitFragment) dependentIU;
134
136
135
				// Check to make sure the host meets the requirements of the fragment
137
				// Check to make sure the host meets the requirements of the fragment
136
				RequiredCapability reqsFromFragment[] = potentialFragment.getHost();
138
				IRequiredCapability reqsFromFragment[] = potentialFragment.getHost();
137
				boolean match = true;
139
				boolean match = true;
138
				boolean requirementMatched = false;
140
				boolean requirementMatched = false;
139
				for (int l = 0; l < reqsFromFragment.length && match == true; l++) {
141
				for (int l = 0; l < reqsFromFragment.length && match == true; l++) {
(-)src/org/eclipse/equinox/internal/p2/resolution/UnsatisfiedCapability.java (-4 / +5 lines)
Lines 10-18 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.resolution;
11
package org.eclipse.equinox.internal.p2.resolution;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.equinox.internal.p2.director.Messages;
15
import org.eclipse.equinox.internal.p2.director.Messages;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
16
import org.eclipse.osgi.util.NLS;
17
import org.eclipse.osgi.util.NLS;
17
18
18
/**
19
/**
Lines 21-34 Link Here
21
 */
22
 */
22
public class UnsatisfiedCapability {
23
public class UnsatisfiedCapability {
23
	private IInstallableUnit owner;
24
	private IInstallableUnit owner;
24
	private RequiredCapability require;
25
	private IRequiredCapability require;
25
26
26
	/**
27
	/**
27
	 * Creates a new unresolved dependency
28
	 * Creates a new unresolved dependency
28
	 * @param required The dependency that was not satisfied.
29
	 * @param required The dependency that was not satisfied.
29
	 * @param owner The installable unit whose dependency was not satisfied.
30
	 * @param owner The installable unit whose dependency was not satisfied.
30
	 */
31
	 */
31
	public UnsatisfiedCapability(RequiredCapability required, IInstallableUnit owner) {
32
	public UnsatisfiedCapability(IRequiredCapability required, IInstallableUnit owner) {
32
		this.require = required;
33
		this.require = required;
33
		this.owner = owner;
34
		this.owner = owner;
34
	}
35
	}
Lines 40-46 Link Here
40
	/**
41
	/**
41
	 * Returns the specific dependency that was not satisfied.
42
	 * Returns the specific dependency that was not satisfied.
42
	 */
43
	 */
43
	public RequiredCapability getRequiredCapability() {
44
	public IRequiredCapability getRequiredCapability() {
44
		return require;
45
		return require;
45
	}
46
	}
46
47
(-)src/org/eclipse/equinox/p2/publisher/actions/JREAction.java (-5 / +9 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.actions;
11
package org.eclipse.equinox.p2.publisher.actions;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IProgressMonitor;
14
18
15
import java.io.*;
19
import java.io.*;
Lines 52-60 Link Here
52
		String configId = "config." + id;//$NON-NLS-1$
56
		String configId = "config." + id;//$NON-NLS-1$
53
		cu.setId(configId);
57
		cu.setId(configId);
54
		cu.setVersion(version);
58
		cu.setVersion(version);
55
		cu.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, id, new VersionRange(version, true, PublisherHelper.versionMax, true), null, false, false)});
59
		cu.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, id, new VersionRange(version, true, PublisherHelper.versionMax, true), null, false, false)});
56
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
60
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
57
		cu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(configId, version)});
61
		cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configId, version)});
58
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
62
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
59
		Map touchpointData = new HashMap();
63
		Map touchpointData = new HashMap();
60
64
Lines 88-94 Link Here
88
		return PublisherHelper.createArtifactDescriptor(key, jreLocation);
92
		return PublisherHelper.createArtifactDescriptor(key, jreLocation);
89
	}
93
	}
90
94
91
	private static ProvidedCapability[] generateJRECapability(String installableUnitId, Version installableUnitVersion, InputStream profileStream) {
95
	private static IProvidedCapability[] generateJRECapability(String installableUnitId, Version installableUnitVersion, InputStream profileStream) {
92
		if (profileStream == null) {
96
		if (profileStream == null) {
93
			//use the 1.6 profile stored in the generator bundle
97
			//use the 1.6 profile stored in the generator bundle
94
			try {
98
			try {
Lines 101-107 Link Here
101
		try {
105
		try {
102
			p.load(profileStream);
106
			p.load(profileStream);
103
			ManifestElement[] jrePackages = ManifestElement.parseHeader("org.osgi.framework.system.packages", (String) p.get("org.osgi.framework.system.packages")); //$NON-NLS-1$ //$NON-NLS-2$
107
			ManifestElement[] jrePackages = ManifestElement.parseHeader("org.osgi.framework.system.packages", (String) p.get("org.osgi.framework.system.packages")); //$NON-NLS-1$ //$NON-NLS-2$
104
			ProvidedCapability[] exportedPackageAsCapabilities = new ProvidedCapability[jrePackages.length + 1];
108
			IProvidedCapability[] exportedPackageAsCapabilities = new IProvidedCapability[jrePackages.length + 1];
105
			exportedPackageAsCapabilities[0] = PublisherHelper.createSelfCapability(installableUnitId, installableUnitVersion);
109
			exportedPackageAsCapabilities[0] = PublisherHelper.createSelfCapability(installableUnitId, installableUnitVersion);
106
			for (int i = 1; i <= jrePackages.length; i++) {
110
			for (int i = 1; i <= jrePackages.length; i++) {
107
				exportedPackageAsCapabilities[i] = MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, jrePackages[i - 1].getValue(), null);
111
				exportedPackageAsCapabilities[i] = MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, jrePackages[i - 1].getValue(), null);
Lines 122-128 Link Here
122
				}
126
				}
123
			}
127
			}
124
		}
128
		}
125
		return new ProvidedCapability[0];
129
		return new IProvidedCapability[0];
126
	}
130
	}
127
131
128
	private static void generateJREIUData(InstallableUnitDescription iu, String installableUnitId, Version installableUnitVersion, File jreLocation) {
132
	private static void generateJREIUData(InstallableUnitDescription iu, String installableUnitId, Version installableUnitVersion, File jreLocation) {
(-)src/org/eclipse/equinox/p2/publisher/actions/RootIUAction.java (-3 / +9 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.actions;
11
package org.eclipse.equinox.p2.publisher.actions;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
18
13
import java.util.*;
19
import java.util.*;
14
import org.eclipse.core.runtime.*;
20
import org.eclipse.core.runtime.*;
15
import org.eclipse.equinox.internal.p2.publisher.Activator;
21
import org.eclipse.equinox.internal.p2.publisher.Activator;
Lines 66-72 Link Here
66
		Collection allAdvice = info.getAdvice(null, true, id, version, ITouchpointAdvice.class);
72
		Collection allAdvice = info.getAdvice(null, true, id, version, ITouchpointAdvice.class);
67
		if (allAdvice == null || allAdvice.isEmpty())
73
		if (allAdvice == null || allAdvice.isEmpty())
68
			return;
74
			return;
69
		TouchpointData touchpointData = MetadataFactory.createTouchpointData(Collections.EMPTY_MAP);
75
		ITouchpointData touchpointData = MetadataFactory.createTouchpointData(Collections.EMPTY_MAP);
70
		for (Iterator it = allAdvice.iterator(); it.hasNext();)
76
		for (Iterator it = allAdvice.iterator(); it.hasNext();)
71
			touchpointData = ((ITouchpointAdvice) it.next()).getTouchpointData(touchpointData);
77
			touchpointData = ((ITouchpointAdvice) it.next()).getTouchpointData(touchpointData);
72
		descriptor.addTouchpointData(touchpointData);
78
		descriptor.addTouchpointData(touchpointData);
Lines 155-167 Link Here
155
		Collection requiredCapabilities = createIURequirements(children);
161
		Collection requiredCapabilities = createIURequirements(children);
156
		if (requires != null)
162
		if (requires != null)
157
			requiredCapabilities.addAll(requires);
163
			requiredCapabilities.addAll(requires);
158
		root.setRequiredCapabilities((RequiredCapability[]) requiredCapabilities.toArray(new RequiredCapability[requiredCapabilities.size()]));
164
		root.setRequiredCapabilities((IRequiredCapability[]) requiredCapabilities.toArray(new IRequiredCapability[requiredCapabilities.size()]));
159
		root.setArtifacts(new IArtifactKey[0]);
165
		root.setArtifacts(new IArtifactKey[0]);
160
166
161
		root.setProperty("lineUp", "true"); //$NON-NLS-1$ //$NON-NLS-2$
167
		root.setProperty("lineUp", "true"); //$NON-NLS-1$ //$NON-NLS-2$
162
		root.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(id, VersionRange.emptyRange, IUpdateDescriptor.NORMAL, null));
168
		root.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(id, VersionRange.emptyRange, IUpdateDescriptor.NORMAL, null));
163
		root.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
169
		root.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
164
		root.setCapabilities(new ProvidedCapability[] {createSelfCapability(id, version)});
170
		root.setCapabilities(new IProvidedCapability[] {createSelfCapability(id, version)});
165
		// TODO why is the type OSGI?
171
		// TODO why is the type OSGI?
166
		root.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
172
		root.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
167
		return root;
173
		return root;
(-)src/org/eclipse/equinox/p2/publisher/actions/ICapabilityAdvice.java (-4 / +6 lines)
Lines 1-13 Link Here
1
package org.eclipse.equinox.p2.publisher.actions;
1
package org.eclipse.equinox.p2.publisher.actions;
2
2
3
import org.eclipse.equinox.internal.provisional.p2.metadata.ProvidedCapability;
3
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
4
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
4
5
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
6
5
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.InstallableUnitDescription;
7
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.InstallableUnitDescription;
6
import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
8
import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
7
9
8
public interface ICapabilityAdvice extends IPublisherAdvice {
10
public interface ICapabilityAdvice extends IPublisherAdvice {
9
11
10
	public ProvidedCapability[] getProvidedCapabilities(InstallableUnitDescription iu);
12
	public IProvidedCapability[] getProvidedCapabilities(InstallableUnitDescription iu);
11
13
12
	public RequiredCapability[] getRequiredCapabilities(InstallableUnitDescription iu);
14
	public IRequiredCapability[] getRequiredCapabilities(InstallableUnitDescription iu);
13
}
15
}
(-)src/org/eclipse/equinox/p2/publisher/actions/RootFilesAction.java (-4 / +8 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.actions;
11
package org.eclipse.equinox.p2.publisher.actions;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.io.File;
17
import java.io.File;
14
import java.util.*;
18
import java.util.*;
15
import org.eclipse.core.runtime.*;
19
import org.eclipse.core.runtime.*;
Lines 89-96 Link Here
89
		IArtifactKey key = PublisherHelper.createBinaryArtifactKey(iuId, version);
93
		IArtifactKey key = PublisherHelper.createBinaryArtifactKey(iuId, version);
90
		iu.setArtifacts(new IArtifactKey[] {key});
94
		iu.setArtifacts(new IArtifactKey[] {key});
91
		iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
95
		iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
92
		ProvidedCapability launcherCapability = MetadataFactory.createProvidedCapability(flavor + idBase, idPrefix, version); 
96
		IProvidedCapability launcherCapability = MetadataFactory.createProvidedCapability(flavor + idBase, idPrefix, version); 
93
		iu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(iuId, version), launcherCapability});
97
		iu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(iuId, version), launcherCapability});
94
		result.addIU(MetadataFactory.createInstallableUnit(iu), IPublisherResult.ROOT);
98
		result.addIU(MetadataFactory.createInstallableUnit(iu), IPublisherResult.ROOT);
95
99
96
		// Create the CU that installs/configures the executable
100
		// Create the CU that installs/configures the executable
Lines 99-109 Link Here
99
		cu.setId(configUnitId);
103
		cu.setId(configUnitId);
100
		cu.setVersion(version);
104
		cu.setVersion(version);
101
		cu.setFilter(filter);
105
		cu.setFilter(filter);
102
		cu.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iuId, new VersionRange(version, true, version, true), null, false, false)});
106
		cu.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, iuId, new VersionRange(version, true, version, true), null, false, false)});
103
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
107
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
104
108
105
		//TODO bug 218890, would like the fragment to provide the launcher capability as well, but can't right now.
109
		//TODO bug 218890, would like the fragment to provide the launcher capability as well, but can't right now.
106
		cu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, version)});
110
		cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, version)});
107
111
108
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
112
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
109
		Map touchpointData = new HashMap();
113
		Map touchpointData = new HashMap();
(-)src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxExecutableAction.java (-7 / +11 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.eclipse;
11
package org.eclipse.equinox.p2.publisher.eclipse;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.io.File;
17
import java.io.File;
14
import java.util.HashMap;
18
import java.util.HashMap;
15
import java.util.Map;
19
import java.util.Map;
Lines 66-72 Link Here
66
		iud.setId(id);
70
		iud.setId(id);
67
		iud.setVersion(version);
71
		iud.setVersion(version);
68
		iud.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
72
		iud.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
69
		iud.setCapabilities(new ProvidedCapability[] {createSelfCapability(id, version)});
73
		iud.setCapabilities(new IProvidedCapability[] {createSelfCapability(id, version)});
70
74
71
		String filter = createFilterSpec(configSpec);
75
		String filter = createFilterSpec(configSpec);
72
		if (filter.length() > 0)
76
		if (filter.length() > 0)
Lines 94-102 Link Here
94
		iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
98
		iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
95
		String namespace = ConfigCUsAction.getAbstractCUCapabilityNamespace(idBase, TYPE, flavor, configSpec);
99
		String namespace = ConfigCUsAction.getAbstractCUCapabilityNamespace(idBase, TYPE, flavor, configSpec);
96
		String capabilityId = ConfigCUsAction.getAbstractCUCapabilityId(idBase, TYPE, flavor, configSpec);
100
		String capabilityId = ConfigCUsAction.getAbstractCUCapabilityId(idBase, TYPE, flavor, configSpec);
97
		ProvidedCapability executableCapability = MetadataFactory.createProvidedCapability(namespace, capabilityId, version);
101
		IProvidedCapability executableCapability = MetadataFactory.createProvidedCapability(namespace, capabilityId, version);
98
		ProvidedCapability selfCapability = createSelfCapability(id, version);
102
		IProvidedCapability selfCapability = createSelfCapability(id, version);
99
		iu.setCapabilities(new ProvidedCapability[] {selfCapability, executableCapability});
103
		iu.setCapabilities(new IProvidedCapability[] {selfCapability, executableCapability});
100
104
101
		//Create the artifact descriptor.  we have several files so no path on disk
105
		//Create the artifact descriptor.  we have several files so no path on disk
102
		IArtifactKey key = PublisherHelper.createBinaryArtifactKey(id, version);
106
		IArtifactKey key = PublisherHelper.createBinaryArtifactKey(id, version);
Lines 114-120 Link Here
114
		String launcherFragment = EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + ws + '.' + os;
118
		String launcherFragment = EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + ws + '.' + os;
115
		if (!(Constants.OS_MACOSX.equals(os) && !Constants.ARCH_X86_64.equals(arch)))
119
		if (!(Constants.OS_MACOSX.equals(os) && !Constants.ARCH_X86_64.equals(arch)))
116
			launcherFragment += '.' + arch;
120
			launcherFragment += '.' + arch;
117
		iu.setRequiredCapabilities(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherFragment, VersionRange.emptyRange, filter, false, false)});
121
		iu.setRequiredCapabilities(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, launcherFragment, VersionRange.emptyRange, filter, false, false)});
118
		result.addIU(MetadataFactory.createInstallableUnit(iu), IPublisherResult.ROOT);
122
		result.addIU(MetadataFactory.createInstallableUnit(iu), IPublisherResult.ROOT);
119
	}
123
	}
120
124
Lines 130-139 Link Here
130
		cu.setVersion(version);
134
		cu.setVersion(version);
131
		cu.setFilter(createFilterSpec(configSpec));
135
		cu.setFilter(createFilterSpec(configSpec));
132
		String executableId = getExecutableId();
136
		String executableId = getExecutableId();
133
		cu.setHost(new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, executableId, new VersionRange(version, true, version, true), null, false, false)});
137
		cu.setHost(new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, executableId, new VersionRange(version, true, version, true), null, false, false)});
134
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
138
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
135
		//TODO bug 218890, would like the fragment to provide the launcher capability as well, but can't right now.
139
		//TODO bug 218890, would like the fragment to provide the launcher capability as well, but can't right now.
136
		cu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(id, version)});
140
		cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(id, version)});
137
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
141
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
138
		String[] config = parseConfigSpec(configSpec);
142
		String[] config = parseConfigSpec(configSpec);
139
		String os = config[1];
143
		String os = config[1];
(-)src/org/eclipse/equinox/p2/publisher/eclipse/AdviceFileAdvice.java (-2 / +6 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.p2.publisher.eclipse;
9
package org.eclipse.equinox.p2.publisher.eclipse;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
11
import java.io.*;
15
import java.io.*;
12
import java.util.*;
16
import java.util.*;
13
import java.util.zip.ZipEntry;
17
import java.util.zip.ZipEntry;
Lines 126-132 Link Here
126
	/*(non-Javadoc)
130
	/*(non-Javadoc)
127
	 * @see org.eclipse.equinox.p2.publisher.eclipse.ITouchpointAdvice#getTouchpointData()
131
	 * @see org.eclipse.equinox.p2.publisher.eclipse.ITouchpointAdvice#getTouchpointData()
128
	 */
132
	 */
129
	public TouchpointData getTouchpointData(TouchpointData existing) {
133
	public ITouchpointData getTouchpointData(ITouchpointData existing) {
130
		Map touchpointData = new HashMap(existing.getInstructions());
134
		Map touchpointData = new HashMap(existing.getInstructions());
131
		Map bundleAdvice = getInstructions();
135
		Map bundleAdvice = getInstructions();
132
		for (Iterator iterator = bundleAdvice.keySet().iterator(); iterator.hasNext();) {
136
		for (Iterator iterator = bundleAdvice.keySet().iterator(); iterator.hasNext();) {
Lines 136-142 Link Here
136
				String instruction = ""; //$NON-NLS-1$
140
				String instruction = ""; //$NON-NLS-1$
137
				if (touchpointData.containsKey(phase)) {
141
				if (touchpointData.containsKey(phase)) {
138
					Object previous = touchpointData.get(phase);
142
					Object previous = touchpointData.get(phase);
139
					instruction = previous instanceof TouchpointInstruction ? ((TouchpointInstruction) previous).getBody() : (String) previous;
143
					instruction = previous instanceof ITouchpointInstruction ? ((ITouchpointInstruction) previous).getBody() : (String) previous;
140
					if (instruction.length() > 0 && !instruction.endsWith(";")) //$NON-NLS-1$
144
					if (instruction.length() > 0 && !instruction.endsWith(";")) //$NON-NLS-1$
141
						instruction += ';';
145
						instruction += ';';
142
				}
146
				}
(-)src/org/eclipse/equinox/p2/publisher/eclipse/ITouchpointAdvice.java (-2 / +3 lines)
Lines 10-16 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.eclipse;
11
package org.eclipse.equinox.p2.publisher.eclipse;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.TouchpointData;
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
14
14
import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
15
import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
15
16
16
/**
17
/**
Lines 25-30 Link Here
25
	 * @param existingData The current set of touchpoint data.
26
	 * @param existingData The current set of touchpoint data.
26
	 * @return the merged touchpoint data
27
	 * @return the merged touchpoint data
27
	 */
28
	 */
28
	public TouchpointData getTouchpointData(TouchpointData existingData);
29
	public ITouchpointData getTouchpointData(ITouchpointData existingData);
29
30
30
}
31
}
(-)src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java (-16 / +26 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.eclipse;
11
package org.eclipse.equinox.p2.publisher.eclipse;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
16
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
18
19
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
20
21
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
22
13
import java.io.*;
23
import java.io.*;
14
import java.net.URI;
24
import java.net.URI;
15
import java.net.URISyntaxException;
25
import java.net.URISyntaxException;
Lines 75-87 Link Here
75
			iu.setProperty(PublisherHelper.ECLIPSE_INSTALL_HANDLER_PROP, installHandlerProperty);
85
			iu.setProperty(PublisherHelper.ECLIPSE_INSTALL_HANDLER_PROP, installHandlerProperty);
76
		}
86
		}
77
87
78
		iu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(id, version), PublisherHelper.FEATURE_CAPABILITY, MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_UPDATE_FEATURE, feature.getId(), version)});
88
		iu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(id, version), PublisherHelper.FEATURE_CAPABILITY, MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_UPDATE_FEATURE, feature.getId(), version)});
79
		iu.setArtifacts(new IArtifactKey[] {createFeatureArtifactKey(feature.getId(), version.toString())});
89
		iu.setArtifacts(new IArtifactKey[] {createFeatureArtifactKey(feature.getId(), version.toString())});
80
90
81
		// link in all the children (if any) as requirements.
91
		// link in all the children (if any) as requirements.
82
		// TODO consider if these should be linked as exact version numbers.  Should be ok but may be brittle.
92
		// TODO consider if these should be linked as exact version numbers.  Should be ok but may be brittle.
83
		if (childIUs != null) {
93
		if (childIUs != null) {
84
			RequiredCapability[] required = new RequiredCapability[childIUs.size()];
94
			IRequiredCapability[] required = new IRequiredCapability[childIUs.size()];
85
			for (int i = 0; i < childIUs.size(); i++) {
95
			for (int i = 0; i < childIUs.size(); i++) {
86
				IInstallableUnit child = (IInstallableUnit) childIUs.get(i);
96
				IInstallableUnit child = (IInstallableUnit) childIUs.get(i);
87
				required[i] = MetadataFactory.createRequiredCapability(PublisherHelper.IU_NAMESPACE, child.getId(), new VersionRange(child.getVersion(), true, child.getVersion(), true), INSTALL_FEATURES_FILTER, false, false);
97
				required[i] = MetadataFactory.createRequiredCapability(PublisherHelper.IU_NAMESPACE, child.getId(), new VersionRange(child.getVersion(), true, child.getVersion(), true), INSTALL_FEATURES_FILTER, false, false);
Lines 233-239 Link Here
233
		iu.setId(id);
243
		iu.setId(id);
234
		Version version = new Version(featureVersion);
244
		Version version = new Version(featureVersion);
235
		iu.setVersion(version);
245
		iu.setVersion(version);
236
		iu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(id, version)});
246
		iu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(id, version)});
237
		iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
247
		iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
238
		String configSpec = descriptor.getConfigSpec();
248
		String configSpec = descriptor.getConfigSpec();
239
		if (configSpec != null)
249
		if (configSpec != null)
Lines 269-275 Link Here
269
		iu.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(id, new VersionRange(new Version(0, 0, 0), true, new Version(feature.getVersion()), false), IUpdateDescriptor.NORMAL, null));
279
		iu.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(id, new VersionRange(new Version(0, 0, 0), true, new Version(feature.getVersion()), false), IUpdateDescriptor.NORMAL, null));
270
280
271
		FeatureEntry entries[] = feature.getEntries();
281
		FeatureEntry entries[] = feature.getEntries();
272
		RequiredCapability[] required = new RequiredCapability[entries.length + (featureIU == null ? 0 : 1)];
282
		IRequiredCapability[] required = new IRequiredCapability[entries.length + (featureIU == null ? 0 : 1)];
273
		for (int i = 0; i < entries.length; i++) {
283
		for (int i = 0; i < entries.length; i++) {
274
			VersionRange range = getVersionRange(entries[i]);
284
			VersionRange range = getVersionRange(entries[i]);
275
			String requiredId = getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true);
285
			String requiredId = getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true);
Lines 280-286 Link Here
280
		if (featureIU != null)
290
		if (featureIU != null)
281
			required[entries.length] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false);
291
			required[entries.length] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false);
282
		iu.setRequiredCapabilities(required);
292
		iu.setRequiredCapabilities(required);
283
		iu.setTouchpointType(TouchpointType.NONE);
293
		iu.setTouchpointType(ITouchpointType.NONE);
284
		processTouchpointAdvice(iu, info);
294
		processTouchpointAdvice(iu, info);
285
		processFeatureAdvice(feature, iu, info);
295
		processFeatureAdvice(feature, iu, info);
286
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
296
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
Lines 306-312 Link Here
306
			}
316
			}
307
		}
317
		}
308
318
309
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
319
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
310
		return MetadataFactory.createInstallableUnit(iu);
320
		return MetadataFactory.createInstallableUnit(iu);
311
	}
321
	}
312
322
Lines 335-347 Link Here
335
		ArrayList requirementChanges = new ArrayList();
345
		ArrayList requirementChanges = new ArrayList();
336
		for (int i = 0; i < entries.length; i++) {
346
		for (int i = 0; i < entries.length; i++) {
337
			VersionRange range = getVersionRange(entries[i]);
347
			VersionRange range = getVersionRange(entries[i]);
338
			RequiredCapability req = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), range, getFilter(entries[i]), entries[i].isOptional(), false);
348
			IRequiredCapability req = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), range, getFilter(entries[i]), entries[i].isOptional(), false);
339
			if (entries[i].isRequires()) {
349
			if (entries[i].isRequires()) {
340
				applicabilityScope.add(req);
350
				applicabilityScope.add(req);
341
				continue;
351
				continue;
342
			}
352
			}
343
			if (entries[i].isPlugin()) {
353
			if (entries[i].isPlugin()) {
344
				RequiredCapability from = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
354
				IRequiredCapability from = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
345
				requirementChanges.add(new RequirementChange(from, req));
355
				requirementChanges.add(new RequirementChange(from, req));
346
				continue;
356
				continue;
347
			}
357
			}
Lines 349-367 Link Here
349
		}
359
		}
350
		//Always add a requirement on the IU containing the feature jar
360
		//Always add a requirement on the IU containing the feature jar
351
		patchRequirements.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false));
361
		patchRequirements.add(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, featureIU.getId(), new VersionRange(featureIU.getVersion(), true, featureIU.getVersion(), true), INSTALL_FEATURES_FILTER, false, false));
352
		iu.setRequiredCapabilities((RequiredCapability[]) patchRequirements.toArray(new RequiredCapability[patchRequirements.size()]));
362
		iu.setRequiredCapabilities((IRequiredCapability[]) patchRequirements.toArray(new IRequiredCapability[patchRequirements.size()]));
353
		iu.setApplicabilityScope(new RequiredCapability[][] {(RequiredCapability[]) applicabilityScope.toArray(new RequiredCapability[applicabilityScope.size()])});
363
		iu.setApplicabilityScope(new IRequiredCapability[][] {(IRequiredCapability[]) applicabilityScope.toArray(new IRequiredCapability[applicabilityScope.size()])});
354
		iu.setRequirementChanges((RequirementChange[]) requirementChanges.toArray(new RequirementChange[requirementChanges.size()]));
364
		iu.setRequirementChanges((IRequirementChange[]) requirementChanges.toArray(new IRequirementChange[requirementChanges.size()]));
355
365
356
		//Generate lifecycle
366
		//Generate lifecycle
357
		RequiredCapability lifeCycle = null;
367
		IRequiredCapability lifeCycle = null;
358
		if (applicabilityScope.size() > 0) {
368
		if (applicabilityScope.size() > 0) {
359
			RequiredCapability req = (RequiredCapability) applicabilityScope.get(0);
369
			IRequiredCapability req = (IRequiredCapability) applicabilityScope.get(0);
360
			lifeCycle = MetadataFactory.createRequiredCapability(req.getNamespace(), req.getName(), req.getRange(), null, false, false, false);
370
			lifeCycle = MetadataFactory.createRequiredCapability(req.getNamespace(), req.getName(), req.getRange(), null, false, false, false);
361
			iu.setLifeCycle(lifeCycle);
371
			iu.setLifeCycle(lifeCycle);
362
		}
372
		}
363
373
364
		iu.setTouchpointType(TouchpointType.NONE);
374
		iu.setTouchpointType(ITouchpointType.NONE);
365
		processTouchpointAdvice(iu, info);
375
		processTouchpointAdvice(iu, info);
366
		processFeatureAdvice(feature, iu, info);
376
		processFeatureAdvice(feature, iu, info);
367
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
377
		iu.setProperty(IInstallableUnit.PROP_TYPE_GROUP, Boolean.TRUE.toString());
Lines 388-394 Link Here
388
			}
398
			}
389
		}
399
		}
390
400
391
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
401
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
392
		return MetadataFactory.createInstallableUnitPatch(iu);
402
		return MetadataFactory.createInstallableUnitPatch(iu);
393
	}
403
	}
394
404
Lines 647-653 Link Here
647
657
648
	private void processTouchpointAdvice(InstallableUnitDescription iu, IPublisherInfo info) {
658
	private void processTouchpointAdvice(InstallableUnitDescription iu, IPublisherInfo info) {
649
		Collection advice = info.getAdvice(null, false, null, null, ITouchpointAdvice.class);
659
		Collection advice = info.getAdvice(null, false, null, null, ITouchpointAdvice.class);
650
		TouchpointData result = MetadataFactory.createTouchpointData(new HashMap());
660
		ITouchpointData result = MetadataFactory.createTouchpointData(new HashMap());
651
		for (Iterator i = advice.iterator(); i.hasNext();) {
661
		for (Iterator i = advice.iterator(); i.hasNext();) {
652
			ITouchpointAdvice entry = (ITouchpointAdvice) i.next();
662
			ITouchpointAdvice entry = (ITouchpointAdvice) i.next();
653
			result = entry.getTouchpointData(result);
663
			result = entry.getTouchpointData(result);
(-)src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java (-3 / +5 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher.eclipse;
11
package org.eclipse.equinox.p2.publisher.eclipse;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
14
13
import java.io.File;
15
import java.io.File;
14
import java.util.*;
16
import java.util.*;
15
import java.util.Map.Entry;
17
import java.util.Map.Entry;
Lines 217-227 Link Here
217
		cu.setVersion(version);
219
		cu.setVersion(version);
218
		cu.setFilter(AbstractPublisherAction.createFilterSpec(configSpec));
220
		cu.setFilter(AbstractPublisherAction.createFilterSpec(configSpec));
219
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
221
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
220
		ProvidedCapability selfCapability = PublisherHelper.createSelfCapability(resultId, version);
222
		IProvidedCapability selfCapability = PublisherHelper.createSelfCapability(resultId, version);
221
		String namespace = getAbstractCUCapabilityNamespace(id, type, flavor, configSpec);
223
		String namespace = getAbstractCUCapabilityNamespace(id, type, flavor, configSpec);
222
		String abstractId = getAbstractCUCapabilityId(id, type, flavor, configSpec);
224
		String abstractId = getAbstractCUCapabilityId(id, type, flavor, configSpec);
223
		ProvidedCapability abstractCapability = MetadataFactory.createProvidedCapability(namespace, abstractId, version);
225
		IProvidedCapability abstractCapability = MetadataFactory.createProvidedCapability(namespace, abstractId, version);
224
		cu.setCapabilities(new ProvidedCapability[] {selfCapability, abstractCapability});
226
		cu.setCapabilities(new IProvidedCapability[] {selfCapability, abstractCapability});
225
		cu.addTouchpointData(MetadataFactory.createTouchpointData(touchpointData));
227
		cu.addTouchpointData(MetadataFactory.createTouchpointData(touchpointData));
226
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
228
		cu.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
227
		return MetadataFactory.createInstallableUnit(cu);
229
		return MetadataFactory.createInstallableUnit(cu);
(-)src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java (-20 / +20 lines)
Lines 61-75 Link Here
61
	/**
61
	/**
62
	 * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE} namespace 
62
	 * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE} namespace 
63
	 * representing and OSGi bundle resource
63
	 * representing and OSGi bundle resource
64
	 * @see RequiredCapability#getName()
64
	 * @see IRequiredCapability#getName()
65
	 * @see ProvidedCapability#getName()
65
	 * @see IProvidedCapability#getName()
66
	 */
66
	 */
67
	public static final String TYPE_ECLIPSE_BUNDLE = "bundle"; //$NON-NLS-1$
67
	public static final String TYPE_ECLIPSE_BUNDLE = "bundle"; //$NON-NLS-1$
68
68
69
	/**
69
	/**
70
	 * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE} namespace 
70
	 * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE} namespace 
71
	 * representing a source bundle
71
	 * representing a source bundle
72
	 * @see RequiredCapability#getName()
72
	 * @see IRequiredCapability#getName()
73
	 */
73
	 */
74
	public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
74
	public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
75
75
Lines 77-84 Link Here
77
	private static final String CAPABILITY_NS_OSGI_BUNDLE = "osgi.bundle"; //$NON-NLS-1$
77
	private static final String CAPABILITY_NS_OSGI_BUNDLE = "osgi.bundle"; //$NON-NLS-1$
78
	private static final String CAPABILITY_NS_OSGI_FRAGMENT = "osgi.fragment"; //$NON-NLS-1$
78
	private static final String CAPABILITY_NS_OSGI_FRAGMENT = "osgi.fragment"; //$NON-NLS-1$
79
79
80
	public static final ProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new Version(1, 0, 0));
80
	public static final IProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new Version(1, 0, 0));
81
	public static final ProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, new Version(1, 0, 0));
81
	public static final IProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, new Version(1, 0, 0));
82
82
83
	static final String DEFAULT_BUNDLE_LOCALIZATION = "plugin"; //$NON-NLS-1$	
83
	static final String DEFAULT_BUNDLE_LOCALIZATION = "plugin"; //$NON-NLS-1$	
84
84
Lines 109-121 Link Here
109
		cu.setVersion(hostVersion);
109
		cu.setVersion(hostVersion);
110
110
111
		//Indicate the IU to which this CU apply
111
		//Indicate the IU to which this CU apply
112
		cu.setHost(new RequiredCapability[] { //
112
		cu.setHost(new IRequiredCapability[] { //
113
				MetadataFactory.createRequiredCapability(CAPABILITY_NS_OSGI_BUNDLE, hostId, new VersionRange(hostVersion, true, PublisherHelper.versionMax, true), null, false, false, true), // 
113
				MetadataFactory.createRequiredCapability(CAPABILITY_NS_OSGI_BUNDLE, hostId, new VersionRange(hostVersion, true, PublisherHelper.versionMax, true), null, false, false, true), // 
114
						MetadataFactory.createRequiredCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new VersionRange(new Version(1, 0, 0), true, new Version(2, 0, 0), false), null, false, false, false)});
114
						MetadataFactory.createRequiredCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new VersionRange(new Version(1, 0, 0), true, new Version(2, 0, 0), false), null, false, false, false)});
115
115
116
		//Adds capabilities for fragment, self, and describing the flavor supported
116
		//Adds capabilities for fragment, self, and describing the flavor supported
117
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
117
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
118
		cu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, hostVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
118
		cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, hostVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
119
119
120
		Map touchpointData = new HashMap();
120
		Map touchpointData = new HashMap();
121
		touchpointData.put("install", "installBundle(bundle:${artifact})"); //$NON-NLS-1$ //$NON-NLS-2$
121
		touchpointData.put("install", "installBundle(bundle:${artifact})"); //$NON-NLS-1$ //$NON-NLS-2$
Lines 166-172 Link Here
166
			//TODO this needs to be refined to take into account all the attribute handled by imports
166
			//TODO this needs to be refined to take into account all the attribute handled by imports
167
			reqsDeps.add(MetadataFactory.createRequiredCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, importPackageName, versionRange, null, isOptional(importSpec), false));
167
			reqsDeps.add(MetadataFactory.createRequiredCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, importPackageName, versionRange, null, isOptional(importSpec), false));
168
		}
168
		}
169
		iu.setRequiredCapabilities((RequiredCapability[]) reqsDeps.toArray(new RequiredCapability[reqsDeps.size()]));
169
		iu.setRequiredCapabilities((IRequiredCapability[]) reqsDeps.toArray(new IRequiredCapability[reqsDeps.size()]));
170
170
171
		// Create set of provided capabilities
171
		// Create set of provided capabilities
172
		ArrayList providedCapabilities = new ArrayList();
172
		ArrayList providedCapabilities = new ArrayList();
Lines 199-205 Link Here
199
				providedCapabilities.add(PublisherHelper.makeTranslationCapability(bd.getSymbolicName(), locale));
199
				providedCapabilities.add(PublisherHelper.makeTranslationCapability(bd.getSymbolicName(), locale));
200
			}
200
			}
201
		}
201
		}
202
		iu.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
202
		iu.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
203
		processCapabilityAdvice(iu, bd, info);
203
		processCapabilityAdvice(iu, bd, info);
204
204
205
		// Set certain properties from the manifest header attributes as IU properties.
205
		// Set certain properties from the manifest header attributes as IU properties.
Lines 263-280 Link Here
263
		Collection advice = info.getAdvice(null, false, null, null, ICapabilityAdvice.class);
263
		Collection advice = info.getAdvice(null, false, null, null, ICapabilityAdvice.class);
264
		for (Iterator i = advice.iterator(); i.hasNext();) {
264
		for (Iterator i = advice.iterator(); i.hasNext();) {
265
			ICapabilityAdvice entry = (ICapabilityAdvice) i.next();
265
			ICapabilityAdvice entry = (ICapabilityAdvice) i.next();
266
			RequiredCapability[] requiredAdvice = entry.getRequiredCapabilities(iu);
266
			IRequiredCapability[] requiredAdvice = entry.getRequiredCapabilities(iu);
267
			ProvidedCapability[] providedAdvice = entry.getProvidedCapabilities(iu);
267
			IProvidedCapability[] providedAdvice = entry.getProvidedCapabilities(iu);
268
			if (providedAdvice != null) {
268
			if (providedAdvice != null) {
269
				RequiredCapability[] current = iu.getRequiredCapabilities();
269
				IRequiredCapability[] current = iu.getRequiredCapabilities();
270
				RequiredCapability[] result = new RequiredCapability[requiredAdvice.length + current.length];
270
				IRequiredCapability[] result = new IRequiredCapability[requiredAdvice.length + current.length];
271
				System.arraycopy(requiredAdvice, 0, result, 0, requiredAdvice.length);
271
				System.arraycopy(requiredAdvice, 0, result, 0, requiredAdvice.length);
272
				System.arraycopy(current, 0, result, requiredAdvice.length, current.length);
272
				System.arraycopy(current, 0, result, requiredAdvice.length, current.length);
273
				iu.setRequiredCapabilities(result);
273
				iu.setRequiredCapabilities(result);
274
			}
274
			}
275
			if (providedAdvice != null) {
275
			if (providedAdvice != null) {
276
				ProvidedCapability[] current = iu.getProvidedCapabilities();
276
				IProvidedCapability[] current = iu.getProvidedCapabilities();
277
				ProvidedCapability[] result = new ProvidedCapability[providedAdvice.length + current.length];
277
				IProvidedCapability[] result = new IProvidedCapability[providedAdvice.length + current.length];
278
				System.arraycopy(providedAdvice, 0, result, 0, providedAdvice.length);
278
				System.arraycopy(providedAdvice, 0, result, 0, providedAdvice.length);
279
				System.arraycopy(current, 0, result, providedAdvice.length, current.length);
279
				System.arraycopy(current, 0, result, providedAdvice.length, current.length);
280
				iu.setCapabilities(result);
280
				iu.setCapabilities(result);
Lines 290-296 Link Here
290
	 */
290
	 */
291
	private static void processTouchpointAdvice(InstallableUnitDescription iu, Map currentInstructions, IPublisherInfo info) {
291
	private static void processTouchpointAdvice(InstallableUnitDescription iu, Map currentInstructions, IPublisherInfo info) {
292
		Collection advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), ITouchpointAdvice.class);
292
		Collection advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), ITouchpointAdvice.class);
293
		TouchpointData result = MetadataFactory.createTouchpointData(currentInstructions);
293
		ITouchpointData result = MetadataFactory.createTouchpointData(currentInstructions);
294
		for (Iterator i = advice.iterator(); i.hasNext();) {
294
		for (Iterator i = advice.iterator(); i.hasNext();) {
295
			ITouchpointAdvice entry = (ITouchpointAdvice) i.next();
295
			ITouchpointAdvice entry = (ITouchpointAdvice) i.next();
296
			result = entry.getTouchpointData(result);
296
			result = entry.getTouchpointData(result);
Lines 320-326 Link Here
320
		fragment.setVersion(Version.fromOSGiVersion(bd.getVersion())); // TODO: is this a meaningful version?
320
		fragment.setVersion(Version.fromOSGiVersion(bd.getVersion())); // TODO: is this a meaningful version?
321
321
322
		HostSpecification hostSpec = bd.getHost();
322
		HostSpecification hostSpec = bd.getHost();
323
		RequiredCapability[] hostReqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, hostSpec.getName(), VersionRange.fromOSGiVersionRange(hostSpec.getVersionRange()), null, false, false, false)};
323
		IRequiredCapability[] hostReqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, hostSpec.getName(), VersionRange.fromOSGiVersionRange(hostSpec.getVersionRange()), null, false, false, false)};
324
		fragment.setHost(hostReqs);
324
		fragment.setHost(hostReqs);
325
325
326
		fragment.setSingleton(true);
326
		fragment.setSingleton(true);
Lines 339-345 Link Here
339
			}
339
			}
340
			providedCapabilities.add(PublisherHelper.makeTranslationCapability(hostId, locale));
340
			providedCapabilities.add(PublisherHelper.makeTranslationCapability(hostId, locale));
341
		}
341
		}
342
		fragment.setCapabilities((ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]));
342
		fragment.setCapabilities((IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]));
343
343
344
		return MetadataFactory.createInstallableUnitFragment(fragment);
344
		return MetadataFactory.createInstallableUnitFragment(fragment);
345
	}
345
	}
Lines 385-394 Link Here
385
385
386
		// Add capabilities for fragment, self, and describing the flavor supported
386
		// Add capabilities for fragment, self, and describing the flavor supported
387
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
387
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
388
		cu.setCapabilities(new ProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
388
		cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
389
389
390
		// Create a required capability on bundles
390
		// Create a required capability on bundles
391
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, VersionRange.emptyRange, null, false, true, false)};
391
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, VersionRange.emptyRange, null, false, true, false)};
392
		cu.setHost(reqs);
392
		cu.setHost(reqs);
393
		Map touchpointData = new HashMap();
393
		Map touchpointData = new HashMap();
394
394
(-)src/org/eclipse/equinox/spi/p2/publisher/PublisherHelper.java (-13 / +13 lines)
Lines 38-67 Link Here
38
public class PublisherHelper {
38
public class PublisherHelper {
39
	/**
39
	/**
40
	 * A capability namespace representing the type of Eclipse resource (bundle, feature, source bundle, etc)
40
	 * A capability namespace representing the type of Eclipse resource (bundle, feature, source bundle, etc)
41
	 * @see RequiredCapability#getNamespace()
41
	 * @see IRequiredCapability#getNamespace()
42
	 * @see ProvidedCapability#getNamespace()
42
	 * @see IProvidedCapability#getNamespace()
43
	 */
43
	 */
44
	public static final String NAMESPACE_ECLIPSE_TYPE = "org.eclipse.equinox.p2.eclipse.type"; //$NON-NLS-1$
44
	public static final String NAMESPACE_ECLIPSE_TYPE = "org.eclipse.equinox.p2.eclipse.type"; //$NON-NLS-1$
45
45
46
	/**
46
	/**
47
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
47
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
48
	 * representing a feature
48
	 * representing a feature
49
	 * @see RequiredCapability#getName()
49
	 * @see IRequiredCapability#getName()
50
	 */
50
	 */
51
	public static final String TYPE_ECLIPSE_FEATURE = "feature"; //$NON-NLS-1$
51
	public static final String TYPE_ECLIPSE_FEATURE = "feature"; //$NON-NLS-1$
52
52
53
	/**
53
	/**
54
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
54
	 * A capability name in the {@link #NAMESPACE_ECLIPSE_TYPE} namespace 
55
	 * representing a source bundle
55
	 * representing a source bundle
56
	 * @see RequiredCapability#getName()
56
	 * @see IRequiredCapability#getName()
57
	 */
57
	 */
58
	public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
58
	public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
59
59
60
	/**
60
	/**
61
	 * A capability namespace representing the localization (translation)
61
	 * A capability namespace representing the localization (translation)
62
	 * of strings from a specified IU in a specified locale
62
	 * of strings from a specified IU in a specified locale
63
	 * @see RequiredCapability#getNamespace()
63
	 * @see IRequiredCapability#getNamespace()
64
	 * @see ProvidedCapability#getNamespace()
64
	 * @see IProvidedCapability#getNamespace()
65
	 * TODO: this should be in API, probably in IInstallableUnit
65
	 * TODO: this should be in API, probably in IInstallableUnit
66
	 */
66
	 */
67
	public static final String NAMESPACE_IU_LOCALIZATION = "org.eclipse.equinox.p2.localization"; //$NON-NLS-1$
67
	public static final String NAMESPACE_IU_LOCALIZATION = "org.eclipse.equinox.p2.localization"; //$NON-NLS-1$
Lines 88-94 Link Here
88
	public static final TouchpointType TOUCHPOINT_NATIVE = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.native", new Version(1, 0, 0)); //$NON-NLS-1$
88
	public static final TouchpointType TOUCHPOINT_NATIVE = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.native", new Version(1, 0, 0)); //$NON-NLS-1$
89
	public static final TouchpointType TOUCHPOINT_OSGI = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version(1, 0, 0)); //$NON-NLS-1$
89
	public static final TouchpointType TOUCHPOINT_OSGI = MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version(1, 0, 0)); //$NON-NLS-1$
90
90
91
	public static final ProvidedCapability FEATURE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, new Version(1, 0, 0));
91
	public static final IProvidedCapability FEATURE_CAPABILITY = MetadataFactory.createProvidedCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, new Version(1, 0, 0));
92
92
93
	public static IArtifactDescriptor createArtifactDescriptor(IArtifactKey key, File pathOnDisk) {
93
	public static IArtifactDescriptor createArtifactDescriptor(IArtifactKey key, File pathOnDisk) {
94
		//TODO this size calculation is bogus
94
		//TODO this size calculation is bogus
Lines 142-148 Link Here
142
		}
142
		}
143
	}
143
	}
144
144
145
	public static ProvidedCapability makeTranslationCapability(String hostId, Locale locale) {
145
	public static IProvidedCapability makeTranslationCapability(String hostId, Locale locale) {
146
		return MetadataFactory.createProvidedCapability(NAMESPACE_IU_LOCALIZATION, locale.toString(), new Version(1, 0, 0));
146
		return MetadataFactory.createProvidedCapability(NAMESPACE_IU_LOCALIZATION, locale.toString(), new Version(1, 0, 0));
147
	}
147
	}
148
148
Lines 159-168 Link Here
159
159
160
		// Add capabilities for fragment, self, and describing the flavor supported
160
		// Add capabilities for fragment, self, and describing the flavor supported
161
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
161
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
162
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
162
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
163
163
164
		// Create a required capability on features
164
		// Create a required capability on features
165
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, VersionRange.emptyRange, null, true, true, false)};
165
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_FEATURE, VersionRange.emptyRange, null, true, true, false)};
166
		cu.setHost(reqs);
166
		cu.setHost(reqs);
167
167
168
		cu.setFilter(INSTALL_FEATURES_FILTER);
168
		cu.setFilter(INSTALL_FEATURES_FILTER);
Lines 183-192 Link Here
183
183
184
		// Add capabilities for fragment, self, and describing the flavor supported
184
		// Add capabilities for fragment, self, and describing the flavor supported
185
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
185
		cu.setProperty(IInstallableUnit.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
186
		cu.setCapabilities(new ProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
186
		cu.setCapabilities(new IProvidedCapability[] {createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_FLAVOR, configurationFlavor, new Version(1, 0, 0))});
187
187
188
		// Create a required capability on source providers
188
		// Create a required capability on source providers
189
		RequiredCapability[] reqs = new RequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, VersionRange.emptyRange, null, true, true, false)};
189
		IRequiredCapability[] reqs = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, VersionRange.emptyRange, null, true, true, false)};
190
		cu.setHost(reqs);
190
		cu.setHost(reqs);
191
		Map touchpointData = new HashMap();
191
		Map touchpointData = new HashMap();
192
192
Lines 222-228 Link Here
222
		return new ArtifactKey(BINARY_ARTIFACT_CLASSIFIER, id, version);
222
		return new ArtifactKey(BINARY_ARTIFACT_CLASSIFIER, id, version);
223
	}
223
	}
224
224
225
	public static ProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
225
	public static IProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
226
		return MetadataFactory.createProvidedCapability(IU_NAMESPACE, installableUnitId, installableUnitVersion);
226
		return MetadataFactory.createProvidedCapability(IU_NAMESPACE, installableUnitId, installableUnitVersion);
227
	}
227
	}
228
228
(-)src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java (-8 / +12 lines)
Lines 10-15 Link Here
10
 ******************************************************************************/
10
 ******************************************************************************/
11
package org.eclipse.equinox.p2.publisher;
11
package org.eclipse.equinox.p2.publisher;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
16
13
import java.io.*;
17
import java.io.*;
14
import java.util.*;
18
import java.util.*;
15
import org.eclipse.core.runtime.*;
19
import org.eclipse.core.runtime.*;
Lines 32-38 Link Here
32
	public static final String CONFIG_SEGMENT_SEPARATOR = "."; //$NON-NLS-1$
36
	public static final String CONFIG_SEGMENT_SEPARATOR = "."; //$NON-NLS-1$
33
37
34
	public static void addSelfCapability(InstallableUnitDescription root) {
38
	public static void addSelfCapability(InstallableUnitDescription root) {
35
		root.setCapabilities(new ProvidedCapability[] {createSelfCapability(root.getId(), root.getVersion())});
39
		root.setCapabilities(new IProvidedCapability[] {createSelfCapability(root.getId(), root.getVersion())});
36
	}
40
	}
37
41
38
	/**
42
	/**
Lines 129-135 Link Here
129
		return FileUtils.createRootPathComputer(root);
133
		return FileUtils.createRootPathComputer(root);
130
	}
134
	}
131
135
132
	public static ProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
136
	public static IProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
133
		return MetadataFactory.createProvidedCapability(PublisherHelper.IU_NAMESPACE, installableUnitId, installableUnitVersion);
137
		return MetadataFactory.createProvidedCapability(PublisherHelper.IU_NAMESPACE, installableUnitId, installableUnitVersion);
134
	}
138
	}
135
139
Lines 171-188 Link Here
171
		Collection advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), ICapabilityAdvice.class);
175
		Collection advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), ICapabilityAdvice.class);
172
		for (Iterator i = advice.iterator(); i.hasNext();) {
176
		for (Iterator i = advice.iterator(); i.hasNext();) {
173
			ICapabilityAdvice entry = (ICapabilityAdvice) i.next();
177
			ICapabilityAdvice entry = (ICapabilityAdvice) i.next();
174
			RequiredCapability[] requiredAdvice = entry.getRequiredCapabilities(iu);
178
			IRequiredCapability[] requiredAdvice = entry.getRequiredCapabilities(iu);
175
			ProvidedCapability[] providedAdvice = entry.getProvidedCapabilities(iu);
179
			IProvidedCapability[] providedAdvice = entry.getProvidedCapabilities(iu);
176
			if (providedAdvice != null) {
180
			if (providedAdvice != null) {
177
				RequiredCapability[] current = iu.getRequiredCapabilities();
181
				IRequiredCapability[] current = iu.getRequiredCapabilities();
178
				RequiredCapability[] result = new RequiredCapability[requiredAdvice.length + current.length];
182
				IRequiredCapability[] result = new IRequiredCapability[requiredAdvice.length + current.length];
179
				System.arraycopy(requiredAdvice, 0, result, 0, requiredAdvice.length);
183
				System.arraycopy(requiredAdvice, 0, result, 0, requiredAdvice.length);
180
				System.arraycopy(current, 0, result, requiredAdvice.length, current.length);
184
				System.arraycopy(current, 0, result, requiredAdvice.length, current.length);
181
				iu.setRequiredCapabilities(result);
185
				iu.setRequiredCapabilities(result);
182
			}
186
			}
183
			if (providedAdvice != null) {
187
			if (providedAdvice != null) {
184
				ProvidedCapability[] current = iu.getProvidedCapabilities();
188
				IProvidedCapability[] current = iu.getProvidedCapabilities();
185
				ProvidedCapability[] result = new ProvidedCapability[providedAdvice.length + current.length];
189
				IProvidedCapability[] result = new IProvidedCapability[providedAdvice.length + current.length];
186
				System.arraycopy(providedAdvice, 0, result, 0, providedAdvice.length);
190
				System.arraycopy(providedAdvice, 0, result, 0, providedAdvice.length);
187
				System.arraycopy(current, 0, result, providedAdvice.length, current.length);
191
				System.arraycopy(current, 0, result, providedAdvice.length, current.length);
188
				iu.setCapabilities(result);
192
				iu.setCapabilities(result);
(-)src/org/eclipse/equinox/internal/p2/tools/MetadataCompareApplication.java (-4 / +5 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.tools;
11
package org.eclipse.equinox.internal.p2.tools;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import java.net.URI;
15
import java.net.URI;
14
import java.util.Arrays;
16
import java.util.Arrays;
15
import java.util.Comparator;
17
import java.util.Comparator;
Lines 20-26 Link Here
20
import org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager;
22
import org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager;
21
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
23
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
24
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
23
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
24
import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery;
25
import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery;
25
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository;
26
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository;
26
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
27
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
Lines 175-181 Link Here
175
		return result;
176
		return result;
176
	}
177
	}
177
178
178
	private boolean compareRequires(RequiredCapability[] a, RequiredCapability[] b) {
179
	private boolean compareRequires(IRequiredCapability[] a, IRequiredCapability[] b) {
179
		if (a == null)
180
		if (a == null)
180
			return b == null;
181
			return b == null;
181
		if (a.length != b.length)
182
		if (a.length != b.length)
Lines 188-196 Link Here
188
		return true;
189
		return true;
189
	}
190
	}
190
191
191
	private RequiredCapability findCapability(RequiredCapability target, RequiredCapability[] b) {
192
	private IRequiredCapability findCapability(IRequiredCapability target, IRequiredCapability[] b) {
192
		for (int i = 0; i < b.length; i++) {
193
		for (int i = 0; i < b.length; i++) {
193
			RequiredCapability capability = b[i];
194
			IRequiredCapability capability = b[i];
194
			if (target.equals(capability))
195
			if (target.equals(capability))
195
				return capability;
196
				return capability;
196
		}
197
		}
(-)src/org/eclipse/equinox/internal/p2/selfhosting/FlavorVisitor.java (-1 / +3 lines)
Lines 8-13 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.selfhosting;
9
package org.eclipse.equinox.internal.p2.selfhosting;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
11
import java.io.BufferedInputStream;
13
import java.io.BufferedInputStream;
12
import java.io.IOException;
14
import java.io.IOException;
13
import java.util.*;
15
import java.util.*;
Lines 51-57 Link Here
51
	}
53
	}
52
54
53
	private void processRemoval(String flavorName) {
55
	private void processRemoval(String flavorName) {
54
		RequiredCapability flavorCapability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_FLAVOR, flavorName, VersionRange.emptyRange, null, false, false);
56
		IRequiredCapability flavorCapability = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_FLAVOR, flavorName, VersionRange.emptyRange, null, false, false);
55
		repo.removeInstallableUnits(new CapabilityQuery(flavorCapability), null);
57
		repo.removeInstallableUnits(new CapabilityQuery(flavorCapability), null);
56
	}
58
	}
57
59
(-)src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java (-14 / +30 lines)
Lines 11-16 Link Here
11
 *******************************************************************************/
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata.repository.io;
12
package org.eclipse.equinox.internal.p2.metadata.repository.io;
13
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
15
16
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
17
18
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
19
20
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
21
22
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
23
24
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
25
26
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
27
28
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
29
14
import java.io.OutputStream;
30
import java.io.OutputStream;
15
import java.io.UnsupportedEncodingException;
31
import java.io.UnsupportedEncodingException;
16
import java.util.Iterator;
32
import java.util.Iterator;
Lines 79-85 Link Here
79
		end(INSTALLABLE_UNIT_ELEMENT);
95
		end(INSTALLABLE_UNIT_ELEMENT);
80
	}
96
	}
81
97
82
	protected void writeLifeCycle(RequiredCapability capability) {
98
	protected void writeLifeCycle(IRequiredCapability capability) {
83
		if (capability == null)
99
		if (capability == null)
84
			return;
100
			return;
85
		start(LIFECYCLE);
101
		start(LIFECYCLE);
Lines 87-93 Link Here
87
		end(LIFECYCLE);
103
		end(LIFECYCLE);
88
	}
104
	}
89
105
90
	protected void writeHostRequiredCapabilities(RequiredCapability[] capabilities) {
106
	protected void writeHostRequiredCapabilities(IRequiredCapability[] capabilities) {
91
		if (capabilities != null && capabilities.length > 0) {
107
		if (capabilities != null && capabilities.length > 0) {
92
			start(HOST_REQUIRED_CAPABILITIES_ELEMENT);
108
			start(HOST_REQUIRED_CAPABILITIES_ELEMENT);
93
			attribute(COLLECTION_SIZE_ATTRIBUTE, capabilities.length);
109
			attribute(COLLECTION_SIZE_ATTRIBUTE, capabilities.length);
Lines 98-104 Link Here
98
		}
114
		}
99
	}
115
	}
100
116
101
	protected void writeProvidedCapabilities(ProvidedCapability[] capabilities) {
117
	protected void writeProvidedCapabilities(IProvidedCapability[] capabilities) {
102
		if (capabilities != null && capabilities.length > 0) {
118
		if (capabilities != null && capabilities.length > 0) {
103
			start(PROVIDED_CAPABILITIES_ELEMENT);
119
			start(PROVIDED_CAPABILITIES_ELEMENT);
104
			attribute(COLLECTION_SIZE_ATTRIBUTE, capabilities.length);
120
			attribute(COLLECTION_SIZE_ATTRIBUTE, capabilities.length);
Lines 113-119 Link Here
113
		}
129
		}
114
	}
130
	}
115
131
116
	protected void writeRequiredCapabilities(RequiredCapability[] capabilities) {
132
	protected void writeRequiredCapabilities(IRequiredCapability[] capabilities) {
117
		if (capabilities != null && capabilities.length > 0) {
133
		if (capabilities != null && capabilities.length > 0) {
118
			start(REQUIRED_CAPABILITIES_ELEMENT);
134
			start(REQUIRED_CAPABILITIES_ELEMENT);
119
			attribute(COLLECTION_SIZE_ATTRIBUTE, capabilities.length);
135
			attribute(COLLECTION_SIZE_ATTRIBUTE, capabilities.length);
Lines 136-142 Link Here
136
		end(UPDATE_DESCRIPTOR_ELEMENT);
152
		end(UPDATE_DESCRIPTOR_ELEMENT);
137
	}
153
	}
138
154
139
	protected void writeApplicabilityScope(RequiredCapability[][] capabilities) {
155
	protected void writeApplicabilityScope(IRequiredCapability[][] capabilities) {
140
		start(APPLICABILITY_SCOPE);
156
		start(APPLICABILITY_SCOPE);
141
		for (int i = 0; i < capabilities.length; i++) {
157
		for (int i = 0; i < capabilities.length; i++) {
142
			start(APPLY_ON);
158
			start(APPLY_ON);
Lines 146-152 Link Here
146
		end(APPLICABILITY_SCOPE);
162
		end(APPLICABILITY_SCOPE);
147
	}
163
	}
148
164
149
	protected void writeRequirementsChange(RequirementChange[] changes) {
165
	protected void writeRequirementsChange(IRequirementChange[] changes) {
150
		start(REQUIREMENT_CHANGES);
166
		start(REQUIREMENT_CHANGES);
151
		for (int i = 0; i < changes.length; i++) {
167
		for (int i = 0; i < changes.length; i++) {
152
			writeRequirementChange(changes[i]);
168
			writeRequirementChange(changes[i]);
Lines 154-160 Link Here
154
		end(REQUIREMENT_CHANGES);
170
		end(REQUIREMENT_CHANGES);
155
	}
171
	}
156
172
157
	protected void writeRequirementChange(RequirementChange change) {
173
	protected void writeRequirementChange(IRequirementChange change) {
158
		start(REQUIREMENT_CHANGE);
174
		start(REQUIREMENT_CHANGE);
159
		if (change.applyOn() != null) {
175
		if (change.applyOn() != null) {
160
			start(REQUIREMENT_FROM);
176
			start(REQUIREMENT_FROM);
Lines 169-175 Link Here
169
		end(REQUIREMENT_CHANGE);
185
		end(REQUIREMENT_CHANGE);
170
	}
186
	}
171
187
172
	protected void writeRequiredCapability(RequiredCapability capability) {
188
	protected void writeRequiredCapability(IRequiredCapability capability) {
173
		start(REQUIRED_CAPABILITY_ELEMENT);
189
		start(REQUIRED_CAPABILITY_ELEMENT);
174
		attribute(NAMESPACE_ATTRIBUTE, capability.getNamespace());
190
		attribute(NAMESPACE_ATTRIBUTE, capability.getNamespace());
175
		attribute(NAME_ATTRIBUTE, capability.getName());
191
		attribute(NAME_ATTRIBUTE, capability.getName());
Lines 207-225 Link Here
207
		}
223
		}
208
	}
224
	}
209
225
210
	protected void writeTouchpointType(TouchpointType touchpointType) {
226
	protected void writeTouchpointType(ITouchpointType touchpointType) {
211
		start(TOUCHPOINT_TYPE_ELEMENT);
227
		start(TOUCHPOINT_TYPE_ELEMENT);
212
		attribute(ID_ATTRIBUTE, touchpointType.getId());
228
		attribute(ID_ATTRIBUTE, touchpointType.getId());
213
		attribute(VERSION_ATTRIBUTE, touchpointType.getVersion());
229
		attribute(VERSION_ATTRIBUTE, touchpointType.getVersion());
214
		end(TOUCHPOINT_TYPE_ELEMENT);
230
		end(TOUCHPOINT_TYPE_ELEMENT);
215
	}
231
	}
216
232
217
	protected void writeTouchpointData(TouchpointData[] touchpointData) {
233
	protected void writeTouchpointData(ITouchpointData[] touchpointData) {
218
		if (touchpointData != null && touchpointData.length > 0) {
234
		if (touchpointData != null && touchpointData.length > 0) {
219
			start(TOUCHPOINT_DATA_ELEMENT);
235
			start(TOUCHPOINT_DATA_ELEMENT);
220
			attribute(COLLECTION_SIZE_ATTRIBUTE, touchpointData.length);
236
			attribute(COLLECTION_SIZE_ATTRIBUTE, touchpointData.length);
221
			for (int i = 0; i < touchpointData.length; i++) {
237
			for (int i = 0; i < touchpointData.length; i++) {
222
				TouchpointData nextData = touchpointData[i];
238
				ITouchpointData nextData = touchpointData[i];
223
				Map instructions = nextData.getInstructions();
239
				Map instructions = nextData.getInstructions();
224
				if (instructions.size() > 0) {
240
				if (instructions.size() > 0) {
225
					start(TOUCHPOINT_DATA_INSTRUCTIONS_ELEMENT);
241
					start(TOUCHPOINT_DATA_INSTRUCTIONS_ELEMENT);
Lines 228-234 Link Here
228
						Map.Entry entry = (Map.Entry) iter.next();
244
						Map.Entry entry = (Map.Entry) iter.next();
229
						start(TOUCHPOINT_DATA_INSTRUCTION_ELEMENT);
245
						start(TOUCHPOINT_DATA_INSTRUCTION_ELEMENT);
230
						attribute(TOUCHPOINT_DATA_INSTRUCTION_KEY_ATTRIBUTE, entry.getKey());
246
						attribute(TOUCHPOINT_DATA_INSTRUCTION_KEY_ATTRIBUTE, entry.getKey());
231
						TouchpointInstruction instruction = (TouchpointInstruction) entry.getValue();
247
						ITouchpointInstruction instruction = (ITouchpointInstruction) entry.getValue();
232
						if (instruction.getImportAttribute() != null)
248
						if (instruction.getImportAttribute() != null)
233
							attribute(TOUCHPOINT_DATA_INSTRUCTION_IMPORT_ATTRIBUTE, instruction.getImportAttribute());
249
							attribute(TOUCHPOINT_DATA_INSTRUCTION_IMPORT_ATTRIBUTE, instruction.getImportAttribute());
234
						cdata(instruction.getBody(), true);
250
						cdata(instruction.getBody(), true);
Lines 249-255 Link Here
249
		}
265
		}
250
	}
266
	}
251
267
252
	private void writeLicenses(License license) {
268
	private void writeLicenses(ILicense license) {
253
		if (license != null) {
269
		if (license != null) {
254
			// In the future there may be more than one license, so we write this 
270
			// In the future there may be more than one license, so we write this 
255
			// as a collection of one.
271
			// as a collection of one.
Lines 265-271 Link Here
265
		}
281
		}
266
	}
282
	}
267
283
268
	private void writeCopyright(Copyright copyright) {
284
	private void writeCopyright(ICopyright copyright) {
269
		if (copyright != null) {
285
		if (copyright != null) {
270
			start(COPYRIGHT_ELEMENT);
286
			start(COPYRIGHT_ELEMENT);
271
			try {
287
			try {
(-)src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java (-28 / +28 lines)
Lines 16-27 Link Here
16
import org.eclipse.equinox.internal.p2.core.helpers.OrderedProperties;
16
import org.eclipse.equinox.internal.p2.core.helpers.OrderedProperties;
17
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
17
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
18
import org.eclipse.equinox.internal.p2.persistence.XMLParser;
18
import org.eclipse.equinox.internal.p2.persistence.XMLParser;
19
import org.eclipse.equinox.internal.provisional.p2.core.Version;
20
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
19
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
21
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
20
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.*;
22
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.*;
21
import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.RepositoryReference;
23
import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.RepositoryReference;
22
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
23
import org.osgi.framework.BundleContext;
24
import org.osgi.framework.BundleContext;
24
import org.eclipse.equinox.internal.provisional.p2.core.Version;
25
import org.xml.sax.Attributes;
25
import org.xml.sax.Attributes;
26
import org.xml.sax.ContentHandler;
26
import org.xml.sax.ContentHandler;
27
27
Lines 240-246 Link Here
240
			if (isValidXML()) {
240
			if (isValidXML()) {
241
				if (requirementChangesHandler != null) {
241
				if (requirementChangesHandler != null) {
242
					currentUnit = new MetadataFactory.InstallableUnitPatchDescription();
242
					currentUnit = new MetadataFactory.InstallableUnitPatchDescription();
243
					((InstallableUnitPatchDescription) currentUnit).setRequirementChanges((RequirementChange[]) requirementChangesHandler.getRequirementChanges().toArray(new RequirementChange[requirementChangesHandler.getRequirementChanges().size()]));
243
					((InstallableUnitPatchDescription) currentUnit).setRequirementChanges((IRequirementChange[]) requirementChangesHandler.getRequirementChanges().toArray(new IRequirementChange[requirementChangesHandler.getRequirementChanges().size()]));
244
					if (applicabilityScopeHandler != null)
244
					if (applicabilityScopeHandler != null)
245
						((InstallableUnitPatchDescription) currentUnit).setApplicabilityScope(applicabilityScopeHandler.getScope());
245
						((InstallableUnitPatchDescription) currentUnit).setApplicabilityScope(applicabilityScopeHandler.getScope());
246
					if (lifeCycleHandler != null)
246
					if (lifeCycleHandler != null)
Lines 278-295 Link Here
278
				//End of backward compatibility
278
				//End of backward compatibility
279
279
280
				if (licensesHandler != null) {
280
				if (licensesHandler != null) {
281
					License license = licensesHandler.getLicense();
281
					ILicense license = licensesHandler.getLicense();
282
					currentUnit.setLicense(license);
282
					currentUnit.setLicense(license);
283
				}
283
				}
284
284
285
				if (copyrightHandler != null) {
285
				if (copyrightHandler != null) {
286
					Copyright copyright = copyrightHandler.getCopyright();
286
					ICopyright copyright = copyrightHandler.getCopyright();
287
					currentUnit.setCopyright(copyright);
287
					currentUnit.setCopyright(copyright);
288
				}
288
				}
289
289
290
				ProvidedCapability[] providedCapabilities = (providedCapabilitiesHandler == null ? new ProvidedCapability[0] : providedCapabilitiesHandler.getProvidedCapabilities());
290
				IProvidedCapability[] providedCapabilities = (providedCapabilitiesHandler == null ? new IProvidedCapability[0] : providedCapabilitiesHandler.getProvidedCapabilities());
291
				currentUnit.setCapabilities(providedCapabilities);
291
				currentUnit.setCapabilities(providedCapabilities);
292
				RequiredCapability[] requiredCapabilities = (requiredCapabilitiesHandler == null ? new RequiredCapability[0] : requiredCapabilitiesHandler.getRequiredCapabilities());
292
				IRequiredCapability[] requiredCapabilities = (requiredCapabilitiesHandler == null ? new IRequiredCapability[0] : requiredCapabilitiesHandler.getRequiredCapabilities());
293
				currentUnit.setRequiredCapabilities(requiredCapabilities);
293
				currentUnit.setRequiredCapabilities(requiredCapabilities);
294
				if (filterHandler != null) {
294
				if (filterHandler != null) {
295
					currentUnit.setFilter(filterHandler.getText());
295
					currentUnit.setFilter(filterHandler.getText());
Lines 301-307 Link Here
301
				} else {
301
				} else {
302
					// TODO: create an error
302
					// TODO: create an error
303
				}
303
				}
304
				TouchpointData[] touchpointData = (touchpointDataHandler == null ? new TouchpointData[0] : touchpointDataHandler.getTouchpointData());
304
				ITouchpointData[] touchpointData = (touchpointDataHandler == null ? new ITouchpointData[0] : touchpointDataHandler.getTouchpointData());
305
				for (int i = 0; i < touchpointData.length; i++)
305
				for (int i = 0; i < touchpointData.length; i++)
306
					currentUnit.addTouchpointData(touchpointData[i]);
306
					currentUnit.addTouchpointData(touchpointData[i]);
307
				if (updateDescriptorHandler != null)
307
				if (updateDescriptorHandler != null)
Lines 328-335 Link Here
328
			}
328
			}
329
		}
329
		}
330
330
331
		public RequiredCapability[][] getScope() {
331
		public IRequiredCapability[][] getScope() {
332
			return (RequiredCapability[][]) scopes.toArray(new RequiredCapability[scopes.size()][]);
332
			return (IRequiredCapability[][]) scopes.toArray(new IRequiredCapability[scopes.size()][]);
333
		}
333
		}
334
	}
334
	}
335
335
Lines 405-411 Link Here
405
		}
405
		}
406
406
407
		protected void finished() {
407
		protected void finished() {
408
			requirementChanges.add(new RequirementChange(from.size() == 0 ? null : (RequiredCapability) from.get(0), to.size() == 0 ? null : (RequiredCapability) to.get(0)));
408
			requirementChanges.add(new RequirementChange(from.size() == 0 ? null : (IRequiredCapability) from.get(0), to.size() == 0 ? null : (IRequiredCapability) to.get(0)));
409
		}
409
		}
410
	}
410
	}
411
411
Lines 435-444 Link Here
435
			lifeCycleRequirement = new ArrayList(1);
435
			lifeCycleRequirement = new ArrayList(1);
436
		}
436
		}
437
437
438
		public RequiredCapability getLifeCycleRequirement() {
438
		public IRequiredCapability getLifeCycleRequirement() {
439
			if (lifeCycleRequirement.size() == 0)
439
			if (lifeCycleRequirement.size() == 0)
440
				return null;
440
				return null;
441
			return (RequiredCapability) lifeCycleRequirement.get(0);
441
			return (IRequiredCapability) lifeCycleRequirement.get(0);
442
		}
442
		}
443
443
444
		public void startElement(String name, Attributes attributes) {
444
		public void startElement(String name, Attributes attributes) {
Lines 459-466 Link Here
459
			providedCapabilities = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
459
			providedCapabilities = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
460
		}
460
		}
461
461
462
		public ProvidedCapability[] getProvidedCapabilities() {
462
		public IProvidedCapability[] getProvidedCapabilities() {
463
			return (ProvidedCapability[]) providedCapabilities.toArray(new ProvidedCapability[providedCapabilities.size()]);
463
			return (IProvidedCapability[]) providedCapabilities.toArray(new IProvidedCapability[providedCapabilities.size()]);
464
		}
464
		}
465
465
466
		public void startElement(String name, Attributes attributes) {
466
		public void startElement(String name, Attributes attributes) {
Lines 496-503 Link Here
496
			requiredCapabilities = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
496
			requiredCapabilities = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
497
		}
497
		}
498
498
499
		public RequiredCapability[] getHostRequiredCapabilities() {
499
		public IRequiredCapability[] getHostRequiredCapabilities() {
500
			return (RequiredCapability[]) requiredCapabilities.toArray(new RequiredCapability[requiredCapabilities.size()]);
500
			return (IRequiredCapability[]) requiredCapabilities.toArray(new IRequiredCapability[requiredCapabilities.size()]);
501
		}
501
		}
502
502
503
		public void startElement(String name, Attributes attributes) {
503
		public void startElement(String name, Attributes attributes) {
Lines 518-525 Link Here
518
			requiredCapabilities = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
518
			requiredCapabilities = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
519
		}
519
		}
520
520
521
		public RequiredCapability[] getRequiredCapabilities() {
521
		public IRequiredCapability[] getRequiredCapabilities() {
522
			return (RequiredCapability[]) requiredCapabilities.toArray(new RequiredCapability[requiredCapabilities.size()]);
522
			return (IRequiredCapability[]) requiredCapabilities.toArray(new IRequiredCapability[requiredCapabilities.size()]);
523
		}
523
		}
524
524
525
		public void startElement(String name, Attributes attributes) {
525
		public void startElement(String name, Attributes attributes) {
Lines 535-541 Link Here
535
		private final String[] required = new String[] {NAMESPACE_ATTRIBUTE, NAME_ATTRIBUTE, VERSION_RANGE_ATTRIBUTE};
535
		private final String[] required = new String[] {NAMESPACE_ATTRIBUTE, NAME_ATTRIBUTE, VERSION_RANGE_ATTRIBUTE};
536
		private final String[] optional = new String[] {CAPABILITY_OPTIONAL_ATTRIBUTE, CAPABILITY_MULTIPLE_ATTRIBUTE, CAPABILITY_GREED_ATTRIBUTE};
536
		private final String[] optional = new String[] {CAPABILITY_OPTIONAL_ATTRIBUTE, CAPABILITY_MULTIPLE_ATTRIBUTE, CAPABILITY_GREED_ATTRIBUTE};
537
537
538
		private RequiredCapability currentCapability = null;
538
		private IRequiredCapability currentCapability = null;
539
539
540
		private TextHandler filterHandler = null;
540
		private TextHandler filterHandler = null;
541
		private CapabilitySelectorsHandler selectorsHandler = null;
541
		private CapabilitySelectorsHandler selectorsHandler = null;
Lines 661-667 Link Here
661
661
662
	protected class TouchpointDataHandler extends AbstractHandler {
662
	protected class TouchpointDataHandler extends AbstractHandler {
663
663
664
		TouchpointData touchpointData = null;
664
		ITouchpointData touchpointData = null;
665
665
666
		List data = null;
666
		List data = null;
667
667
Lines 671-678 Link Here
671
			data = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
671
			data = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(4));
672
		}
672
		}
673
673
674
		public TouchpointData[] getTouchpointData() {
674
		public ITouchpointData[] getTouchpointData() {
675
			TouchpointData[] result = new TouchpointData[data.size()];
675
			ITouchpointData[] result = new ITouchpointData[data.size()];
676
			for (int i = 0; i < result.length; i++)
676
			for (int i = 0; i < result.length; i++)
677
				result[i] = ((TouchpointInstructionsHandler) data.get(i)).getTouchpointData();
677
				result[i] = ((TouchpointInstructionsHandler) data.get(i)).getTouchpointData();
678
			return result;
678
			return result;
Lines 697-703 Link Here
697
			instructions = (size != null ? new LinkedHashMap(new Integer(size).intValue()) : new LinkedHashMap(4));
697
			instructions = (size != null ? new LinkedHashMap(new Integer(size).intValue()) : new LinkedHashMap(4));
698
		}
698
		}
699
699
700
		public TouchpointData getTouchpointData() {
700
		public ITouchpointData getTouchpointData() {
701
			return MetadataFactory.createTouchpointData(instructions);
701
			return MetadataFactory.createTouchpointData(instructions);
702
		}
702
		}
703
703
Lines 770-779 Link Here
770
			licenses = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(2));
770
			licenses = (size != null ? new ArrayList(new Integer(size).intValue()) : new ArrayList(2));
771
		}
771
		}
772
772
773
		public License getLicense() {
773
		public ILicense getLicense() {
774
			if (licenses.size() == 0)
774
			if (licenses.size() == 0)
775
				return null;
775
				return null;
776
			return (License) licenses.get(0);
776
			return (ILicense) licenses.get(0);
777
		}
777
		}
778
778
779
		public void startElement(String name, Attributes attributes) {
779
		public void startElement(String name, Attributes attributes) {
Lines 814-820 Link Here
814
	protected class CopyrightHandler extends TextHandler {
814
	protected class CopyrightHandler extends TextHandler {
815
815
816
		URI location = null;
816
		URI location = null;
817
		private Copyright copyright;
817
		private ICopyright copyright;
818
818
819
		public CopyrightHandler(AbstractHandler parentHandler, Attributes attributes) {
819
		public CopyrightHandler(AbstractHandler parentHandler, Attributes attributes) {
820
			super(parentHandler, COPYRIGHT_ELEMENT);
820
			super(parentHandler, COPYRIGHT_ELEMENT);
Lines 827-833 Link Here
827
			}
827
			}
828
		}
828
		}
829
829
830
		public Copyright getCopyright() {
830
		public ICopyright getCopyright() {
831
			return copyright;
831
			return copyright;
832
		}
832
		}
833
	}
833
	}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/IInstallableUnitPatch.java (-3 / +3 lines)
Lines 25-37 Link Here
25
	 * a scope of [[r1, r2, r3], [r4, r5]] will match any unit whose provided capabilities
25
	 * a scope of [[r1, r2, r3], [r4, r5]] will match any unit whose provided capabilities
26
	 * satisfy the expression ((r1 ^ r2 ^ r3) | (r4 ^ r5)).
26
	 * satisfy the expression ((r1 ^ r2 ^ r3) | (r4 ^ r5)).
27
	 */
27
	 */
28
	RequiredCapability[][] getApplicabilityScope();
28
	IRequiredCapability[][] getApplicabilityScope();
29
29
30
	/**
30
	/**
31
	 * Returns the requirement changes imposed by the patch.
31
	 * Returns the requirement changes imposed by the patch.
32
	 * @return The patch requirement changes.
32
	 * @return The patch requirement changes.
33
	 */
33
	 */
34
	RequirementChange[] getRequirementsChange();
34
	IRequirementChange[] getRequirementsChange();
35
35
36
	/**
36
	/**
37
	 * Returns the required capability that defines the lifecycle of this patch. The
37
	 * Returns the required capability that defines the lifecycle of this patch. The
Lines 39-43 Link Here
39
	 * is satisfied by some IU in the profile. If a future provisioning operation causes
39
	 * is satisfied by some IU in the profile. If a future provisioning operation causes
40
	 * the requirement to no longer be satisfied, the patch will be uninstalled.
40
	 * the requirement to no longer be satisfied, the patch will be uninstalled.
41
	 */
41
	 */
42
	RequiredCapability getLifeCycle();
42
	IRequiredCapability getLifeCycle();
43
}
43
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/TouchpointType.java (-10 / +4 lines)
Lines 16-28 Link Here
16
 * Identifies a particular touchpoint. A touchpoint is identified by an id 
16
 * Identifies a particular touchpoint. A touchpoint is identified by an id 
17
 * and a version.
17
 * and a version.
18
 */
18
 */
19
public class TouchpointType {
19
public class TouchpointType implements ITouchpointType {
20
	/**
21
	 * A touchpoint type indicating that the "null" touchpoint should be used.
22
	 * The null touchpoint does not participate in any install phase.
23
	 */
24
	public static final TouchpointType NONE = new TouchpointType("null", Version.emptyVersion); //$NON-NLS-1$
25
26
	private String id;//never null
20
	private String id;//never null
27
	private Version version;//never null
21
	private Version version;//never null
28
22
Lines 36-45 Link Here
36
			return true;
30
			return true;
37
		if (super.equals(obj))
31
		if (super.equals(obj))
38
			return true;
32
			return true;
39
		if (getClass() != obj.getClass())
33
		if (obj == null || obj instanceof ITouchpointType)
40
			return false;
34
			return false;
41
		TouchpointType other = (TouchpointType) obj;
35
		ITouchpointType other = (ITouchpointType) obj;
42
		return id.equals(other.id) && version.equals(other.version);
36
		return id.equals(other.getId()) && version.equals(other.getVersion());
43
	}
37
	}
44
38
45
	public String getId() {
39
	public String getId() {
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/RequiredCapability.java (-10 / +10 lines)
Lines 24-30 Link Here
24
 * 
24
 * 
25
 * @see IInstallableUnit#NAMESPACE_IU_ID
25
 * @see IInstallableUnit#NAMESPACE_IU_ID
26
 */
26
 */
27
public class RequiredCapability {
27
public class RequiredCapability implements IRequiredCapability {
28
	private static final String[] NO_SELECTORS = new String[0];
28
	private static final String[] NO_SELECTORS = new String[0];
29
29
30
	private String filter;
30
	private String filter;
Lines 60-82 Link Here
60
			return true;
60
			return true;
61
		if (obj == null)
61
		if (obj == null)
62
			return false;
62
			return false;
63
		if (getClass() != obj.getClass())
63
		if (!(obj instanceof IRequiredCapability))
64
			return false;
64
			return false;
65
		final RequiredCapability other = (RequiredCapability) obj;
65
		final IRequiredCapability other = (IRequiredCapability) obj;
66
		if (filter == null) {
66
		if (filter == null) {
67
			if (other.filter != null)
67
			if (other.getFilter() != null)
68
				return false;
68
				return false;
69
		} else if (!filter.equals(other.filter))
69
		} else if (!filter.equals(other.getFilter()))
70
			return false;
70
			return false;
71
		if (multiple != other.multiple)
71
		if (multiple != other.isMultiple())
72
			return false;
72
			return false;
73
		if (!name.equals(other.name))
73
		if (!name.equals(other.getName()))
74
			return false;
74
			return false;
75
		if (!namespace.equals(other.namespace))
75
		if (!namespace.equals(other.getNamespace()))
76
			return false;
76
			return false;
77
		if (optional != other.optional)
77
		if (optional != other.isOptional())
78
			return false;
78
			return false;
79
		if (!range.equals(other.range))
79
		if (!range.equals(other.getRange()))
80
			return false;
80
			return false;
81
		return true;
81
		return true;
82
	}
82
	}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/RequirementChange.java (-14 / +14 lines)
Lines 8-36 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.provisional.p2.metadata;
9
package org.eclipse.equinox.internal.provisional.p2.metadata;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
12
import org.eclipse.equinox.internal.provisional.p2.core.Version;
11
import org.eclipse.equinox.internal.provisional.p2.core.Version;
12
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
13
13
14
public class RequirementChange {
14
public class RequirementChange implements IRequirementChange {
15
	private RequiredCapability applyOn;
15
	private IRequiredCapability applyOn;
16
	private RequiredCapability newValue;
16
	private IRequiredCapability newValue;
17
17
18
	public RequirementChange(RequiredCapability applyOn2, RequiredCapability newValue2) {
18
	public RequirementChange(IRequiredCapability applyOn2, IRequiredCapability newValue2) {
19
		if (applyOn2 == null && newValue2 == null)
19
		if (applyOn2 == null && newValue2 == null)
20
			throw new IllegalArgumentException();
20
			throw new IllegalArgumentException();
21
		this.applyOn = applyOn2;
21
		this.applyOn = applyOn2;
22
		this.newValue = newValue2;
22
		this.newValue = newValue2;
23
	}
23
	}
24
24
25
	public RequiredCapability applyOn() {
25
	public IRequiredCapability applyOn() {
26
		return applyOn;
26
		return applyOn;
27
	}
27
	}
28
28
29
	public RequiredCapability newValue() {
29
	public IRequiredCapability newValue() {
30
		return newValue;
30
		return newValue;
31
	}
31
	}
32
32
33
	public boolean matches(RequiredCapability toMatch) {
33
	public boolean matches(IRequiredCapability toMatch) {
34
		if (!toMatch.getNamespace().equals(applyOn.getNamespace()))
34
		if (!toMatch.getNamespace().equals(applyOn.getNamespace()))
35
			return false;
35
			return false;
36
		if (!toMatch.getName().equals(applyOn.getName()))
36
		if (!toMatch.getName().equals(applyOn.getName()))
Lines 93-110 Link Here
93
			return true;
93
			return true;
94
		if (obj == null)
94
		if (obj == null)
95
			return false;
95
			return false;
96
		if (getClass() != obj.getClass())
96
		if (!(obj instanceof IRequirementChange))
97
			return false;
97
			return false;
98
		final RequirementChange other = (RequirementChange) obj;
98
		final IRequirementChange other = (IRequirementChange) obj;
99
		if (applyOn == null) {
99
		if (applyOn == null) {
100
			if (other.applyOn != null)
100
			if (other.applyOn() != null)
101
				return false;
101
				return false;
102
		} else if (!applyOn.equals(other.applyOn))
102
		} else if (!applyOn.equals(other.applyOn()))
103
			return false;
103
			return false;
104
		if (newValue == null) {
104
		if (newValue == null) {
105
			if (other.newValue != null)
105
			if (other.newValue() != null)
106
				return false;
106
				return false;
107
		} else if (!newValue.equals(other.newValue))
107
		} else if (!newValue.equals(other.newValue()))
108
			return false;
108
			return false;
109
		return true;
109
		return true;
110
	}
110
	}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/License.java (-3 / +3 lines)
Lines 21-27 Link Here
21
 * which may be the full text or an annotation.  An optional URL field can be specified
21
 * which may be the full text or an annotation.  An optional URL field can be specified
22
 * which links to full text.  Licenses can be easily compared using their digests.
22
 * which links to full text.  Licenses can be easily compared using their digests.
23
 */
23
 */
24
public class License {
24
public class License implements ILicense {
25
	/**
25
	/**
26
	 * The <code>body</code> contains the descriptive text for the license. This may
26
	 * The <code>body</code> contains the descriptive text for the license. This may
27
	 * be a summary for a full license specified in a URL.
27
	 * be a summary for a full license specified in a URL.
Lines 90-97 Link Here
90
			return true;
90
			return true;
91
		if (obj == null)
91
		if (obj == null)
92
			return false;
92
			return false;
93
		if (obj instanceof License) {
93
		if (obj instanceof ILicense) {
94
			License other = (License) obj;
94
			ILicense other = (ILicense) obj;
95
			if (other.getDigest().equals(getDigest()))
95
			if (other.getDigest().equals(getDigest()))
96
				return true;
96
				return true;
97
		}
97
		}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/TouchpointInstruction.java (-7 / +7 lines)
Lines 48-54 Link Here
48
 * @noextend This class is not intended to be subclassed by clients.
48
 * @noextend This class is not intended to be subclassed by clients.
49
 * @see MetadataFactory#createTouchpointInstruction(String, String)
49
 * @see MetadataFactory#createTouchpointInstruction(String, String)
50
 */
50
 */
51
public class TouchpointInstruction {
51
public class TouchpointInstruction implements ITouchpointInstruction {
52
52
53
	private final String body;
53
	private final String body;
54
	private final String importAttribute;
54
	private final String importAttribute;
Lines 112-129 Link Here
112
			return true;
112
			return true;
113
		if (obj == null)
113
		if (obj == null)
114
			return false;
114
			return false;
115
		if (getClass() != obj.getClass())
115
		if (!(obj instanceof ITouchpointInstruction))
116
			return false;
116
			return false;
117
		TouchpointInstruction other = (TouchpointInstruction) obj;
117
		ITouchpointInstruction other = (ITouchpointInstruction) obj;
118
		if (body == null) {
118
		if (body == null) {
119
			if (other.body != null)
119
			if (other.getBody() != null)
120
				return false;
120
				return false;
121
		} else if (!body.equals(other.body))
121
		} else if (!body.equals(other.getBody()))
122
			return false;
122
			return false;
123
		if (importAttribute == null) {
123
		if (importAttribute == null) {
124
			if (other.importAttribute != null)
124
			if (other.getImportAttribute() != null)
125
				return false;
125
				return false;
126
		} else if (!importAttribute.equals(other.importAttribute))
126
		} else if (!importAttribute.equals(other.getImportAttribute()))
127
			return false;
127
			return false;
128
		return true;
128
		return true;
129
	}
129
	}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/MetadataFactory.java (-31 / +31 lines)
Lines 15-22 Link Here
15
import java.util.Map.Entry;
15
import java.util.Map.Entry;
16
import org.eclipse.core.runtime.Assert;
16
import org.eclipse.core.runtime.Assert;
17
import org.eclipse.equinox.internal.p2.metadata.*;
17
import org.eclipse.equinox.internal.p2.metadata.*;
18
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
19
import org.eclipse.equinox.internal.provisional.p2.core.Version;
18
import org.eclipse.equinox.internal.provisional.p2.core.Version;
19
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
20
20
21
/**
21
/**
22
 * A factory class for instantiating various p2 metadata objects.
22
 * A factory class for instantiating various p2 metadata objects.
Lines 32-59 Link Here
32
		public void addProvidedCapabilities(Collection additional) {
32
		public void addProvidedCapabilities(Collection additional) {
33
			if (additional == null || additional.size() == 0)
33
			if (additional == null || additional.size() == 0)
34
				return;
34
				return;
35
			ProvidedCapability[] current = unit().getProvidedCapabilities();
35
			IProvidedCapability[] current = unit().getProvidedCapabilities();
36
			ProvidedCapability[] result = new ProvidedCapability[additional.size() + current.length];
36
			IProvidedCapability[] result = new IProvidedCapability[additional.size() + current.length];
37
			System.arraycopy(current, 0, result, 0, current.length);
37
			System.arraycopy(current, 0, result, 0, current.length);
38
			int j = current.length;
38
			int j = current.length;
39
			for (Iterator i = additional.iterator(); i.hasNext();)
39
			for (Iterator i = additional.iterator(); i.hasNext();)
40
				result[j++] = (ProvidedCapability) i.next();
40
				result[j++] = (IProvidedCapability) i.next();
41
			unit().setCapabilities(result);
41
			unit().setCapabilities(result);
42
		}
42
		}
43
43
44
		public void addRequiredCapabilities(Collection additional) {
44
		public void addRequiredCapabilities(Collection additional) {
45
			if (additional == null || additional.size() == 0)
45
			if (additional == null || additional.size() == 0)
46
				return;
46
				return;
47
			RequiredCapability[] current = unit().getRequiredCapabilities();
47
			IRequiredCapability[] current = unit().getRequiredCapabilities();
48
			RequiredCapability[] result = new RequiredCapability[additional.size() + current.length];
48
			IRequiredCapability[] result = new IRequiredCapability[additional.size() + current.length];
49
			System.arraycopy(current, 0, result, 0, current.length);
49
			System.arraycopy(current, 0, result, 0, current.length);
50
			int j = current.length;
50
			int j = current.length;
51
			for (Iterator i = additional.iterator(); i.hasNext();)
51
			for (Iterator i = additional.iterator(); i.hasNext();)
52
				result[j++] = (RequiredCapability) i.next();
52
				result[j++] = (IRequiredCapability) i.next();
53
			unit().setRequiredCapabilities(result);
53
			unit().setRequiredCapabilities(result);
54
		}
54
		}
55
55
56
		public void addTouchpointData(TouchpointData data) {
56
		public void addTouchpointData(ITouchpointData data) {
57
			Assert.isNotNull(data);
57
			Assert.isNotNull(data);
58
			unit().addTouchpointData(data);
58
			unit().addTouchpointData(data);
59
		}
59
		}
Lines 62-72 Link Here
62
			return unit().getId();
62
			return unit().getId();
63
		}
63
		}
64
64
65
		public ProvidedCapability[] getProvidedCapabilities() {
65
		public IProvidedCapability[] getProvidedCapabilities() {
66
			return unit().getProvidedCapabilities();
66
			return unit().getProvidedCapabilities();
67
		}
67
		}
68
68
69
		public RequiredCapability[] getRequiredCapabilities() {
69
		public IRequiredCapability[] getRequiredCapabilities() {
70
			return unit().getRequiredCapabilities();
70
			return unit().getRequiredCapabilities();
71
		}
71
		}
72
72
Lines 76-82 Link Here
76
		 * 
76
		 * 
77
		 * @return The current touchpoint data on this description
77
		 * @return The current touchpoint data on this description
78
		 */
78
		 */
79
		public TouchpointData[] getTouchpointData() {
79
		public ITouchpointData[] getTouchpointData() {
80
			return unit().getTouchpointData();
80
			return unit().getTouchpointData();
81
81
82
		}
82
		}
Lines 89-99 Link Here
89
			unit().setArtifacts(value);
89
			unit().setArtifacts(value);
90
		}
90
		}
91
91
92
		public void setCapabilities(ProvidedCapability[] exportedCapabilities) {
92
		public void setCapabilities(IProvidedCapability[] exportedCapabilities) {
93
			unit().setCapabilities(exportedCapabilities);
93
			unit().setCapabilities(exportedCapabilities);
94
		}
94
		}
95
95
96
		public void setCopyright(Copyright copyright) {
96
		public void setCopyright(ICopyright copyright) {
97
			unit().setCopyright(copyright);
97
			unit().setCopyright(copyright);
98
		}
98
		}
99
99
Lines 105-111 Link Here
105
			unit().setId(id);
105
			unit().setId(id);
106
		}
106
		}
107
107
108
		public void setLicense(License license) {
108
		public void setLicense(ILicense license) {
109
			unit().setLicense(license);
109
			unit().setLicense(license);
110
		}
110
		}
111
111
Lines 113-119 Link Here
113
			unit().setProperty(key, value);
113
			unit().setProperty(key, value);
114
		}
114
		}
115
115
116
		public void setRequiredCapabilities(RequiredCapability[] capabilities) {
116
		public void setRequiredCapabilities(IRequiredCapability[] capabilities) {
117
			unit().setRequiredCapabilities(capabilities);
117
			unit().setRequiredCapabilities(capabilities);
118
		}
118
		}
119
119
Lines 149-155 Link Here
149
	}
149
	}
150
150
151
	public static class InstallableUnitFragmentDescription extends InstallableUnitDescription {
151
	public static class InstallableUnitFragmentDescription extends InstallableUnitDescription {
152
		public void setHost(RequiredCapability[] hostRequirements) {
152
		public void setHost(IRequiredCapability[] hostRequirements) {
153
			((InstallableUnitFragment) unit()).setHost(hostRequirements);
153
			((InstallableUnitFragment) unit()).setHost(hostRequirements);
154
		}
154
		}
155
155
Lines 162-185 Link Here
162
162
163
	public static class InstallableUnitPatchDescription extends InstallableUnitDescription {
163
	public static class InstallableUnitPatchDescription extends InstallableUnitDescription {
164
164
165
		public void setApplicabilityScope(RequiredCapability[][] applyTo) {
165
		public void setApplicabilityScope(IRequiredCapability[][] applyTo) {
166
			if (applyTo == null)
166
			if (applyTo == null)
167
				throw new IllegalArgumentException("A patch scope can not be null"); //$NON-NLS-1$
167
				throw new IllegalArgumentException("A patch scope can not be null"); //$NON-NLS-1$
168
			((InstallableUnitPatch) unit()).setApplicabilityScope(applyTo);
168
			((InstallableUnitPatch) unit()).setApplicabilityScope(applyTo);
169
		}
169
		}
170
170
171
		public void setLifeCycle(RequiredCapability lifeCycle) {
171
		public void setLifeCycle(IRequiredCapability lifeCycle) {
172
			((InstallableUnitPatch) unit()).setLifeCycle(lifeCycle);
172
			((InstallableUnitPatch) unit()).setLifeCycle(lifeCycle);
173
		}
173
		}
174
174
175
		public void setRequirementChanges(RequirementChange[] changes) {
175
		public void setRequirementChanges(IRequirementChange[] changes) {
176
			((InstallableUnitPatch) unit()).setRequirementsChange(changes);
176
			((InstallableUnitPatch) unit()).setRequirementsChange(changes);
177
		}
177
		}
178
178
179
		InstallableUnit unit() {
179
		InstallableUnit unit() {
180
			if (unit == null) {
180
			if (unit == null) {
181
				unit = new InstallableUnitPatch();
181
				unit = new InstallableUnitPatch();
182
				((InstallableUnitPatch) unit()).setApplicabilityScope(new RequiredCapability[0][0]);
182
				((InstallableUnitPatch) unit()).setApplicabilityScope(new IRequiredCapability[0][0]);
183
			}
183
			}
184
			return unit;
184
			return unit;
185
		}
185
		}
Lines 188-194 Link Here
188
	/**
188
	/**
189
	 * Singleton touchpoint data for a touchpoint with no instructions.
189
	 * Singleton touchpoint data for a touchpoint with no instructions.
190
	 */
190
	 */
191
	private static final TouchpointData EMPTY_TOUCHPOINT_DATA = new TouchpointData(Collections.EMPTY_MAP);
191
	private static final ITouchpointData EMPTY_TOUCHPOINT_DATA = new TouchpointData(Collections.EMPTY_MAP);
192
192
193
	private static TouchpointType[] typeCache = new TouchpointType[5];
193
	private static TouchpointType[] typeCache = new TouchpointType[5];
194
194
Lines 234-251 Link Here
234
	}
234
	}
235
235
236
	/**
236
	/**
237
	 * Returns a {@link ProvidedCapability} with the given values.
237
	 * Returns a {@link IProvidedCapability} with the given values.
238
	 * 
238
	 * 
239
	 * @param namespace The capability namespace
239
	 * @param namespace The capability namespace
240
	 * @param name The capability name
240
	 * @param name The capability name
241
	 * @param version The capability version
241
	 * @param version The capability version
242
	 */
242
	 */
243
	public static ProvidedCapability createProvidedCapability(String namespace, String name, Version version) {
243
	public static IProvidedCapability createProvidedCapability(String namespace, String name, Version version) {
244
		return new ProvidedCapability(namespace, name, version);
244
		return new ProvidedCapability(namespace, name, version);
245
	}
245
	}
246
246
247
	/**
247
	/**
248
	 * Returns a {@link RequiredCapability} with the given values.
248
	 * Returns a {@link IRequiredCapability} with the given values.
249
	 * 
249
	 * 
250
	 * @param namespace The capability namespace
250
	 * @param namespace The capability namespace
251
	 * @param name The required capability name
251
	 * @param name The required capability name
Lines 257-267 Link Here
257
	 * and <code>false</code> otherwise.
257
	 * and <code>false</code> otherwise.
258
	 * @param multiple <code>true</code> if this capability can be satisfied by multiple provided capabilities, or it requires exactly one match
258
	 * @param multiple <code>true</code> if this capability can be satisfied by multiple provided capabilities, or it requires exactly one match
259
	 */
259
	 */
260
	public static RequiredCapability createRequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple) {
260
	public static IRequiredCapability createRequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple) {
261
		return new RequiredCapability(namespace, name, range, filter, optional, multiple);
261
		return new RequiredCapability(namespace, name, range, filter, optional, multiple);
262
	}
262
	}
263
263
264
	public static RequiredCapability createRequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) {
264
	public static IRequiredCapability createRequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) {
265
		return new RequiredCapability(namespace, name, range, filter, optional, multiple, greedy);
265
		return new RequiredCapability(namespace, name, range, filter, optional, multiple, greedy);
266
	}
266
	}
267
267
Lines 284-295 Link Here
284
	}
284
	}
285
285
286
	/**
286
	/**
287
	 * Returns an instance of {@link TouchpointData} with the given instructions.
287
	 * Returns an instance of {@link ITouchpointData} with the given instructions.
288
	 * 
288
	 * 
289
	 * @param instructions The instructions for the touchpoint data.
289
	 * @param instructions The instructions for the touchpoint data.
290
	 * @return The created touchpoint data
290
	 * @return The created touchpoint data
291
	 */
291
	 */
292
	public static TouchpointData createTouchpointData(Map instructions) {
292
	public static ITouchpointData createTouchpointData(Map instructions) {
293
		Assert.isNotNull(instructions);
293
		Assert.isNotNull(instructions);
294
		//copy the map to protect against subsequent change by caller
294
		//copy the map to protect against subsequent change by caller
295
		if (instructions.isEmpty())
295
		if (instructions.isEmpty())
Lines 307-313 Link Here
307
		return new TouchpointData(result);
307
		return new TouchpointData(result);
308
	}
308
	}
309
309
310
	public static TouchpointInstruction createTouchpointInstruction(String body, String importAttribute) {
310
	public static ITouchpointInstruction createTouchpointInstruction(String body, String importAttribute) {
311
		return new TouchpointInstruction(body, importAttribute);
311
		return new TouchpointInstruction(body, importAttribute);
312
	}
312
	}
313
313
Lines 322-329 Link Here
322
		Assert.isNotNull(id);
322
		Assert.isNotNull(id);
323
		Assert.isNotNull(version);
323
		Assert.isNotNull(version);
324
324
325
		if (id.equals(TouchpointType.NONE.getId()) && version.equals(TouchpointType.NONE.getVersion()))
325
		if (id.equals(ITouchpointType.NONE.getId()) && version.equals(ITouchpointType.NONE.getVersion()))
326
			return TouchpointType.NONE;
326
			return ITouchpointType.NONE;
327
327
328
		synchronized (typeCache) {
328
		synchronized (typeCache) {
329
			TouchpointType result = getCachedTouchpointType(id, version);
329
			TouchpointType result = getCachedTouchpointType(id, version);
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/IInstallableUnit.java (-7 / +7 lines)
Lines 192-204 Link Here
192
192
193
	public String getProperty(String key);
193
	public String getProperty(String key);
194
194
195
	public ProvidedCapability[] getProvidedCapabilities();
195
	public IProvidedCapability[] getProvidedCapabilities();
196
196
197
	public RequiredCapability[] getRequiredCapabilities();
197
	public IRequiredCapability[] getRequiredCapabilities();
198
198
199
	public TouchpointData[] getTouchpointData();
199
	public ITouchpointData[] getTouchpointData();
200
200
201
	public TouchpointType getTouchpointType();
201
	public ITouchpointType getTouchpointType();
202
202
203
	public Version getVersion();
203
	public Version getVersion();
204
204
Lines 224-230 Link Here
224
	 * @return <code>true</code> if this unit satisfies the given required
224
	 * @return <code>true</code> if this unit satisfies the given required
225
	 * capability, and <code>false</code> otherwise.
225
	 * capability, and <code>false</code> otherwise.
226
	 */
226
	 */
227
	public boolean satisfies(RequiredCapability candidate);
227
	public boolean satisfies(IRequiredCapability candidate);
228
228
229
	/**
229
	/**
230
	 * Returns the unresolved equivalent of this installable unit. If this unit is
230
	 * Returns the unresolved equivalent of this installable unit. If this unit is
Lines 248-258 Link Here
248
	 * Returns the license that applies to this installable unit.
248
	 * Returns the license that applies to this installable unit.
249
	 * @return the license that applies to this installable unit or <code>null</code>
249
	 * @return the license that applies to this installable unit or <code>null</code>
250
	 */
250
	 */
251
	public License getLicense();
251
	public ILicense getLicense();
252
252
253
	/**
253
	/**
254
	 * Returns the copyright that applies to this installable unit.
254
	 * Returns the copyright that applies to this installable unit.
255
	 * @return the copyright that applies to this installable unit or <code>null</code>
255
	 * @return the copyright that applies to this installable unit or <code>null</code>
256
	 */
256
	 */
257
	public Copyright getCopyright();
257
	public ICopyright getCopyright();
258
}
258
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/TouchpointData.java (-8 / +8 lines)
Lines 22-28 Link Here
22
 * @noextend This class is not intended to be subclassed by clients.
22
 * @noextend This class is not intended to be subclassed by clients.
23
 * @see MetadataFactory#createTouchpointData(Map)
23
 * @see MetadataFactory#createTouchpointData(Map)
24
 */
24
 */
25
public class TouchpointData {
25
public class TouchpointData implements ITouchpointData {
26
26
27
	/**
27
	/**
28
	 * Map of (String->TouchpointInstruction). The set
28
	 * Map of (String->TouchpointInstruction). The set
Lines 40-52 Link Here
40
			return true;
40
			return true;
41
		if (obj == null)
41
		if (obj == null)
42
			return false;
42
			return false;
43
		if (getClass() != obj.getClass())
43
		if (!(obj instanceof ITouchpointData))
44
			return false;
44
			return false;
45
		final TouchpointData other = (TouchpointData) obj;
45
		final ITouchpointData other = (ITouchpointData) obj;
46
		if (instructions == null) {
46
		if (instructions == null) {
47
			if (other.instructions != null)
47
			if (other.getInstructions() != null)
48
				return false;
48
				return false;
49
		} else if (!instructions.equals(other.instructions))
49
		} else if (!instructions.equals(other.getInstructions()))
50
			return false;
50
			return false;
51
		return true;
51
		return true;
52
	}
52
	}
Lines 61-73 Link Here
61
	/**
61
	/**
62
	 * Returns the touchpoint instruction corresponding to the given key.
62
	 * Returns the touchpoint instruction corresponding to the given key.
63
	 */
63
	 */
64
	public TouchpointInstruction getInstruction(String instructionKey) {
64
	public ITouchpointInstruction getInstruction(String instructionKey) {
65
		return (TouchpointInstruction) instructions.get(instructionKey);
65
		return (ITouchpointInstruction) instructions.get(instructionKey);
66
	}
66
	}
67
67
68
	/**
68
	/**
69
	 * Returns an unmodifiable map of the touchpoint instructions. The map
69
	 * Returns an unmodifiable map of the touchpoint instructions. The map
70
	 * keys are strings, and the values are instances of {@link TouchpointInstruction}.
70
	 * keys are strings, and the values are instances of {@link ITouchpointInstruction}.
71
	 *
71
	 *
72
	 * @return the touchpoint instructions
72
	 * @return the touchpoint instructions
73
	 */
73
	 */
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/Copyright.java (-1 / +1 lines)
Lines 17-23 Link Here
17
 * required body text which may be the full text or a summary.  An optional location field can be specified
17
 * required body text which may be the full text or a summary.  An optional location field can be specified
18
 * which links to full text.  
18
 * which links to full text.  
19
 */
19
 */
20
public class Copyright {
20
public class Copyright implements ICopyright {
21
	/**
21
	/**
22
	 * The <code>body</code> contains the descriptive text for the copyright. This may
22
	 * The <code>body</code> contains the descriptive text for the copyright. This may
23
	 * be a summary for a copyright specified in a URL.
23
	 * be a summary for a copyright specified in a URL.
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/IInstallableUnitFragment.java (-1 / +1 lines)
Lines 9-13 Link Here
9
package org.eclipse.equinox.internal.provisional.p2.metadata;
9
package org.eclipse.equinox.internal.provisional.p2.metadata;
10
10
11
public interface IInstallableUnitFragment extends IInstallableUnit {
11
public interface IInstallableUnitFragment extends IInstallableUnit {
12
	public RequiredCapability[] getHost();
12
	public IRequiredCapability[] getHost();
13
}
13
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ProvidedCapability.java (-7 / +12 lines)
Lines 16-22 Link Here
16
/**
16
/**
17
 * Describes a capability as exposed or required by an installable unit
17
 * Describes a capability as exposed or required by an installable unit
18
 */
18
 */
19
public class ProvidedCapability {
19
public class ProvidedCapability implements IProvidedCapability {
20
	private final String name;
20
	private final String name;
21
	private final String namespace;
21
	private final String namespace;
22
	private final Version version;
22
	private final Version version;
Lines 30-40 Link Here
30
	}
30
	}
31
31
32
	public boolean equals(Object other) {
32
	public boolean equals(Object other) {
33
		if (other instanceof ProvidedCapability) {
33
		if (other == null)
34
			ProvidedCapability otherCapability = (ProvidedCapability) other;
34
			return false;
35
			return otherCapability.namespace.equals(namespace) && otherCapability.name.equals(name) && otherCapability.version.equals(version);
35
		if (!(other instanceof IProvidedCapability))
36
		}
36
			return false;
37
		return false;
37
		IProvidedCapability otherCapability = (IProvidedCapability) other;
38
		if (!(namespace.equals(otherCapability.getNamespace())))
39
			return false;
40
		if (!(name.equals(otherCapability.getName())))
41
			return false;
42
		return true;
38
	}
43
	}
39
44
40
	public String getName() {
45
	public String getName() {
Lines 58-64 Link Here
58
	 * @return <code>true</code> if this capability satisfies the given required
63
	 * @return <code>true</code> if this capability satisfies the given required
59
	 * capability, and <code>false</code> otherwise.
64
	 * capability, and <code>false</code> otherwise.
60
	 */
65
	 */
61
	public boolean satisfies(RequiredCapability candidate) {
66
	public boolean satisfies(IRequiredCapability candidate) {
62
		if (getName() == null || !getName().equals(candidate.getName()))
67
		if (getName() == null || !getName().equals(candidate.getName()))
63
			return false;
68
			return false;
64
		if (getNamespace() == null || !getNamespace().equals(candidate.getNamespace()))
69
		if (getNamespace() == null || !getNamespace().equals(candidate.getNamespace()))
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/query/CapabilityQuery.java (-6 / +7 lines)
Lines 10-17 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.metadata.query;
11
package org.eclipse.equinox.internal.provisional.p2.metadata.query;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
15
import org.eclipse.equinox.internal.provisional.p2.query.Query;
16
import org.eclipse.equinox.internal.provisional.p2.query.Query;
16
17
17
/**
18
/**
Lines 19-32 Link Here
19
 * capabilities that match one or more required capabilities.
20
 * capabilities that match one or more required capabilities.
20
 */
21
 */
21
public class CapabilityQuery extends Query {
22
public class CapabilityQuery extends Query {
22
	private RequiredCapability[] required;
23
	private IRequiredCapability[] required;
23
24
24
	/**
25
	/**
25
	 * Creates a new query on the given required capability.
26
	 * Creates a new query on the given required capability.
26
	 * @param required The required capability
27
	 * @param required The required capability
27
	 */
28
	 */
28
	public CapabilityQuery(RequiredCapability required) {
29
	public CapabilityQuery(IRequiredCapability required) {
29
		this.required = new RequiredCapability[] {required};
30
		this.required = new IRequiredCapability[] {required};
30
	}
31
	}
31
32
32
	/**
33
	/**
Lines 35-41 Link Here
35
	 * for this query to be satisfied.
36
	 * for this query to be satisfied.
36
	 * @param required The required capabilities
37
	 * @param required The required capabilities
37
	 */
38
	 */
38
	public CapabilityQuery(RequiredCapability[] required) {
39
	public CapabilityQuery(IRequiredCapability[] required) {
39
		this.required = required;
40
		this.required = required;
40
	}
41
	}
41
42
Lines 43-49 Link Here
43
	 * Returns the required capability that this query is matching against.
44
	 * Returns the required capability that this query is matching against.
44
	 * @return the required capability that this query is matching against.
45
	 * @return the required capability that this query is matching against.
45
	 */
46
	 */
46
	public RequiredCapability[] getRequiredCapabilities() {
47
	public IRequiredCapability[] getRequiredCapabilities() {
47
		return required;
48
		return required;
48
	}
49
	}
49
50
(-)src/org/eclipse/equinox/internal/p2/metadata/ResolvedInstallableUnit.java (-12 / +24 lines)
Lines 11-16 Link Here
11
 *******************************************************************************/
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata;
12
package org.eclipse.equinox.internal.p2.metadata;
13
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
15
16
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointData;
17
18
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
19
20
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
21
22
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
23
24
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
25
14
import java.util.*;
26
import java.util.*;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
27
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
16
import org.eclipse.equinox.internal.provisional.p2.core.Version;
28
import org.eclipse.equinox.internal.provisional.p2.core.Version;
Lines 62-99 Link Here
62
		return original.getProperties();
74
		return original.getProperties();
63
	}
75
	}
64
76
65
	public ProvidedCapability[] getProvidedCapabilities() {
77
	public IProvidedCapability[] getProvidedCapabilities() {
66
		ArrayList result = new ArrayList();
78
		ArrayList result = new ArrayList();
67
		result.addAll(Arrays.asList(original.getProvidedCapabilities()));
79
		result.addAll(Arrays.asList(original.getProvidedCapabilities()));
68
		for (int i = 0; i < fragments.length; i++) {
80
		for (int i = 0; i < fragments.length; i++) {
69
			result.addAll(Arrays.asList(fragments[i].getProvidedCapabilities()));
81
			result.addAll(Arrays.asList(fragments[i].getProvidedCapabilities()));
70
		}
82
		}
71
		return (ProvidedCapability[]) result.toArray(new ProvidedCapability[result.size()]);
83
		return (IProvidedCapability[]) result.toArray(new IProvidedCapability[result.size()]);
72
	}
84
	}
73
85
74
	public RequiredCapability[] getRequiredCapabilities() {
86
	public IRequiredCapability[] getRequiredCapabilities() {
75
		ArrayList result = new ArrayList();
87
		ArrayList result = new ArrayList();
76
		result.addAll(Arrays.asList(original.getRequiredCapabilities()));
88
		result.addAll(Arrays.asList(original.getRequiredCapabilities()));
77
		for (int i = 0; i < fragments.length; i++) {
89
		for (int i = 0; i < fragments.length; i++) {
78
			result.addAll(Arrays.asList(fragments[i].getRequiredCapabilities()));
90
			result.addAll(Arrays.asList(fragments[i].getRequiredCapabilities()));
79
		}
91
		}
80
		return (RequiredCapability[]) result.toArray(new RequiredCapability[result.size()]);
92
		return (IRequiredCapability[]) result.toArray(new IRequiredCapability[result.size()]);
81
93
82
	}
94
	}
83
95
84
	public TouchpointData[] getTouchpointData() {
96
	public ITouchpointData[] getTouchpointData() {
85
		ArrayList result = new ArrayList();
97
		ArrayList result = new ArrayList();
86
		result.addAll(Arrays.asList(original.getTouchpointData()));
98
		result.addAll(Arrays.asList(original.getTouchpointData()));
87
		for (int i = 0; i < fragments.length; i++) {
99
		for (int i = 0; i < fragments.length; i++) {
88
			TouchpointData[] data = fragments[i].getTouchpointData();
100
			ITouchpointData[] data = fragments[i].getTouchpointData();
89
			for (int j = 0; j < data.length; j++) {
101
			for (int j = 0; j < data.length; j++) {
90
				result.add(data[j]);
102
				result.add(data[j]);
91
			}
103
			}
92
		}
104
		}
93
		return (TouchpointData[]) result.toArray(new TouchpointData[result.size()]);
105
		return (ITouchpointData[]) result.toArray(new ITouchpointData[result.size()]);
94
	}
106
	}
95
107
96
	public TouchpointType getTouchpointType() {
108
	public ITouchpointType getTouchpointType() {
97
		return original.getTouchpointType();
109
		return original.getTouchpointType();
98
	}
110
	}
99
111
Lines 154-169 Link Here
154
		return original.getUpdateDescriptor();
166
		return original.getUpdateDescriptor();
155
	}
167
	}
156
168
157
	public License getLicense() {
169
	public ILicense getLicense() {
158
		return original.getLicense();
170
		return original.getLicense();
159
	}
171
	}
160
172
161
	public Copyright getCopyright() {
173
	public ICopyright getCopyright() {
162
		return original.getCopyright();
174
		return original.getCopyright();
163
	}
175
	}
164
176
165
	public boolean satisfies(RequiredCapability candidate) {
177
	public boolean satisfies(IRequiredCapability candidate) {
166
		ProvidedCapability[] provides = getProvidedCapabilities();
178
		IProvidedCapability[] provides = getProvidedCapabilities();
167
		for (int i = 0; i < provides.length; i++)
179
		for (int i = 0; i < provides.length; i++)
168
			if (provides[i].satisfies(candidate))
180
			if (provides[i].satisfies(candidate))
169
				return true;
181
				return true;
(-)src/org/eclipse/equinox/internal/p2/metadata/InstallableUnitFragment.java (-7 / +8 lines)
Lines 10-36 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.metadata;
11
package org.eclipse.equinox.internal.p2.metadata;
12
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnitFragment;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnitFragment;
14
import org.eclipse.equinox.internal.provisional.p2.metadata.RequiredCapability;
15
16
16
public class InstallableUnitFragment extends InstallableUnit implements IInstallableUnitFragment {
17
public class InstallableUnitFragment extends InstallableUnit implements IInstallableUnitFragment {
17
18
18
	private RequiredCapability[] hostRequirements;
19
	private IRequiredCapability[] hostRequirements;
19
20
20
	public InstallableUnitFragment() {
21
	public InstallableUnitFragment() {
21
		super();
22
		super();
22
	}
23
	}
23
24
24
	public void setHost(RequiredCapability[] hostRequirements) {
25
	public void setHost(IRequiredCapability[] hostRequirements) {
25
		if (hostRequirements == null)
26
		if (hostRequirements == null)
26
			return;
27
			return;
27
		this.hostRequirements = hostRequirements;
28
		this.hostRequirements = hostRequirements;
28
		addRequiredCapability(hostRequirements);
29
		addRequiredCapability(hostRequirements);
29
	}
30
	}
30
31
31
	private void addRequiredCapability(RequiredCapability[] toAdd) {
32
	private void addRequiredCapability(IRequiredCapability[] toAdd) {
32
		RequiredCapability[] current = super.getRequiredCapabilities();
33
		IRequiredCapability[] current = super.getRequiredCapabilities();
33
		RequiredCapability[] result = new RequiredCapability[current.length + toAdd.length];
34
		IRequiredCapability[] result = new IRequiredCapability[current.length + toAdd.length];
34
		System.arraycopy(current, 0, result, 0, current.length);
35
		System.arraycopy(current, 0, result, 0, current.length);
35
		System.arraycopy(toAdd, 0, result, current.length, toAdd.length);
36
		System.arraycopy(toAdd, 0, result, current.length, toAdd.length);
36
		setRequiredCapabilities(result);
37
		setRequiredCapabilities(result);
Lines 40-46 Link Here
40
		return true;
41
		return true;
41
	}
42
	}
42
43
43
	public RequiredCapability[] getHost() {
44
	public IRequiredCapability[] getHost() {
44
		return hostRequirements;
45
		return hostRequirements;
45
	}
46
	}
46
}
47
}
(-)src/org/eclipse/equinox/internal/p2/metadata/InstallableUnit.java (-25 / +25 lines)
Lines 14-29 Link Here
14
import java.util.ArrayList;
14
import java.util.ArrayList;
15
import java.util.Map;
15
import java.util.Map;
16
import org.eclipse.equinox.internal.p2.core.helpers.OrderedProperties;
16
import org.eclipse.equinox.internal.p2.core.helpers.OrderedProperties;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
18
import org.eclipse.equinox.internal.provisional.p2.core.Version;
17
import org.eclipse.equinox.internal.provisional.p2.core.Version;
18
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
19
19
20
public class InstallableUnit implements IInstallableUnit {
20
public class InstallableUnit implements IInstallableUnit {
21
21
22
	private static final OrderedProperties NO_PROPERTIES = new OrderedProperties();
22
	private static final OrderedProperties NO_PROPERTIES = new OrderedProperties();
23
	private static final ProvidedCapability[] NO_PROVIDES = new ProvidedCapability[0];
23
	private static final IProvidedCapability[] NO_PROVIDES = new IProvidedCapability[0];
24
	private static final RequiredCapability[] NO_REQUIRES = new RequiredCapability[0];
24
	private static final IRequiredCapability[] NO_REQUIRES = new IRequiredCapability[0];
25
	private static final IArtifactKey[] NO_ARTIFACTS = new IArtifactKey[0];
25
	private static final IArtifactKey[] NO_ARTIFACTS = new IArtifactKey[0];
26
	private static final TouchpointData[] NO_TOUCHPOINT_DATA = new TouchpointData[0];
26
	private static final ITouchpointData[] NO_TOUCHPOINT_DATA = new ITouchpointData[0];
27
27
28
	private IArtifactKey[] artifacts = NO_ARTIFACTS;
28
	private IArtifactKey[] artifacts = NO_ARTIFACTS;
29
	private String filter;
29
	private String filter;
Lines 32-39 Link Here
32
32
33
	private OrderedProperties properties;
33
	private OrderedProperties properties;
34
	private OrderedProperties localizedProperties;
34
	private OrderedProperties localizedProperties;
35
	ProvidedCapability[] providedCapabilities = NO_PROVIDES;
35
	IProvidedCapability[] providedCapabilities = NO_PROVIDES;
36
	private RequiredCapability[] requires = NO_REQUIRES;
36
	private IRequiredCapability[] requires = NO_REQUIRES;
37
37
38
	private boolean singleton;
38
	private boolean singleton;
39
39
Lines 44-57 Link Here
44
	private Version version;
44
	private Version version;
45
45
46
	private IUpdateDescriptor updateInfo;
46
	private IUpdateDescriptor updateInfo;
47
	private License license;
47
	private ILicense license;
48
	private Copyright copyright;
48
	private ICopyright copyright;
49
49
50
	public InstallableUnit() {
50
	public InstallableUnit() {
51
		super();
51
		super();
52
	}
52
	}
53
53
54
	public void addTouchpointData(TouchpointData newData) {
54
	public void addTouchpointData(ITouchpointData newData) {
55
		ensureTouchpointDataCapacity(1);
55
		ensureTouchpointDataCapacity(1);
56
		touchpointData.add(newData);
56
		touchpointData.add(newData);
57
	}
57
	}
Lines 135-156 Link Here
135
		return properties().getProperty(key);
135
		return properties().getProperty(key);
136
	}
136
	}
137
137
138
	public ProvidedCapability[] getProvidedCapabilities() {
138
	public IProvidedCapability[] getProvidedCapabilities() {
139
		return providedCapabilities;
139
		return providedCapabilities;
140
	}
140
	}
141
141
142
	public RequiredCapability[] getRequiredCapabilities() {
142
	public IRequiredCapability[] getRequiredCapabilities() {
143
		return requires;
143
		return requires;
144
144
145
	}
145
	}
146
146
147
	public TouchpointData[] getTouchpointData() {
147
	public ITouchpointData[] getTouchpointData() {
148
		return (touchpointData == null ? NO_TOUCHPOINT_DATA //
148
		return (touchpointData == null ? NO_TOUCHPOINT_DATA //
149
				: (TouchpointData[]) touchpointData.toArray(new TouchpointData[touchpointData.size()]));
149
				: (ITouchpointData[]) touchpointData.toArray(new ITouchpointData[touchpointData.size()]));
150
	}
150
	}
151
151
152
	public TouchpointType getTouchpointType() {
152
	public ITouchpointType getTouchpointType() {
153
		return touchpointType != null ? touchpointType : TouchpointType.NONE;
153
		return touchpointType != null ? touchpointType : ITouchpointType.NONE;
154
	}
154
	}
155
155
156
	public Version getVersion() {
156
	public Version getVersion() {
Lines 188-194 Link Here
188
			artifacts = value;
188
			artifacts = value;
189
	}
189
	}
190
190
191
	public void setCapabilities(ProvidedCapability[] newCapabilities) {
191
	public void setCapabilities(IProvidedCapability[] newCapabilities) {
192
		if (newCapabilities == null || newCapabilities.length == 0)
192
		if (newCapabilities == null || newCapabilities.length == 0)
193
			providedCapabilities = NO_PROVIDES;
193
			providedCapabilities = NO_PROVIDES;
194
		else
194
		else
Lines 220-231 Link Here
220
		return (String) properties.setProperty(key, value);
220
		return (String) properties.setProperty(key, value);
221
	}
221
	}
222
222
223
	public void setRequiredCapabilities(RequiredCapability[] capabilities) {
223
	public void setRequiredCapabilities(IRequiredCapability[] capabilities) {
224
		if (capabilities.length == 0) {
224
		if (capabilities.length == 0) {
225
			this.requires = NO_REQUIRES;
225
			this.requires = NO_REQUIRES;
226
		} else {
226
		} else {
227
			//copy array for safety
227
			//copy array for safety
228
			this.requires = (RequiredCapability[]) capabilities.clone();
228
			this.requires = (IRequiredCapability[]) capabilities.clone();
229
		}
229
		}
230
	}
230
	}
231
231
Lines 234-240 Link Here
234
	}
234
	}
235
235
236
	public void setTouchpointType(TouchpointType type) {
236
	public void setTouchpointType(TouchpointType type) {
237
		this.touchpointType = (type != TouchpointType.NONE ? type : null);
237
		this.touchpointType = (!ITouchpointType.NONE.equals(type) ? type : null);
238
	}
238
	}
239
239
240
	public void setVersion(Version newVersion) {
240
	public void setVersion(Version newVersion) {
Lines 257-280 Link Here
257
		this.updateInfo = updateInfo;
257
		this.updateInfo = updateInfo;
258
	}
258
	}
259
259
260
	public void setLicense(License license) {
260
	public void setLicense(ILicense license) {
261
		this.license = license;
261
		this.license = license;
262
	}
262
	}
263
263
264
	public License getLicense() {
264
	public ILicense getLicense() {
265
		return license;
265
		return license;
266
	}
266
	}
267
267
268
	public void setCopyright(Copyright copyright) {
268
	public void setCopyright(ICopyright copyright) {
269
		this.copyright = copyright;
269
		this.copyright = copyright;
270
	}
270
	}
271
271
272
	public Copyright getCopyright() {
272
	public ICopyright getCopyright() {
273
		return copyright;
273
		return copyright;
274
	}
274
	}
275
275
276
	public boolean satisfies(RequiredCapability candidate) {
276
	public boolean satisfies(IRequiredCapability candidate) {
277
		ProvidedCapability[] provides = getProvidedCapabilities();
277
		IProvidedCapability[] provides = getProvidedCapabilities();
278
		for (int i = 0; i < provides.length; i++)
278
		for (int i = 0; i < provides.length; i++)
279
			if (provides[i].satisfies(candidate))
279
			if (provides[i].satisfies(candidate))
280
				return true;
280
				return true;
(-)src/org/eclipse/equinox/internal/p2/metadata/InstallableUnitPatch.java (-14 / +18 lines)
Lines 8-52 Link Here
8
 ******************************************************************************/
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.metadata;
9
package org.eclipse.equinox.internal.p2.metadata;
10
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
14
11
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
12
16
13
public class InstallableUnitPatch extends InstallableUnit implements IInstallableUnitPatch {
17
public class InstallableUnitPatch extends InstallableUnit implements IInstallableUnitPatch {
14
	private RequirementChange[] changes;
18
	private IRequirementChange[] changes;
15
	private RequiredCapability lifeCycle;
19
	private IRequiredCapability lifeCycle;
16
	private RequiredCapability[][] scope;
20
	private IRequiredCapability[][] scope;
17
21
18
	private void addRequiredCapability(RequiredCapability[] toAdd) {
22
	private void addRequiredCapability(IRequiredCapability[] toAdd) {
19
		RequiredCapability[] current = super.getRequiredCapabilities();
23
		IRequiredCapability[] current = super.getRequiredCapabilities();
20
		RequiredCapability[] result = new RequiredCapability[current.length + toAdd.length];
24
		IRequiredCapability[] result = new IRequiredCapability[current.length + toAdd.length];
21
		System.arraycopy(current, 0, result, 0, current.length);
25
		System.arraycopy(current, 0, result, 0, current.length);
22
		System.arraycopy(toAdd, 0, result, current.length, toAdd.length);
26
		System.arraycopy(toAdd, 0, result, current.length, toAdd.length);
23
		setRequiredCapabilities(result);
27
		setRequiredCapabilities(result);
24
	}
28
	}
25
29
26
	public RequiredCapability[][] getApplicabilityScope() {
30
	public IRequiredCapability[][] getApplicabilityScope() {
27
		return scope;
31
		return scope;
28
	}
32
	}
29
33
30
	public RequiredCapability getLifeCycle() {
34
	public IRequiredCapability getLifeCycle() {
31
		return lifeCycle;
35
		return lifeCycle;
32
	}
36
	}
33
37
34
	public RequirementChange[] getRequirementsChange() {
38
	public IRequirementChange[] getRequirementsChange() {
35
		return changes;
39
		return changes;
36
	}
40
	}
37
41
38
	public void setApplicabilityScope(RequiredCapability[][] applyTo) {
42
	public void setApplicabilityScope(IRequiredCapability[][] applyTo) {
39
		scope = applyTo;
43
		scope = applyTo;
40
	}
44
	}
41
45
42
	public void setLifeCycle(RequiredCapability lifeCycle) {
46
	public void setLifeCycle(IRequiredCapability lifeCycle) {
43
		if (lifeCycle == null)
47
		if (lifeCycle == null)
44
			return;
48
			return;
45
		this.lifeCycle = lifeCycle;
49
		this.lifeCycle = lifeCycle;
46
		addRequiredCapability(new RequiredCapability[] {lifeCycle});
50
		addRequiredCapability(new IRequiredCapability[] {lifeCycle});
47
	}
51
	}
48
52
49
	public void setRequirementsChange(RequirementChange[] changes) {
53
	public void setRequirementsChange(IRequirementChange[] changes) {
50
		this.changes = changes;
54
		this.changes = changes;
51
	}
55
	}
52
}
56
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ICopyright.java (+35 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
import java.net.URI;
13
14
/**
15
 * The <code>ICopyright</code> interface represents a software copyright.  A copyright has 
16
 * required body text which may be the full text or a summary.  An optional location field can be specified
17
 * which links to full text.  
18
 */
19
public interface ICopyright {
20
21
	/**
22
	 * Returns the location of a document containing the copyright notice.
23
	 * 
24
	 * @return The location of the copyright notice, or <code>null</code>
25
	 */
26
	public URI getLocation();
27
28
	/**
29
	 * Returns the license body.
30
	 * 
31
	 * @return the license body, never <code>null</code>
32
	 */
33
	public String getBody();
34
35
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ITouchpointData.java (+37 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
import java.util.Map;
13
14
/**
15
 * ITouchpoint data instances contain the additional information needed by a touchpoint
16
 * to execute each engine phase it participates in. This includes the sequence of
17
 * instruction statements to be executed during each phase, and any additional
18
 * supporting data needed to perform the phase.
19
 *
20
 * @see MetadataFactory#createTouchpointData(Map)
21
 */
22
public interface ITouchpointData {
23
24
	/**
25
	 * Returns the touchpoint instruction corresponding to the given key.
26
	 */
27
	public ITouchpointInstruction getInstruction(String instructionKey);
28
29
	/**
30
	 * Returns an unmodifiable map of the touchpoint instructions. The map
31
	 * keys are strings, and the values are instances of {@link ITouchpointInstruction}.
32
	 *
33
	 * @return the touchpoint instructions
34
	 */
35
	public Map getInstructions();
36
37
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/IRequiredCapability.java (+69 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
13
14
/**
15
 * A required capability represents some external constraint on an {@link IInstallableUnit}.
16
 * Each capability represents something an {@link IInstallableUnit} needs that
17
 * it expects to be provided by another {@link IInstallableUnit}. Capabilities are
18
 * entirely generic, and are intended to be capable of representing anything that
19
 * an {@link IInstallableUnit} may need either at install time, or at runtime.
20
 * <p>
21
 * Capabilities are segmented into namespaces.  Anyone can introduce new 
22
 * capability namespaces. Some well-known namespaces are introduced directly
23
 * by the provisioning framework.
24
 * 
25
 * @see IInstallableUnit#NAMESPACE_IU_ID
26
 */
27
public interface IRequiredCapability {
28
29
	public String getFilter();
30
31
	public String getName();
32
33
	public String getNamespace();
34
35
	/**
36
	 * Returns the range of versions that satisfy this required capability. Returns
37
	 * an empty version range ({@link VersionRange#emptyRange} if any version
38
	 * will satisfy the capability.
39
	 * @return the range of versions that satisfy this required capability.
40
	 */
41
	public VersionRange getRange();
42
43
	/**
44
	 * Returns the properties to use for evaluating required capability filters 
45
	 * downstream from this capability. For example, if the selector "doc"
46
	 * is provided, then a downstream InstallableUnit with a required capability
47
	 * filtered with "doc=true" will be included.
48
	 */
49
	public String[] getSelectors();
50
51
	public boolean isMultiple();
52
53
	public boolean isOptional();
54
55
	/**
56
	 * TODO This object shouldn't be mutable since it makes equality unstable, and
57
	 * introduces lifecycle issues (how are the changes persisted, etc)
58
	 */
59
	public void setFilter(String filter);
60
61
	/**
62
	 * TODO This object shouldn't be mutable since it makes equality unstable, and
63
	 * introduces lifecycle issues (how are the changes persisted, etc)
64
	 */
65
	public void setSelectors(String[] selectors);
66
67
	public boolean isGreedy();
68
69
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ITouchpointInstruction.java (+58 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
/**
13
 * A touchpoint instruction contains either a sequence of instruction statements
14
 * to be executed during a particular engine phase, or some simple string value
15
 * that is needed by a touchpoint to execute its phases.
16
 * <p>
17
 * The format of a touchpoint instruction statement sequence is as follows:
18
 * 
19
 *   statement-sequence :
20
 *     | statement ';'
21
 *      | statement-sequence statement
22
 *      ;
23
 *
24
 *Where a statement is of the format:
25
 *
26
 *  statement :
27
 *      | actionName '(' parameters ')'
28
 *      ;
29
 *
30
 *  parameters :
31
 *      | // empty
32
 *      | parameter
33
 *      | parameters ',' parameter
34
 *      ;
35
 *
36
 *   parameter : 
37
 *      | paramName ':' paramValue
38
 *      ;
39
 *
40
 * actionName, paramName, paramValue :
41
 *      | String 
42
 *      ;
43
 *
44
 */
45
public interface ITouchpointInstruction {
46
47
	/**
48
	 * Returns the body of this touchpoint instruction. The body is either a sequence
49
	 * of instruction statements, or a simple string value.
50
	 * 
51
	 * @return The body of this touchpoint instruction
52
	 */
53
	public String getBody();
54
55
	//TODO What is this? Please doc
56
	public String getImportAttribute();
57
58
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ILicense.java (+42 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
import java.math.BigInteger;
13
import java.net.URI;
14
15
/**
16
 * The <code>ILicense</code> interface represents a software license.  A license has required body text
17
 * which may be the full text or an annotation.  An optional URL field can be specified
18
 * which links to full text.  Licenses can be easily compared using their digests.
19
 */
20
public interface ILicense {
21
22
	/**
23
	 * Returns the location of a document containing the full license.
24
	 * 
25
	 * @return the location of the license document, or <code>null</code>
26
	 */
27
	public URI getLocation();
28
29
	/**
30
	 * Returns the license body.
31
	 * @return the license body, never <code>null</code>
32
	 */
33
	public String getBody();
34
35
	/**
36
	 * Returns the message digest of the license body.  The digest is calculated on a normalized
37
	 * version of the license where all whitespace has been reduced to one space.
38
	 * @return the message digest as a <code>BigInteger</code>, never <code>null</code>
39
	 */
40
	public BigInteger getDigest();
41
42
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/IRequirementChange.java (+20 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
public interface IRequirementChange {
13
14
	public IRequiredCapability applyOn();
15
16
	public IRequiredCapability newValue();
17
18
	public boolean matches(IRequiredCapability toMatch);
19
20
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/IProvidedCapability.java (+32 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
import org.eclipse.equinox.internal.provisional.p2.core.Version;
13
14
/**
15
 * Describes a capability as exposed or required by an installable unit
16
 */
17
public interface IProvidedCapability {
18
19
	public String getName();
20
21
	public String getNamespace();
22
23
	public Version getVersion();
24
25
	/**
26
	 * Returns whether this provided capability satisfies the given required capability.
27
	 * @return <code>true</code> if this capability satisfies the given required
28
	 * capability, and <code>false</code> otherwise.
29
	 */
30
	public boolean satisfies(IRequiredCapability candidate);
31
32
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ITouchpointType.java (+33 lines)
Added Link Here
1
/******************************************************************************* 
2
* Copyright (c) 2008 EclipseSource and others. All rights reserved. This
3
* program and the accompanying materials are made available under the terms of
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
5
* available at http://www.eclipse.org/legal/epl-v10.html
6
*
7
* Contributors:
8
*   EclipseSource - initial API and implementation
9
******************************************************************************/
10
package org.eclipse.equinox.internal.provisional.p2.metadata;
11
12
import org.eclipse.equinox.internal.provisional.p2.core.Version;
13
14
/**
15
 * Identifies a particular touchpoint. A touchpoint is identified by an id 
16
 * and a version.
17
 */
18
public interface ITouchpointType {
19
20
	/**
21
	 * A touchpoint type indicating that the "null" touchpoint should be used.
22
	 * The null touchpoint does not participate in any install phase.
23
	 * 
24
	 * This TouchpointType should always be compared with .equals() as other SPIs
25
	 * may implement their own version.
26
	 */
27
	public static final TouchpointType NONE = new TouchpointType("null", Version.emptyVersion); //$NON-NLS-1$
28
29
	public String getId();
30
31
	public Version getVersion();
32
33
}

Return to bug 256359