From 46d29c54b491238d060a9467df50c0c07cab6bb2 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Mon, 17 Sep 2018 18:47:40 +0300 Subject: [PATCH] EA-127607 - IAE: VfsUtilCore.$$$reportNull$$$ --- .../ide/fileTemplates/FileTemplateUtil.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java index 119d0bd1d57b..3d33ee7f9af6 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java @@ -19,6 +19,7 @@ import com.intellij.openapi.util.ClassLoaderUtil; import com.intellij.openapi.util.ThrowableComputable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.util.ArrayUtil; @@ -305,9 +306,9 @@ public class FileTemplateUtil { } } propsMap.put(FileTemplate.ATTRIBUTE_FILE_NAME, fileName + (StringUtil.isEmpty(template.getExtension()) ? "" : "." + template.getExtension())); - String path = VfsUtilCore.getRelativePath(directory.getVirtualFile(), directory.getProject().getBaseDir()); - if (path != null) { - propsMap.put(FileTemplate.ATTRIBUTE_DIR_PATH, path); + String dirPath = getDirPathRelativeToProjectBaseDir(directory); + if (dirPath != null) { + propsMap.put(FileTemplate.ATTRIBUTE_DIR_PATH, dirPath); } //Set escaped references to dummy values to remove leading "\" (if not already explicitly set) @@ -331,6 +332,12 @@ public class FileTemplateUtil { .compute(()->handler.createFromTemplate(project, directory, fileName_, template, templateText, props_)); } + @Nullable + private static String getDirPathRelativeToProjectBaseDir(@NotNull PsiDirectory directory) { + VirtualFile baseDir = directory.getProject().getBaseDir(); + return baseDir != null ? VfsUtilCore.getRelativePath(directory.getVirtualFile(), baseDir) : null; + } + @NotNull public static CreateFromTemplateHandler findHandler(@NotNull FileTemplate template) { for (CreateFromTemplateHandler handler : Extensions.getExtensions(CreateFromTemplateHandler.EP_NAME)) {