diff --git a/source/java/org/alfresco/filesys/alfresco/PseudoFileOverlayImpl.java b/source/java/org/alfresco/filesys/alfresco/PseudoFileOverlayImpl.java index 2671ae793c..338d86f696 100644 --- a/source/java/org/alfresco/filesys/alfresco/PseudoFileOverlayImpl.java +++ b/source/java/org/alfresco/filesys/alfresco/PseudoFileOverlayImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2010 Alfresco Software Limited. + * Copyright (C) 2007-2014 Alfresco Software Limited. * * This file is part of Alfresco * @@ -261,7 +261,10 @@ public class PseudoFileOverlayImpl implements PseudoFileOverlay { return null; } - + if (isDeleted(parentDir, fname)) + { + return null; + } if(context.isAlfrescoURLEnabled()) { if(context.getURLFileName().equals(fname)) diff --git a/source/java/org/alfresco/filesys/repo/ContentDiskDriver2.java b/source/java/org/alfresco/filesys/repo/ContentDiskDriver2.java index af43d9882d..ac62881198 100644 --- a/source/java/org/alfresco/filesys/repo/ContentDiskDriver2.java +++ b/source/java/org/alfresco/filesys/repo/ContentDiskDriver2.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2013 Alfresco Software Limited. + * Copyright (C) 2005-2014 Alfresco Software Limited. * * This file is part of Alfresco * @@ -667,12 +667,25 @@ public class ContentDiskDriver2 extends AlfrescoDiskDriver implements ExtendedD if(ctx.getPseudoFileOverlay().isPseudoFile(dirNodeRef, paths[1])) { PseudoFile pfile = ctx.getPseudoFileOverlay().getPseudoFile(dirNodeRef, paths[1]); - FileInfo pseudoFileInfo = pfile.getFileInfo(); if(logger.isDebugEnabled()) { - logger.debug("returning psuedo file details:" + pseudoFileInfo); + if (pfile != null) + { + logger.debug("returning psuedo file details:" + pfile); + } + else + { + logger.debug("Try to return deleted pseudo file :" + paths[1]); + } + } + if (pfile != null) + { + return pfile.getFileInfo(); + } + else + { + throw new FileNotFoundException("The pseudo file was deleted"); } - return pseudoFileInfo; } } @@ -1111,8 +1124,13 @@ public class ContentDiskDriver2 extends AlfrescoDiskDriver implements ExtendedD if (fileFolderService.exists(nodeRef)) { // Check if the folder is empty - - if ( getCifsHelper().isFolderEmpty( nodeRef)) + // Get pseudo files + PseudoFileList pseudoFileList = new PseudoFileList(); + if (session.isPseudoFilesEnabled()) + { + pseudoFileList = ctx.getPseudoFileOverlay().searchPseudoFiles(nodeRef, "*"); + } + if (getCifsHelper().isFolderEmpty(nodeRef) && pseudoFileList.isEmpty()) { // Delete the folder node fileFolderService.delete(nodeRef); @@ -2557,9 +2575,23 @@ public class ContentDiskDriver2 extends AlfrescoDiskDriver implements ExtendedD PseudoFile pfile = ctx.getPseudoFileOverlay().getPseudoFile(dirNodeRef, paths[1]); if(logger.isDebugEnabled()) { - logger.debug("Opened pseudo file :" + pfile); + if (pfile != null) + { + logger.debug("Opened pseudo file :" + pfile); + } + else + { + logger.debug("Try to open deleted pseudo file :" + paths[1]); + } + } + if (pfile != null) + { + return pfile.getFile( path); + } + else + { + throw new FileNotFoundException("The pseudo file was deleted"); } - return pfile.getFile( path); } }