diff --git a/source/java/org/alfresco/filesys/smb/server/repo/ContentDiskDriver.java b/source/java/org/alfresco/filesys/smb/server/repo/ContentDiskDriver.java index 037ba44298..1f17d3ee77 100644 --- a/source/java/org/alfresco/filesys/smb/server/repo/ContentDiskDriver.java +++ b/source/java/org/alfresco/filesys/smb/server/repo/ContentDiskDriver.java @@ -653,30 +653,41 @@ public class ContentDiskDriver implements DiskInterface, IOCtlInterface paths = FileName.splitPath(searchPath); if ( paths[0] != null && paths[0].length() > 1) { + // Find the node ref for the folder being searched + + NodeRef nodeRef = getNodeForPath(tree, paths[0]); + // Get the file state for the folder being searched searchFolderState = getStateForPath(tree, paths[0]); if ( searchFolderState == null) + { + // Create a file state for the folder + searchFolderState = ctx.getStateTable().findFileState( paths[0], true, true); + } + + // Make sure the associated node is set + + if ( searchFolderState.hasNodeRef() == false) + { + // Set the associated node for the folder + + searchFolderState.setNodeRef( nodeRef); + } // Add pseudo files to the folder being searched if ( hasPseudoFileInterface()) getPseudoFileInterface().addPseudoFilesToFolder( sess, tree, paths[0]); - - // Find the node ref for the folder being searched - - NodeRef nodeRef = getNodeForPath(tree, paths[0]); + + // Set the search node and file spec if ( nodeRef != null) { searchRootNodeRef = nodeRef; searchFileSpec = paths[1]; - // Make sure the node ref is stored in the file state - - searchFolderState.setNodeRef( nodeRef); - // DEBUG if ( logger.isDebugEnabled()) diff --git a/source/java/org/alfresco/filesys/smb/server/repo/pseudo/ContentPseudoFileImpl.java b/source/java/org/alfresco/filesys/smb/server/repo/pseudo/ContentPseudoFileImpl.java index 688841e21e..239c21ef11 100644 --- a/source/java/org/alfresco/filesys/smb/server/repo/pseudo/ContentPseudoFileImpl.java +++ b/source/java/org/alfresco/filesys/smb/server/repo/pseudo/ContentPseudoFileImpl.java @@ -161,34 +161,39 @@ public class ContentPseudoFileImpl implements PseudoFileInterface // Add the URL link pseudo file, if enabled - if ( isCIFS && ctx.hasURLFile() && fstate.getNodeRef() != null) + if ( isCIFS && ctx.hasURLFile()) { - // Build the URL file data - - StringBuilder urlStr = new StringBuilder(); - - urlStr.append("[InternetShortcut]\r\n"); - urlStr.append("URL="); - urlStr.append(ctx.getURLPrefix()); - urlStr.append("navigate/browse/workspace/SpacesStore/"); - urlStr.append( fstate.getNodeRef().getId()); - urlStr.append("\r\n"); - - // Create the in memory pseudo file for the URL link + // Make sure the state has the associated node details - byte[] urlData = urlStr.toString().getBytes(); + if ( fstate.getNodeRef() != null) + { + // Build the URL file data + + StringBuilder urlStr = new StringBuilder(); - MemoryPseudoFile urlFile = new MemoryPseudoFile( ctx.getURLFileName(), urlData); - fstate.addPseudoFile( urlFile); - - // Update the count of files added - - pseudoCnt++; - - // DEBUG - - if ( logger.isInfoEnabled()) - logger.info("Added URL link pseudo file for " + path); + urlStr.append("[InternetShortcut]\r\n"); + urlStr.append("URL="); + urlStr.append(ctx.getURLPrefix()); + urlStr.append("navigate/browse/workspace/SpacesStore/"); + urlStr.append( fstate.getNodeRef().getId()); + urlStr.append("\r\n"); + + // Create the in memory pseudo file for the URL link + + byte[] urlData = urlStr.toString().getBytes(); + + MemoryPseudoFile urlFile = new MemoryPseudoFile( ctx.getURLFileName(), urlData); + fstate.addPseudoFile( urlFile); + + // Update the count of files added + + pseudoCnt++; + + // DEBUG + + if ( logger.isInfoEnabled()) + logger.info("Added URL link pseudo file for " + path); + } } // Return the count of pseudo files added