diff options
author | Andrew Niefer | 2008-02-25 21:46:27 +0000 |
---|---|---|
committer | Andrew Niefer | 2008-02-25 21:46:27 +0000 |
commit | ac034c613f2b94cd9998984fba6773a3b7d54a62 (patch) | |
tree | 2efdebe07350d9381837a36c2ef62000943413e0 | |
parent | 3d8fac0684634c6149651ad5ee76f89d25bcfcba (diff) | |
download | rt.equinox.p2-ac034c613f2b94cd9998984fba6773a3b7d54a62.tar.gz rt.equinox.p2-ac034c613f2b94cd9998984fba6773a3b7d54a62.tar.xz rt.equinox.p2-ac034c613f2b94cd9998984fba6773a3b7d54a62.zip |
bug 218623 - feature based product IUs
2 files changed, 20 insertions, 4 deletions
diff --git a/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/p2/metadata/generator/ProductQuery.java b/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/p2/metadata/generator/ProductQuery.java index 7286b2088..90c6be3d9 100644 --- a/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/p2/metadata/generator/ProductQuery.java +++ b/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/p2/metadata/generator/ProductQuery.java @@ -13,6 +13,7 @@ package org.eclipse.equinox.internal.p2.metadata.generator; import java.util.*; import org.eclipse.equinox.internal.p2.metadata.generator.features.ProductFile; import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.internal.provisional.p2.metadata.generator.Generator.GeneratorResult; import org.eclipse.equinox.internal.provisional.p2.query.Query; import org.eclipse.osgi.service.resolver.VersionRange; @@ -30,9 +31,13 @@ public class ProductQuery extends Query { } private void initialize(Map configIUs) { - List contents = product.useFeatures() ? product.getFeatures() : product.getPlugins(); + boolean features = product.useFeatures(); + List contents = features ? product.getFeatures() : product.getPlugins(); for (Iterator iterator = contents.iterator(); iterator.hasNext();) { String item = (String) iterator.next(); + if (features) // for features we want the group + item += ".featureGroup"; //$NON-NLS-1$ + children.put(item, VersionRange.emptyRange); if (configIUs.containsKey(item)) { for (Iterator ius = ((Set) configIUs.get(item)).iterator(); ius.hasNext();) { @@ -64,6 +69,14 @@ public class ProductQuery extends Query { children.put(object.getId(), new VersionRange(object.getVersion(), true, object.getVersion(), true)); } } + + // feature based product, individual bundle config CUs are under CONFIGURATION_CUS for convenience + if (features && configIUs.containsKey(GeneratorResult.CONFIGURATION_CUS)) { + for (Iterator ius = ((Set) configIUs.get(GeneratorResult.CONFIGURATION_CUS)).iterator(); ius.hasNext();) { + IInstallableUnit object = (IInstallableUnit) ius.next(); + children.put(object.getId(), new VersionRange(object.getVersion(), true, object.getVersion(), true)); + } + } } /* (non-Javadoc) diff --git a/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/Generator.java b/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/Generator.java index e8382a988..dfd45a99b 100644 --- a/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/Generator.java +++ b/bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/Generator.java @@ -38,6 +38,8 @@ public class Generator { * Captures the output of an execution of the generator. */ public static class GeneratorResult { + public static final String CONFIGURATION_CUS = "CONFIGURATION_CUS"; //$NON-NLS-1$ + /** * The set of generated IUs that will be children of the root IU */ @@ -435,12 +437,13 @@ public class Generator { metadataRepository.addInstallableUnits(new IInstallableUnit[] {cu}); } result.rootIUs.add(cu); - if (result.configurationIUs.containsKey(bundle.getSymbolicName())) { - ((Set) result.configurationIUs.get(bundle.getSymbolicName())).add(cu); + String key = (productFile != null && productFile.useFeatures()) ? GeneratorResult.CONFIGURATION_CUS : bundle.getSymbolicName(); + if (result.configurationIUs.containsKey(key)) { + ((Set) result.configurationIUs.get(key)).add(cu); } else { Set set = new HashSet(); set.add(cu); - result.configurationIUs.put(bundle.getSymbolicName(), set); + result.configurationIUs.put(key, set); } } } |