From 9967fe81828ba6deb4fd48079f082df2f14317b8 Mon Sep 17 00:00:00 2001 From: Juan Manuel Leflet Estrada Date: Tue, 16 Jul 2024 16:32:03 +0200 Subject: [PATCH] Add guard against null pointer Signed-off-by: Juan Manuel Leflet Estrada --- .../internal/symbol/WithAnnotationQuery.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/WithAnnotationQuery.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/WithAnnotationQuery.java index 5a49820..c557b1f 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/WithAnnotationQuery.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/WithAnnotationQuery.java @@ -2,16 +2,19 @@ import io.konveyor.tackle.core.internal.query.AnnotationQuery; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IImportDeclaration; import org.eclipse.jdt.core.IMemberValuePair; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.search.SearchMatch; import org.eclipse.jdt.internal.core.Annotation; +import org.eclipse.jdt.internal.core.CompilationUnit; import org.eclipse.jdt.internal.core.SourceRefElement; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; @@ -106,16 +109,20 @@ private String getFQN(IAnnotation annotation) { return name; } else { // If not, the annotation must have been imported. Look in the imports: - try { - return Arrays.stream(((Annotation) annotation).getCompilationUnit().getImports()) - .filter(i -> i.getElementName().endsWith(name)) - .findFirst() - .map(IImportDeclaration::getElementName) - .orElse(""); - } catch (JavaModelException e) { - e.printStackTrace(); - return ""; - } + return tryToGetImports(annotation).stream() + .filter(i -> i.getElementName().endsWith(name)) + .findFirst() + .map(IImportDeclaration::getElementName) + .orElse(""); + } + } + + private List tryToGetImports(IAnnotation annotation) { + try { + return Optional.ofNullable(((Annotation) annotation).getCompilationUnit().getImports()).map(Arrays::asList).orElse(List.of()); + } catch (Throwable e) { + e.printStackTrace(); + return List.of(); } } }