Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodor Boev2017-06-06 10:31:59 +0000
committerAlexander Kurtakov2017-09-20 10:39:56 +0000
commit8e6983eab7b45fbe90282303641fe76d2d3b4971 (patch)
treeccdff7d3d3f22fec408adbc7db7578d3c5c10934
parent9f4494ae08e428956d1cb94e067cc6684e127c29 (diff)
downloadrt.equinox.p2-8e6983eab7b45fbe90282303641fe76d2d3b4971.tar.gz
rt.equinox.p2-8e6983eab7b45fbe90282303641fe76d2d3b4971.tar.xz
rt.equinox.p2-8e6983eab7b45fbe90282303641fe76d2d3b4971.zip
Bug 313553 - Capability: provide attributes to LDAP matchesI20170921-2000I20170920-2000
Change-Id: Ie062404257d9781664ca3d45517645516ce43067 Signed-off-by: Todor Boev <rinsvind@gmail.com>
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/MemberProvider.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/MemberProvider.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/MemberProvider.java
index dccb00397..4eaa4814b 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/MemberProvider.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/MemberProvider.java
@@ -12,6 +12,8 @@ package org.eclipse.equinox.internal.p2.metadata.expression;
import java.util.*;
import java.util.Map.Entry;
+import org.eclipse.equinox.internal.p2.metadata.ProvidedCapability;
+import org.eclipse.equinox.p2.metadata.IProvidedCapability;
import org.eclipse.equinox.p2.metadata.expression.IMemberProvider;
import org.osgi.framework.ServiceReference;
@@ -135,6 +137,14 @@ public abstract class MemberProvider implements IMemberProvider {
return caseInsensitive ? new CIDictionaryMemberProvider((Dictionary<String, ?>) value) : new DictionaryMemberProvider((Dictionary<String, ?>) value);
if (value instanceof ServiceReference)
return new ServiceRefMemberProvider((ServiceReference<?>) value);
+ // TODO Should there be a clause in Matches.match() instead?
+ if (value instanceof IProvidedCapability) {
+ IProvidedCapability cap = (IProvidedCapability) value;
+ Map<String, Object> attrs = new HashMap<String, Object>();
+ attrs.put(ProvidedCapability.MEMBER_NAMESPACE, cap.getNamespace());
+ attrs.putAll(cap.getAttributes());
+ return caseInsensitive ? new CIMapMemberProvider(attrs) : new MapMemberProvider(attrs);
+ }
throw new IllegalArgumentException();
}

Back to the top