public IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException {
if (serverFileInfo == null) {
serverResourceInfo = null;
this.effectivePermissions = null;
FileInfo fi = new FileInfo(getName());
HDFSServer server = getServer();
if (server != null) {
try {
if (".project".equals(getName())) {
fi.setExists(getLocalFile().exists());
fi.setLength(getLocalFile().length());
} else {
ResourceInformation fileInformation = getClient().getResourceInformation(uri.getURI(), server.getUserId());
if (fileInformation != null) {
serverResourceInfo = fileInformation;
fi.setDirectory(fileInformation.isFolder());
fi.setExists(true);
fi.setLastModified(fileInformation.getLastModifiedTime());
fi.setLength(fileInformation.getSize());
fi.setName(fileInformation.getName());
String userId = server.getUserId();
List<String> groupIds = server.getGroupIds();
if (userId == null) {
userId = getDefaultUserId();
groupIds = getDefaultGroupIds();
}
fileInformation.updateEffectivePermissions(userId, groupIds);