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);
}