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

jbonofre pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/main by this push:
     new 2bf5992d23 Refactored usage of Optional<> as method parameters (#2720)
2bf5992d23 is described below

commit 2bf5992d23d59fcd75a796242a89993ec6669b4f
Author: CptBartender <[email protected]>
AuthorDate: Fri Sep 11 16:48:31 2026 +0200

    Refactored usage of Optional<> as method parameters (#2720)
    
    * Refactored usage of Optional<> as method parameters
    
    * Fixed potential NPE
---
 .../apache/karaf/config/command/MetaCommand.java    | 17 ++++++++---------
 .../completers/ConfigurationPropertyCompleter.java  | 21 ++++++++++-----------
 .../apache/karaf/config/core/MetaServiceCaller.java |  5 ++---
 3 files changed, 20 insertions(+), 23 deletions(-)

diff --git 
a/config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java 
b/config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java
index fc552f67bd..44f6b63f6e 100644
--- 
a/config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java
+++ 
b/config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java
@@ -21,7 +21,6 @@ import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Map;
-import java.util.Optional;
 import java.util.function.Function;
 
 import org.apache.karaf.config.command.completers.MetaCompleter;
@@ -93,7 +92,7 @@ public class MetaCommand extends ConfigCommandSupport {
         }
     }
         
-    abstract class AbstractMeta implements Function<Optional<MetaInfo>, Void> {
+    abstract class AbstractMeta implements Function<MetaInfo, Void> {
         protected String getDefaultValueStr(String[] defaultValues) {
             if (defaultValues == null) {
                 return "";
@@ -115,14 +114,14 @@ public class MetaCommand extends ConfigCommandSupport {
     
     class Create extends AbstractMeta {
 
-        public Void apply(Optional<MetaInfo> info) {
-            if (!info.isPresent()) {                
+        public Void apply(MetaInfo info) {
+            if (info == null) {
                 System.out.println("No meta type definition found for pid: " + 
pid);
                 return null;
             }
             
             try {
-                createDefaultConfig(pid, info.get());
+                createDefaultConfig(pid, info);
             } catch (IOException e) {
                  throw new RuntimeException(e.getMessage(), e);
             }
@@ -155,12 +154,12 @@ public class MetaCommand extends ConfigCommandSupport {
     }
     
     class Print extends AbstractMeta {
-        public Void apply(Optional<MetaInfo> info) {           
-            if (!info.isPresent()) {
+        public Void apply(MetaInfo info) {
+            if (info == null) {
                 System.out.println("No meta type definition found for pid: " + 
pid);
                 return null;
             }
-            if(info.get().isFactory()) {
+            if (info.isFactory()) {
                 System.out.println("Meta type informations for factory pid: " 
+ pid);
             }
             else {
@@ -172,7 +171,7 @@ public class MetaCommand extends ConfigCommandSupport {
             table.column("type");
             table.column("default");
             table.column("description").wrap();
-            AttributeDefinition[] attrs = 
info.get().getDefinition().getAttributeDefinitions(ObjectClassDefinition.ALL);
+            AttributeDefinition[] attrs = 
info.getDefinition().getAttributeDefinitions(ObjectClassDefinition.ALL);
             if (attrs != null) {
                 for (AttributeDefinition attr : attrs) {
                     table.addRow().addContent(attr.getID(), attr.getName(), 
getType(attr.getType()),
diff --git 
a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
 
b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
index b0c4a496cb..f0c1922ae0 100644
--- 
a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
+++ 
b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
@@ -20,7 +20,6 @@
 package org.apache.karaf.config.command.completers;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Dictionary;
@@ -46,6 +45,8 @@ import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.metatype.AttributeDefinition;
 import org.osgi.service.metatype.ObjectClassDefinition;
 
+import static java.util.stream.Collectors.toList;
+
 /**
  * {@link Completer} for Configuration Admin properties.
  *
@@ -156,16 +157,14 @@ public class ConfigurationPropertyCompleter implements 
Completer {
             
     }
     
-    private List<String> collectMetaConfigProperties(Optional<MetaInfo> info){
-        Optional<AttributeDefinition[]> attrs = info.map(e -> 
e.getDefinition().getAttributeDefinitions(ObjectClassDefinition.ALL));          
  
-        if(attrs.isPresent()) {
-            List<String> properties = new ArrayList<>(attrs.get().length);     
       
-            for (AttributeDefinition attr : attrs.get()) {                
-                properties.add(attr.getID());
-            }           
-            return properties;    
-        }
-        return Collections.emptyList();
+    private List<String> collectMetaConfigProperties(MetaInfo info){
+        return Optional.ofNullable(info)
+            .map(MetaInfo::getDefinition)
+            .map(ocd -> ocd.getAttributeDefinitions(ObjectClassDefinition.ALL))
+            .stream()
+            .flatMap(Arrays::stream)
+            .map(AttributeDefinition::getID)
+            .collect(toList());
     }
 
     public ConfigurationAdmin getConfigAdmin() {
diff --git 
a/config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java 
b/config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java
index e98d53eeec..4a98ddfa76 100644
--- 
a/config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java
+++ 
b/config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java
@@ -26,7 +26,6 @@ import org.osgi.service.metatype.ObjectClassDefinition;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Optional;
 import java.util.function.Function;
 
 /**
@@ -73,13 +72,13 @@ public class MetaServiceCaller {
      * Attempts to find MetaType information for the specified PID and 
      * invokes the supplied callback with the result of the search   
      */
-    public static <T> T doWithMetaType(BundleContext context, String pid, 
Function<Optional<MetaInfo>, T> function) {
+    public static <T> T doWithMetaType(BundleContext context, String pid, 
Function<MetaInfo, T> function) {
         ServiceReference<MetaTypeService> ref = 
context.getServiceReference(MetaTypeService.class);
         if (ref != null) {
             try {
                 MetaTypeService metaService = context.getService(ref);
                 MetaInfo metaInfo = getMetatype(context, metaService, pid);
-                return function.apply(Optional.ofNullable(metaInfo));
+                return function.apply(metaInfo);
             } finally {
                 context.ungetService(ref);
             }

Reply via email to