mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged 3.1 to HEAD:
14962: Fix for CIFS create folder on Vista/Windows7. ALFCOM-3033. Port content IO exception file server fix. ETWOTWO-1241 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14973 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -45,6 +45,7 @@ import org.alfresco.jlan.server.core.DeviceContextException;
|
|||||||
import org.alfresco.jlan.server.filesys.AccessDeniedException;
|
import org.alfresco.jlan.server.filesys.AccessDeniedException;
|
||||||
import org.alfresco.jlan.server.filesys.AccessMode;
|
import org.alfresco.jlan.server.filesys.AccessMode;
|
||||||
import org.alfresco.jlan.server.filesys.DirectoryNotEmptyException;
|
import org.alfresco.jlan.server.filesys.DirectoryNotEmptyException;
|
||||||
|
import org.alfresco.jlan.server.filesys.DiskFullException;
|
||||||
import org.alfresco.jlan.server.filesys.DiskInterface;
|
import org.alfresco.jlan.server.filesys.DiskInterface;
|
||||||
import org.alfresco.jlan.server.filesys.FileAttribute;
|
import org.alfresco.jlan.server.filesys.FileAttribute;
|
||||||
import org.alfresco.jlan.server.filesys.FileInfo;
|
import org.alfresco.jlan.server.filesys.FileInfo;
|
||||||
@@ -73,6 +74,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
|||||||
import org.alfresco.service.cmr.lock.NodeLockedException;
|
import org.alfresco.service.cmr.lock.NodeLockedException;
|
||||||
import org.alfresco.service.cmr.model.FileFolderService;
|
import org.alfresco.service.cmr.model.FileFolderService;
|
||||||
import org.alfresco.service.cmr.repository.ContentData;
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
|
import org.alfresco.service.cmr.repository.ContentIOException;
|
||||||
import org.alfresco.service.cmr.repository.ContentService;
|
import org.alfresco.service.cmr.repository.ContentService;
|
||||||
import org.alfresco.service.cmr.repository.MimetypeService;
|
import org.alfresco.service.cmr.repository.MimetypeService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -1472,6 +1474,16 @@ public class ContentDiskDriver extends AlfrescoDiskDriver implements DiskInterfa
|
|||||||
if ( netFile != null)
|
if ( netFile != null)
|
||||||
netFile.setFileId( params.getPath().hashCode());
|
netFile.setFileId( params.getPath().hashCode());
|
||||||
|
|
||||||
|
// If the file has been opened for overwrite then truncate the file to zero length, this will
|
||||||
|
// also prevent the existing content data from being copied to the new version of the file
|
||||||
|
|
||||||
|
if ( params.isOverwrite() && netFile != null)
|
||||||
|
{
|
||||||
|
// Truncate the file to zero length
|
||||||
|
|
||||||
|
netFile.truncateFile( 0L);
|
||||||
|
}
|
||||||
|
|
||||||
// Create a file state for the open file
|
// Create a file state for the open file
|
||||||
|
|
||||||
if ( ctx.hasStateTable())
|
if ( ctx.hasStateTable())
|
||||||
@@ -1494,16 +1506,6 @@ public class ContentDiskDriver extends AlfrescoDiskDriver implements DiskInterfa
|
|||||||
netFile.setAccessDate( fstate.getAccessDateTime());
|
netFile.setAccessDate( fstate.getAccessDateTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has been opened for overwrite then truncate the file to zero length, this will
|
|
||||||
// also prevent the existing content data from being copied to the new version of the file
|
|
||||||
|
|
||||||
if ( params.isOverwrite() && netFile != null)
|
|
||||||
{
|
|
||||||
// Truncate the file to zero length
|
|
||||||
|
|
||||||
netFile.truncateFile( 0L);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debug
|
// Debug
|
||||||
|
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
@@ -1665,6 +1667,17 @@ public class ContentDiskDriver extends AlfrescoDiskDriver implements DiskInterfa
|
|||||||
|
|
||||||
throw new AccessDeniedException("Create file " + params.getFullPath());
|
throw new AccessDeniedException("Create file " + params.getFullPath());
|
||||||
}
|
}
|
||||||
|
catch (ContentIOException ex)
|
||||||
|
{
|
||||||
|
// Debug
|
||||||
|
|
||||||
|
if ( logger.isDebugEnabled())
|
||||||
|
logger.debug("Create file - content I/O error, " + params.getFullPath());
|
||||||
|
|
||||||
|
// Convert to a filesystem disk full status
|
||||||
|
|
||||||
|
throw new DiskFullException("Create file " + params.getFullPath());
|
||||||
|
}
|
||||||
catch (AlfrescoRuntimeException ex)
|
catch (AlfrescoRuntimeException ex)
|
||||||
{
|
{
|
||||||
// Debug
|
// Debug
|
||||||
@@ -1743,7 +1756,6 @@ public class ContentDiskDriver extends AlfrescoDiskDriver implements DiskInterfa
|
|||||||
// Indicate that the file is open
|
// Indicate that the file is open
|
||||||
|
|
||||||
fstate.setFileStatus(FileStateStatus.FolderExists);
|
fstate.setFileStatus(FileStateStatus.FolderExists);
|
||||||
fstate.incrementOpenCount();
|
|
||||||
fstate.setNodeRef(nodeRef);
|
fstate.setNodeRef(nodeRef);
|
||||||
|
|
||||||
// DEBUG
|
// DEBUG
|
||||||
@@ -1936,9 +1948,17 @@ public class ContentDiskDriver extends AlfrescoDiskDriver implements DiskInterfa
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Delete the file
|
try
|
||||||
|
{
|
||||||
|
// Delete the file
|
||||||
|
|
||||||
fileFolderService.delete(nodeRef);
|
fileFolderService.delete(nodeRef);
|
||||||
|
}
|
||||||
|
catch ( Exception ex)
|
||||||
|
{
|
||||||
|
if ( logger.isWarnEnabled())
|
||||||
|
logger.warn("Error during delete on close, " + file.getFullName(), ex);
|
||||||
|
}
|
||||||
|
|
||||||
// Set the file state to indicate a delete on close
|
// Set the file state to indicate a delete on close
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user