From 1743d7997e2aa1f3e2022cfab0c9076d99ab7a69 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Thu, 18 Sep 2014 17:34:18 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud) 84382: Merged DEV (5.0.0.BF) to HEAD-BUG-FIX (5.0/Cloud) 83951: ACE-968 : CIFS: folder is not deleted if it has subfolder and document inside The folder is now not deleted if it has pseudo files inside. The info about deleted pseudo files is not returned to the client. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@84658 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/PseudoFileOverlayImpl.java | 7 ++- .../filesys/repo/ContentDiskDriver2.java | 48 +++++++++++++++---- 2 files changed, 45 insertions(+), 10 deletions(-) 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); } }