bug 267972 - no filters on product IU
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java
index 724c097..45bc917 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java
@@ -143,28 +143,25 @@
 		List result = new ArrayList();
 		for (Iterator i = elements.iterator(); i.hasNext();) {
 			VersionedName element = (VersionedName) i.next();
-			if (element.getVersion() == null || Version.emptyVersion.equals(element.getVersion())) {
+			Version elementVersion = element.getVersion();
+			if (elementVersion == null || Version.emptyVersion.equals(elementVersion)) {
 				Iterator advice = versionAdvice.iterator();
-				Version advisedVersion = null;
 				while (advice.hasNext()) {
-					advisedVersion = ((VersionAdvice) advice.next()).getVersion(namespace, element.getId());
+					elementVersion = ((VersionAdvice) advice.next()).getVersion(namespace, element.getId());
 					break;
 				}
-
-				if (advisedVersion != null) {
-					result.add(new VersionedName(element.getId(), advisedVersion));
-					continue;
-				}
-
-				//	no advice, find highest version
-				IInstallableUnit unit = queryForIU(publisherResults, element.getId(), null);
-				if (unit != null) {
-					result.add(unit);
-					continue;
-				}
 			}
 
-			result.add(element);
+			//	if advisedVersion is null, we get the highest version
+			IInstallableUnit unit = queryForIU(publisherResults, element.getId(), elementVersion);
+			if (unit != null) {
+				result.add(unit);
+			} else if (elementVersion != null) {
+				//best effort
+				result.add(new VersionedName(element.getId(), elementVersion));
+			}
+			//TODO we could still add a requirement on version 0.0.0 to get any version, but if the
+			//bundle is platform specific we will have broken metadata due to a missing filter
 		}
 		return result;
 	}