FSEntry entry = entryCache.getEntry(path); if (entry != null) { return entry; } final FSDirectory parentEntry = getParentDirectoryEntry(path); if (parentEntry != null) { try { entry = parentEntry.getEntry(path); entryCache.setEntry(path, entry); return entry; } catch (IOException ex) {  log.debug("parent.getEntry failed", ex); ex.printStackTrace(); return null; } } else {  final FileSystem fs = fsm.getFileSystem(path); if (fs == null) { return null; } try { entry = fs.getRootEntry(); entryCache.setEntry(path, entry); return entry; } catch (IOException ex) { log.debug("Filesystem.getRootEntry failed", ex); ex.printStackTrace(); return null; } } } catch (IOException e) { log.debug("Filesystem.getRootEntry failed", e); return null; }
final int pathLen = path.length(); if (pathLen > 0) { if ((path.charAt(0) == File.separatorChar) || (path.charAt(pathLen - 1) == File.separatorChar)) { throw new IllegalArgumentException("Invalid path: " + path); } }
	private FSEntry getEntry(String path) {		try {            if(path == null)            {                return null;            }            			if (File.separator.equals(path))				return new VirtualRoot();			FSEntry entry = entryCache.getEntry(path);			if (entry != null) {				return entry;			}			final FSDirectory parentEntry = getParentDirectoryEntry(path);			if (parentEntry != null) {				try {					entry = parentEntry.getEntry(path);					entryCache.setEntry(path, entry);					return entry;				} catch (IOException ex) {					// Not found					log.debug("parent.getEntry failed", ex);					ex.printStackTrace();					return null;				}			} else {				// Root name				final FileSystem fs = fsm.getFileSystem(path);				if (fs == null) {					return null;				}				try {					entry = fs.getRootEntry();					entryCache.setEntry(path, entry);					return entry;				} catch (IOException ex) {					log.debug("Filesystem.getRootEntry failed", ex);					ex.printStackTrace();					return null;				}			}		} catch (IOException e) {			log.debug("Filesystem.getRootEntry failed", e);			return null;		}	}