This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new d0bd140  FELIX-6464 fix some more potential NPEs (#112)
d0bd140 is described below

commit d0bd14000d7d79283062398ea06a84c993610115
Author: Konrad Windszus <[email protected]>
AuthorDate: Mon Oct 25 17:50:18 2021 +0200

    FELIX-6464 fix some more potential NPEs (#112)
---
 .../internal/core/CapabilitiesPrinter.java         | 25 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git 
a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/CapabilitiesPrinter.java
 
b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/CapabilitiesPrinter.java
index 5c1cb34..f9d19a1 100644
--- 
a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/CapabilitiesPrinter.java
+++ 
b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/CapabilitiesPrinter.java
@@ -32,6 +32,7 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.namespace.HostNamespace;
 import org.osgi.framework.namespace.PackageNamespace;
 import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
 
 
@@ -61,18 +62,27 @@ public class CapabilitiesPrinter extends 
AbstractConfigurationPrinter
         for ( Bundle bundle : getBundleContext().getBundles() )
         {
             BundleWiring wiring = bundle.adapt( BundleWiring.class );
-            
-            List<BundleCapability> capabilities = wiring.getCapabilities( null 
).stream()
+            if ( wiring == null )
+            {
+                continue;
+            }
+            List<BundleCapability> capabilities = wiring.getCapabilities( null 
);
+            if ( capabilities == null )
+            {
+                continue;
+            }
+            // which capabilities to filter?
+            List<BundleCapability> filteredCapabilities = capabilities.stream()
                     .filter( c -> 
EXCLUDED_NAMESPACES_PREDICATE.test(c.getNamespace()) )
                     .collect( Collectors.toList() );
-            if ( capabilities.isEmpty() )
+            if ( filteredCapabilities.isEmpty() )
             {
                 // skip bundles not exporting capabilities
                 continue;
             }
             
             ConfigurationRender.infoLine( printWriter, null,  "Bundle", 
bundle.getSymbolicName() + " (" + bundle.getBundleId() + ")" );
-            for ( BundleCapability capability : capabilities )
+            for ( BundleCapability capability : filteredCapabilities )
             {
                 ConfigurationRender.infoLine( printWriter, "  ", "Capability 
namespace", capability.getNamespace() );
                 String attributes = dumpTypedAttributes( 
capability.getAttributes() );
@@ -85,7 +95,12 @@ public class CapabilitiesPrinter extends 
AbstractConfigurationPrinter
                 {
                     ConfigurationRender.infoLine( printWriter, "    ", 
"Directives", directives );
                 }
-                String requirerBundles = wiring.getProvidedWires( 
capability.getNamespace() ).stream()
+                List<BundleWire> wires = wiring.getRequiredWires( 
capability.getNamespace() );
+                if ( wires == null )
+                {
+                    continue;
+                }
+                String requirerBundles = wires.stream()
                         .map( w -> w.getRequirer().getSymbolicName() + " (" + 
w.getRequirer().getBundle().getBundleId() + ") with directives: " + 
dumpDirectives( w.getRequirement().getDirectives() ) )
                         .collect( Collectors.joining( ", ") );
                 if ( !requirerBundles.isEmpty() )

Reply via email to