Author: rotty3000
Date: Fri Nov 16 18:16:24 2018
New Revision: 1846736

URL: http://svn.apache.org/viewvc?rev=1846736&view=rev
Log:
ARIES-1863 Ensure type compatibility when running in an environment that 
already has bnd uses elsewhere

Signed-off-by: Raymond Auge <rotty3...@apache.org>

Modified:
    
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ConsumerHeaderProcessor.java
    
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java

Modified: 
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ConsumerHeaderProcessor.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ConsumerHeaderProcessor.java?rev=1846736&r1=1846735&r2=1846736&view=diff
==============================================================================
--- 
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ConsumerHeaderProcessor.java
 (original)
+++ 
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ConsumerHeaderProcessor.java
 Fri Nov 16 18:16:24 2018
@@ -24,6 +24,7 @@ import java.util.Dictionary;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.ServiceLoader;
 import java.util.Set;
@@ -34,7 +35,6 @@ import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.Version;
 
-import aQute.bnd.header.Attrs;
 import aQute.bnd.header.OSGiHeader;
 import aQute.bnd.header.Parameters;
 
@@ -194,12 +194,12 @@ public class ConsumerHeaderProcessor {
         Set<WeavingData> weavingData = new HashSet<WeavingData>();
 
         Parameters requirements = OSGiHeader.parseHeader(consumerHeader);
-        Entry<String, Attrs> extenderRequirement = 
findRequirement(requirements, SpiFlyConstants.EXTENDER_CAPABILITY_NAMESPACE, 
SpiFlyConstants.PROCESSOR_EXTENDER_NAME);
-        Collection<Entry<String, Attrs>> serviceLoaderRequirements = 
findAllMetadata(requirements, 
SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE);
+        Entry<String, ? extends Map<String, String>> extenderRequirement = 
findRequirement(requirements, SpiFlyConstants.EXTENDER_CAPABILITY_NAMESPACE, 
SpiFlyConstants.PROCESSOR_EXTENDER_NAME);
+        Collection<Entry<String, ? extends Map<String, String>>> 
serviceLoaderRequirements = findAllMetadata(requirements, 
SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE);
 
         if (extenderRequirement != null) {
             List<BundleDescriptor> allowedBundles = new 
ArrayList<BundleDescriptor>();
-            for (Entry<String, Attrs> req : serviceLoaderRequirements) {
+            for (Entry<String, ? extends Map<String, String>> req : 
serviceLoaderRequirements) {
                 String slFilterString = 
req.getValue().get(SpiFlyConstants.FILTER_DIRECTIVE);
                 if (slFilterString != null) {
                     Filter slFilter = 
FrameworkUtil.createFilter(slFilterString);
@@ -243,8 +243,8 @@ public class ConsumerHeaderProcessor {
                 allowedBundles.size() == 0 ? null : allowedBundles);
     }
 
-    static Entry<String, Attrs> findCapability(Parameters capabilities, String 
namespace, String spiName) {
-        for (Entry<String, Attrs> cap : capabilities.entrySet()) {
+    static Entry<String, ? extends Map<String, String>> 
findCapability(Parameters capabilities, String namespace, String spiName) {
+        for (Entry<String, ? extends Map<String, String>> cap : 
capabilities.entrySet()) {
             String key = removeDuplicateMarker(cap.getKey());
             if (namespace.equals(key)) {
                 if (spiName.equals(cap.getValue().get(namespace))) {
@@ -255,12 +255,12 @@ public class ConsumerHeaderProcessor {
         return null;
     }
 
-    static Entry<String, Attrs> findRequirement(Parameters requirements, 
String namespace, String type) throws InvalidSyntaxException {
+    static Entry<String, ? extends Map<String, String>> 
findRequirement(Parameters requirements, String namespace, String type) throws 
InvalidSyntaxException {
         Dictionary<String, Object> nsAttr = new Hashtable<>();
         nsAttr.put(namespace, type);
         nsAttr.put("version", SpiFlyConstants.SPECIFICATION_VERSION);
 
-        for (Entry<String, Attrs> req : requirements.entrySet()) {
+        for (Entry<String, ? extends Map<String, String>> req : 
requirements.entrySet()) {
             String key = removeDuplicateMarker(req.getKey());
             if (namespace.equals(key)) {
                 String filterString = 
req.getValue().get(SpiFlyConstants.FILTER_DIRECTIVE);
@@ -275,9 +275,9 @@ public class ConsumerHeaderProcessor {
         return null;
     }
 
-    static Collection<Entry<String, Attrs>> findAllMetadata(Parameters 
requirementsOrCapabilities, String namespace) {
-        List<Entry<String, Attrs>> reqsCaps = new ArrayList<>();
-        for (Entry<String, Attrs> reqCap : 
requirementsOrCapabilities.entrySet()) {
+    static Collection<Entry<String, ? extends Map<String, String>>> 
findAllMetadata(Parameters requirementsOrCapabilities, String namespace) {
+        List<Entry<String, ? extends Map<String, String>>> reqsCaps = new 
ArrayList<>();
+        for (Entry<String, ? extends Map<String, String>> reqCap : 
requirementsOrCapabilities.entrySet()) {
             String key = removeDuplicateMarker(reqCap.getKey());
             if (namespace.equals(key)) {
                 reqsCaps.add(reqCap);

Modified: 
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java?rev=1846736&r1=1846735&r2=1846736&view=diff
==============================================================================
--- 
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
 (original)
+++ 
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
 Fri Nov 16 18:16:24 2018
@@ -47,7 +47,6 @@ import org.osgi.framework.wiring.BundleW
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.util.tracker.BundleTrackerCustomizer;
 
-import aQute.bnd.header.Attrs;
 import aQute.bnd.header.OSGiHeader;
 import aQute.bnd.header.Parameters;
 
@@ -254,7 +253,7 @@ public class ProviderBundleTrackerCustom
             return null;
 
         Parameters requirements = OSGiHeader.parseHeader(requirementHeader);
-        Entry<String, Attrs> extenderRequirement = 
ConsumerHeaderProcessor.findRequirement(requirements, 
SpiFlyConstants.EXTENDER_CAPABILITY_NAMESPACE, 
SpiFlyConstants.REGISTRAR_EXTENDER_NAME);
+        Entry<String, ? extends Map<String, String>> extenderRequirement = 
ConsumerHeaderProcessor.findRequirement(requirements, 
SpiFlyConstants.EXTENDER_CAPABILITY_NAMESPACE, 
SpiFlyConstants.REGISTRAR_EXTENDER_NAME);
         if (extenderRequirement == null)
             return null;
 
@@ -267,7 +266,7 @@ public class ProviderBundleTrackerCustom
         }
 
         List<String> serviceNames = new ArrayList<String>();
-        for (Entry<String, Attrs> serviceLoaderCapability : 
ConsumerHeaderProcessor.findAllMetadata(capabilities, 
SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE)) {
+        for (Entry<String, ? extends Map<String, String>> 
serviceLoaderCapability : ConsumerHeaderProcessor.findAllMetadata(capabilities, 
SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE)) {
             for (Entry<String, String> entry : 
serviceLoaderCapability.getValue().entrySet()) {
                 if 
(SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE.equals(entry.getKey())) {
                     serviceNames.add(entry.getValue().toString());
@@ -291,7 +290,7 @@ public class ProviderBundleTrackerCustom
             return null;
 
         Parameters capabilities = 
OSGiHeader.parseHeader(capabilityHeader.toString());
-        Entry<String, Attrs> cap = 
ConsumerHeaderProcessor.findCapability(capabilities, 
SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE, spiName);
+        Entry<String, ? extends Map<String, String>> cap = 
ConsumerHeaderProcessor.findCapability(capabilities, 
SpiFlyConstants.SERVICELOADER_CAPABILITY_NAMESPACE, spiName);
 
         Hashtable<String, Object> properties = new Hashtable<String, Object>();
         if (cap != null) {


Reply via email to