From 787b7d0fb9bdae8c4e9160d2a6d761e3afe15c36 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Mon, 13 May 2013 22:21:31 +0200 Subject: [PATCH] Avoiding NPE for diagnostics without source --- .../model/DiagnosticDescriptor.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/processor/src/test/java/org/mapstruct/ap/testutil/compilation/model/DiagnosticDescriptor.java b/processor/src/test/java/org/mapstruct/ap/testutil/compilation/model/DiagnosticDescriptor.java index 42f429cb5..924d2d942 100644 --- a/processor/src/test/java/org/mapstruct/ap/testutil/compilation/model/DiagnosticDescriptor.java +++ b/processor/src/test/java/org/mapstruct/ap/testutil/compilation/model/DiagnosticDescriptor.java @@ -17,14 +17,13 @@ package org.mapstruct.ap.testutil.compilation.model; import java.io.File; import java.io.IOException; - import javax.tools.Diagnostic.Kind; import javax.tools.JavaFileObject; import org.mapstruct.ap.testutil.compilation.annotation.Diagnostic; /** - * Represents a diagnostic ocurred during a compilation. + * Represents a diagnostic occurred during a compilation. * * @author Gunnar Morling */ @@ -48,18 +47,26 @@ public class DiagnosticDescriptor { } public static DiagnosticDescriptor forDiagnostic(String sourceDir, javax.tools.Diagnostic diagnostic) { - try - { - String sourceName = new File(diagnostic.getSource().toUri()).getCanonicalPath(); - return new DiagnosticDescriptor( - (sourceName.length() > sourceDir.length() ? sourceName.substring( sourceDir.length() + 1 ) : sourceName), - diagnostic.getKind(), - diagnostic.getLineNumber(), - "" - ); + return new DiagnosticDescriptor( + getSourceName( sourceDir, diagnostic ), + diagnostic.getKind(), + diagnostic.getLineNumber(), + "" + ); + } + + private static String getSourceName(String sourceDir, javax.tools.Diagnostic diagnostic) { + if ( diagnostic.getSource() == null ) { + return null; } - catch ( IOException e ) - { + + try { + String sourceName = new File( diagnostic.getSource().toUri() ).getCanonicalPath(); + return sourceName.length() > sourceDir.length() ? + sourceName.substring( sourceDir.length() + 1 ) : + sourceName; + } + catch ( IOException e ) { throw new RuntimeException( e ); } }