diff options
author | Pascal Rapicault | 2009-04-21 00:58:38 +0000 |
---|---|---|
committer | Pascal Rapicault | 2009-04-21 00:58:38 +0000 |
commit | d09f39b62564b86f97cacf28a329e9a05f270d4b (patch) | |
tree | 3129b1c9603de8dfa41e7db9ecc082c3d74e79ad /bundles/org.eclipse.equinox.p2.publisher | |
parent | e702c0be3ce9e56ad6399d894826423d04888daf (diff) | |
download | rt.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.java | 27 |
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();) { |