From d7668f8e449fe82a2698f045ea54a1d60e5f5539 Mon Sep 17 00:00:00 2001 From: Ahmed Musallam Date: Sun, 26 Jan 2020 13:51:10 -0600 Subject: [PATCH] Avoid NoSuchElementException in RootCauseCommand --- .../felix/rootcause/RootCauseCommand.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/rootcause/src/main/java/org/apache/felix/rootcause/RootCauseCommand.java b/rootcause/src/main/java/org/apache/felix/rootcause/RootCauseCommand.java index 3a01aa90205..f5be911ed93 100644 --- a/rootcause/src/main/java/org/apache/felix/rootcause/RootCauseCommand.java +++ b/rootcause/src/main/java/org/apache/felix/rootcause/RootCauseCommand.java @@ -18,6 +18,7 @@ */ package org.apache.felix.rootcause; +import java.util.Optional; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.runtime.ServiceComponentRuntime; @@ -34,13 +35,15 @@ public class RootCauseCommand { @Reference ServiceComponentRuntime scr; - - public DSComp rootcause(String componentName) { - ComponentDescriptionDTO cdesc = scr.getComponentDescriptionDTOs().stream() - .filter(desc -> desc.name.equals(componentName)) - .findFirst().get(); - DSComp rootCause = new DSRootCause(scr).getRootCause(cdesc); - new RootCausePrinter().print(rootCause); - return rootCause; - } + + + public DSComp rootcause(String componentName) { + Optional rootCause = scr.getComponentDescriptionDTOs().stream() + .filter(desc -> desc.name.equals(componentName)) + .findFirst() + .map(cdesc -> new DSRootCause(scr).getRootCause(cdesc)); + + rootCause.ifPresent(rc -> new RootCausePrinter().print(rc)); + return rootCause.orElseGet(null); + } }