diff options
author | Todor Boev | 2017-06-06 10:31:59 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2017-09-20 10:39:56 +0000 |
commit | 8e6983eab7b45fbe90282303641fe76d2d3b4971 (patch) | |
tree | ccdff7d3d3f22fec408adbc7db7578d3c5c10934 | |
parent | 9f4494ae08e428956d1cb94e067cc6684e127c29 (diff) | |
download | rt.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.java | 10 |
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(); } |