import org.alfresco.jlan.server.filesys.cache.FileState; //导入方法依赖的package包/类
/**
* Process a node delete event
*
* @param deleteEvent DeleteNodeEvent
*/
private final void processDeleteNode(DeleteNodeEvent deleteEvent) {
// Check if the delete was confirmed
//if ( deleteEvent.hasDeleteConfirm() == false) {
//
DEBUG
//
//if ( logger.isDebugEnabled())
//logger.debug("DeleteNode not confirmed, nodeRef=" + deleteEvent.getNodeRef() + ", path=" + deleteEvent.getPath());
//
//return;
//}
// Strip the root path
String relPath = deleteEvent.getPath().substring( m_rootPath.length()).replace( '/', '\\');
// DEBUG
if ( logger.isDebugEnabled())
logger.debug("DeleteNode nodeRef=" + deleteEvent.getNodeRef() + ", path=" + relPath);
// Update an existing file state to indicate that the file does not exist
if ( m_stateTable != null) {
// Check if there is file state for this file
FileState fState = m_stateTable.findFileState( relPath);
if ( fState != null && fState.exists() == true) {
// Mark the file/folder as no longer existing
fState.setFileStatus(FileStatus.NotExist);
fState.setAllocationSize(0);
fState.setOpenCount(0);
// What about oplocks that are on the deleted file?
// DEBUG
if ( logger.isDebugEnabled())
logger.debug("DeleteNode updated file state - " + fState);
}
}
// If change notifications are enabled then send an event to registered listeners
if ( m_filesysCtx.hasChangeHandler()) {
// Check if there are any active notifications
if ( m_filesysCtx.getChangeHandler().getGlobalNotifyMask() != 0) {
// Send a file deleted event to the change notification handler
if ( deleteEvent.getFileType() == FileFolderServiceType.FILE)
m_filesysCtx.getChangeHandler().notifyFileChanged(NotifyChange.ActionRemoved, relPath);
else
m_filesysCtx.getChangeHandler().notifyDirectoryChanged(NotifyChange.ActionRemoved, relPath);
// DEBUG
if ( logger.isDebugEnabled())
logger.debug("DeleteNode queued change notification");
}
}
}