Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault2009-04-21 00:58:38 +0000
committerPascal Rapicault2009-04-21 00:58:38 +0000
commitd09f39b62564b86f97cacf28a329e9a05f270d4b (patch)
tree3129b1c9603de8dfa41e7db9ecc082c3d74e79ad /bundles/org.eclipse.equinox.p2.publisher
parente702c0be3ce9e56ad6399d894826423d04888daf (diff)
downloadrt.equinox.p2-d09f39b62564b86f97cacf28a329e9a05f270d4b.tar.gz
rt.equinox.p2-d09f39b62564b86f97cacf28a329e9a05f270d4b.tar.xz
rt.equinox.p2-d09f39b62564b86f97cacf28a329e9a05f270d4b.zip
Bug 270320 - [publisher] FeaturesAction#getFilter does not take into account multi-valued filters
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.publisher')
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java27
1 files changed, 19 insertions, 8 deletions
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java
index ffc2c10c0..c06961979 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java
@@ -523,20 +523,31 @@ public class FeaturesAction extends AbstractPublisherAction {
result.append("(&"); //$NON-NLS-1$
if (entry.getFilter() != null)
result.append(entry.getFilter());
- if (entry.getOS() != null)
- result.append("(osgi.os=" + entry.getOS() + ')');//$NON-NLS-1$
- if (entry.getWS() != null)
- result.append("(osgi.ws=" + entry.getWS() + ')');//$NON-NLS-1$
- if (entry.getArch() != null)
- result.append("(osgi.arch=" + entry.getArch() + ')');//$NON-NLS-1$
- if (entry.getNL() != null)
- result.append("(osgi.nl=" + entry.getNL() + ')');//$NON-NLS-1$
+ expandFilter(entry.getOS(), "osgi.os", result); //$NON-NLS-1$
+ expandFilter(entry.getWS(), "osgi.ws", result); //$NON-NLS-1$
+ expandFilter(entry.getArch(), "osgi.arch", result);//$NON-NLS-1$
+ expandFilter(entry.getNL(), "osgi.nl", result); //$NON-NLS-1$
if (result.length() == 2)
return null;
result.append(')');
return result.toString();
}
+ private void expandFilter(String filter, String osgiFilterValue, StringBuffer result) {
+ if (filter != null) {
+ StringTokenizer token = new StringTokenizer(filter, ","); //$NON-NLS-1$
+ if (token.countTokens() == 1)
+ result.append('(' + osgiFilterValue + '=' + filter + ')');
+ else {
+ result.append("(|"); //$NON-NLS-1$
+ while (token.hasMoreElements()) {
+ result.append('(' + osgiFilterValue + '=' + token.nextToken() + ')');
+ }
+ result.append(')');
+ }
+ }
+ }
+
protected FileSetDescriptor[] getRootFileDescriptors(Properties props) {
HashMap result = new HashMap();
for (Iterator i = props.keySet().iterator(); i.hasNext();) {

Back to the top