diff --git a/asciidoctor-editor-plugin/src/main/java-eclipse/de/jcup/asciidoctoreditor/AsciiDoctorWrapper.java b/asciidoctor-editor-plugin/src/main/java-eclipse/de/jcup/asciidoctoreditor/AsciiDoctorWrapper.java index 2b672f2e..3d2be244 100644 --- a/asciidoctor-editor-plugin/src/main/java-eclipse/de/jcup/asciidoctoreditor/AsciiDoctorWrapper.java +++ b/asciidoctor-editor-plugin/src/main/java-eclipse/de/jcup/asciidoctoreditor/AsciiDoctorWrapper.java @@ -16,11 +16,9 @@ package de.jcup.asciidoctoreditor; import java.io.File; -import java.io.IOException; import java.nio.file.Path; import java.util.Map; -import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.asciidoctor.Asciidoctor; import org.eclipse.core.resources.IProject; @@ -63,7 +61,7 @@ public void convertToHTML(File asciiDocFile, long editorId, boolean useHiddenFil context.setAsciidocFile(asciiDocFile); if (useHiddenFile){ - context.setFileToRender(AsciiDocFileUtils.createHiddenEditorFile(asciiDocFile,editorId,context.getBaseDir(), getTempFolder())); + context.setFileToRender(AsciiDocFileUtils.createHiddenEditorFile(logAdapter, asciiDocFile,editorId,context.getBaseDir(), getTempFolder())); }else{ context.setFileToRender(asciiDocFile); } diff --git a/asciidoctor-editor-plugin/src/main/java/de/jcup/asciidoctoreditor/AsciiDocFileUtils.java b/asciidoctor-editor-plugin/src/main/java/de/jcup/asciidoctoreditor/AsciiDocFileUtils.java index ebe9c664..aaf12800 100644 --- a/asciidoctor-editor-plugin/src/main/java/de/jcup/asciidoctoreditor/AsciiDocFileUtils.java +++ b/asciidoctor-editor-plugin/src/main/java/de/jcup/asciidoctoreditor/AsciiDocFileUtils.java @@ -73,20 +73,27 @@ protected static File createSelfDeletingTempSubFolder(String tempId, String pare return newTempSubFolder; } - public static File createHiddenEditorFile(File asciidoctorFile, long editorId, File baseDir, Path tempFolder) throws IOException { + public static File createHiddenEditorFile(LogAdapter logAdapter, File asciidoctorFile, long editorId, File baseDir, Path tempFolder) throws IOException { File hiddenEditorFile = new File(tempFolder.toFile(), editorId + "_hidden-editorfile_" + asciidoctorFile.getName()); - - String relativePath= calculatePathToFileFromBase(asciidoctorFile,baseDir); - - StringBuilder sb= new StringBuilder(); - sb.append("// origin :").append(asciidoctorFile.getAbsolutePath()).append("\n"); - sb.append("// editor :").append(editorId).append("\n"); - sb.append("// basedir:").append(baseDir.getAbsolutePath()).append("\n"); - - sb.append("include::").append(relativePath).append("[]\n"); + try{ + String relativePath= calculatePathToFileFromBase(asciidoctorFile,baseDir); + StringBuilder sb= new StringBuilder(); + sb.append("// origin :").append(asciidoctorFile.getAbsolutePath()).append("\n"); + sb.append("// editor :").append(editorId).append("\n"); + sb.append("// basedir:").append(baseDir.getAbsolutePath()).append("\n"); + + sb.append("include::").append(relativePath).append("[]\n"); + + FileUtils.writeStringToFile(hiddenEditorFile, sb.toString(), "UTF-8",false); + hiddenEditorFile.deleteOnExit(); + }catch(NotInsideCurrentBaseDirException e){ + /* fallback to orign file - maybe something does not work but at least + * content will be shown! + */ + logAdapter.logWarn("File not in current base dir so copied origin as hidden file:"+asciidoctorFile.getAbsolutePath()); + FileUtils.copyFile(asciidoctorFile, hiddenEditorFile); + } - FileUtils.writeStringToFile(hiddenEditorFile, sb.toString(), "UTF-8",false); - hiddenEditorFile.deleteOnExit(); return hiddenEditorFile; } @@ -98,7 +105,18 @@ static String calculatePathToFileFromBase(File asciidoctorFile, File baseDir) { return unixAsciiDocFilePath.substring(unixBasePath.length()); } - return "pathProblems:"+unixAsciiDocFilePath+" not in "+unixBasePath; + throw new NotInsideCurrentBaseDirException("pathProblems:"+unixAsciiDocFilePath+" not in "+unixBasePath); } + + public static class NotInsideCurrentBaseDirException extends RuntimeException{ + + private static final long serialVersionUID = 1L; + + public NotInsideCurrentBaseDirException(String string) { + super(string); + } + + + } }