Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Niefer2008-02-25 21:46:27 +0000
committerAndrew Niefer2008-02-25 21:46:27 +0000
commitac034c613f2b94cd9998984fba6773a3b7d54a62 (patch)
tree2efdebe07350d9381837a36c2ef62000943413e0
parent3d8fac0684634c6149651ad5ee76f89d25bcfcba (diff)
downloadrt.equinox.p2-ac034c613f2b94cd9998984fba6773a3b7d54a62.tar.gz
rt.equinox.p2-ac034c613f2b94cd9998984fba6773a3b7d54a62.tar.xz
rt.equinox.p2-ac034c613f2b94cd9998984fba6773a3b7d54a62.zip
bug 218623 - feature based product IUs
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/p2/metadata/generator/ProductQuery.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.generator/src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/Generator.java9
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);
}
}
}

Back to the top