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 fc552f67bd8..44f6b63f6e5 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.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 Object doExecute() throws Exception { } } - abstract class AbstractMeta implements Function, Void> { + abstract class AbstractMeta implements Function { protected String getDefaultValueStr(String[] defaultValues) { if (defaultValues == null) { return ""; @@ -115,14 +114,14 @@ protected String getDefaultValueStr(String[] defaultValues) { class Create extends AbstractMeta { - public Void apply(Optional 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 @@ private void createDefaultConfig(String pid, MetaInfo info) throws IOException { } class Print extends AbstractMeta { - public Void apply(Optional 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 Void apply(Optional info) { 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 4eb62a09bd2..46389939567 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.metatype.AttributeDefinition; import org.osgi.service.metatype.ObjectClassDefinition; +import static java.util.stream.Collectors.toList; + /** * {@link Completer} for Configuration Admin properties. * @@ -157,16 +158,14 @@ private List getMetaTypeProperties(String pid){ } - private List collectMetaConfigProperties(Optional info){ - Optional attrs = info.map(e -> e.getDefinition().getAttributeDefinitions(ObjectClassDefinition.ALL)); - if(attrs.isPresent()) { - List properties = new ArrayList<>(attrs.get().length); - for (AttributeDefinition attr : attrs.get()) { - properties.add(attr.getID()); - } - return properties; - } - return Collections.emptyList(); + private List 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 e98d53eeecf..6c27f2d70fc 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 java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Optional; import java.util.function.Function; /** @@ -73,13 +72,15 @@ public static List getPidsWithMetaInfo(BundleContext context) { * Attempts to find MetaType information for the specified PID and * invokes the supplied callback with the result of the search */ - public static T doWithMetaType(BundleContext context, String pid, Function, T> function) { + public static T doWithMetaType(BundleContext context, String pid, Function function) { ServiceReference 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)); + if (metaInfo != null) { + return function.apply(metaInfo); + } } finally { context.ungetService(ref); }