diff --git a/app/press/Compressor.java b/app/press/Compressor.java index 26244f2..daae6b3 100644 --- a/app/press/Compressor.java +++ b/app/press/Compressor.java @@ -18,6 +18,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import play.Play; import play.PlayPlugin; import play.cache.Cache; import play.exceptions.UnexpectedException; @@ -201,7 +202,7 @@ public List getFileListOrder() { public void addFileListToCache(String cacheKey, List originalList) { List newList = new ArrayList(); for (FileInfo fileInfo : originalList) { - VirtualFile file = VirtualFile.fromRelativePath(srcDir + fileInfo.fileName); + VirtualFile file = getVirtualFile(srcDir + fileInfo.fileName); // Check the file exists if (!file.exists()) { @@ -252,7 +253,7 @@ protected static VirtualFile getCompressedFile(FileCompressor compressor, String fileName = Crypto.passwordHash(joinedFileNames); fileName = lettersOnly(fileName); String filePath = compressedDir + fileName + extension; - VirtualFile file = VirtualFile.fromRelativePath(filePath); + VirtualFile file = getVirtualFile(filePath); // If the file already exists in the cache, return it if (useCache(componentFiles, file, extension)) { @@ -269,7 +270,7 @@ protected static VirtualFile getCompressedFile(FileCompressor compressor, componentFiles.size()); // Create the directory if it doesn't already exist - VirtualFile dir = VirtualFile.fromRelativePath(compressedDir); + VirtualFile dir = getVirtualFile(compressedDir); if (!dir.exists()) { if (!dir.getRealFile().mkdirs()) { throw new PressException("Could not create directory for compressed file output " @@ -323,7 +324,7 @@ public static List clearCache(String compressedDir, String extension) { PressLogger.trace("Deleting cached files"); // Get the cache directory - VirtualFile dir = VirtualFile.fromRelativePath(compressedDir); + VirtualFile dir = getVirtualFile(compressedDir); if (!dir.exists() || !dir.isDirectory()) { return new ArrayList(); } @@ -535,6 +536,14 @@ protected List getFilesInResponse(String content) { return filesInOrder; } + /** + * Gets the file at the given path, relative to the application root, even + * if the file doesn't exist + */ + private static VirtualFile getVirtualFile(String filePath) { + return VirtualFile.open(Play.getFile(filePath)); + } + protected static class FileInfo { String fileName; boolean compress;