/// <summary> /// Get the sub-folders of a particular CMIS folder. /// </summary> /// <returns>Full path of each sub-folder, including leading slash.</returns> static public string[] GetSubfolders(CmisRepoCredentials credentials, string path) { List <string> result = new List <string>(); // Connect to the CMIS repository. Dictionary <string, string> cmisParameters = GetCmisParameters(credentials); SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.CreateSession(cmisParameters); // Get the folder. IFolder folder; try { folder = (IFolder)session.GetObjectByPath(path); } catch (Exception ex) { Logger.Warn(string.Format("CmisUtils | exception when session GetObjectByPath for {0}: {1}", path, Utils.ToLogString(ex))); return(result.ToArray()); } // Debug the properties count, which allows to check whether a particular CMIS implementation is compliant or not. // For instance, IBM Connections is known to send an illegal count. Logger.Info("CmisUtils | folder.Properties.Count:" + folder.Properties.Count.ToString()); // Get the folder's sub-folders. IItemEnumerable <ICmisObject> children = folder.GetChildren(); // Return the full path of each of the sub-folders. foreach (var subfolder in children.OfType <IFolder>()) { result.Add(subfolder.Path); } return(result.ToArray()); }
public void SmokeTestRootFolder() { ICmisObject rootFolderObject = Session.GetRootFolder(); Assert.NotNull(rootFolderObject); Assert.NotNull(rootFolderObject.Id); Assert.True(rootFolderObject is IFolder); IFolder rootFolder = (IFolder)rootFolderObject; Assert.AreEqual("/", rootFolder.Path); Assert.AreEqual(1, rootFolder.Paths.Count); Assert.NotNull(rootFolder.AllowableActions); Assert.True(rootFolder.AllowableActions.Actions.Contains(Actions.CanGetProperties)); Assert.False(rootFolder.AllowableActions.Actions.Contains(Actions.CanGetFolderParent)); IItemEnumerable <ICmisObject> children = rootFolder.GetChildren(); Assert.NotNull(children); foreach (ICmisObject child in children) { Assert.NotNull(child); Assert.NotNull(child.Id); Assert.NotNull(child.Name); Console.WriteLine(child.Name + " (" + child.Id + ")"); } }
static public string[] GetSubfolders(string repositoryId, string path, string address, string user, string password) { List <string> result = new List <string>(); Dictionary <string, string> cmisParameters = new Dictionary <string, string>(); cmisParameters[SessionParameter.BindingType] = BindingType.AtomPub; cmisParameters[SessionParameter.AtomPubUrl] = address; cmisParameters[SessionParameter.User] = user; cmisParameters[SessionParameter.Password] = password; cmisParameters[SessionParameter.RepositoryId] = repositoryId; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.CreateSession(cmisParameters); IFolder folder = (IFolder)session.GetObjectByPath(path); Logger.Info("Sync | folder.Properties.Count:" + folder.Properties.Count); IItemEnumerable <ICmisObject> children = folder.GetChildren(); foreach (var subfolder in children.OfType <IFolder>()) { result.Add(subfolder.Path); } return(result.ToArray()); }
/// <summary> /// Get the sub-folders of a particular CMIS folder. /// </summary> /// <returns>Full path of each sub-folder, including leading slash.</returns> static public string[] GetSubfolders(string repositoryId, string path, string url, string user, string password) { List <string> result = new List <string>(); // Connect to the CMIS repository. ISession session = Auth.Auth.GetCmisSession(url, user, password, repositoryId); // Get the folder. IFolder folder; try { folder = (IFolder)session.GetObjectByPath(path); } catch (Exception ex) { Logger.Warn(String.Format("CmisUtils | exception when session GetObjectByPath for {0}", path), ex); return(result.ToArray()); } // Debug the properties count, which allows to check whether a particular CMIS implementation is compliant or not. // For instance, IBM Connections is known to send an illegal count. Logger.Info("CmisUtils | folder.Properties.Count:" + folder.Properties.Count.ToString()); // Get the folder's sub-folders. IItemEnumerable <ICmisObject> children = folder.GetChildren(); // Return the full path of each of the sub-folders. foreach (var subfolder in children.OfType <IFolder>()) { result.Add(subfolder.Path); } return(result.ToArray()); }
public List <CMISFolder> GetFoldersByPath(string path, string checkPublishInEvolveFilter) { DocumentList documents = new DocumentList(); List <CMISFolder> folders = new List <CMISFolder>(); CMISFolder folder = new CMISFolder(path); folders.Add(folder); string pathString = Utilities.CMISUtilities.AddCMISNamespaceToPath(path); // get documents folder.ContainedDocuments = this.GetDocumentsByPath(path, checkPublishInEvolveFilter); //get sub folders IItemEnumerable <IQueryResult> qr = CMISQuery.SelectFoldersByPath(pathString); foreach (IQueryResult hit in qr) { Dictionary <string, string> FolderProperties = this.GetProperties(hit); string subFolderPath = FolderProperties["path"]; string slicedPath = Utilities.CMISUtilities.sliceDocumentLibraryPath(subFolderPath); CMISFolder subFolder = new CMISFolder(slicedPath); subFolder.ContainedDocuments = this.GetDocumentsByPath(slicedPath, checkPublishInEvolveFilter); folders.Add(subFolder); } return(folders); }
public DocumentList GetDocumentsByPath(string path, string checkPublishInEvolveFilter) { string pathString = Utilities.CMISUtilities.AddCMISNamespaceToPath(path); List <DocumentInfo> documents = new List <DocumentInfo>(); Dictionary <string, string> propertiesByKey = new Dictionary <string, string>(); Dictionary <string, DocumentPropertyMetaData> propertyMetaData = null; IItemEnumerable <IQueryResult> qr = CMISQuery.SelectDocumentsByPath(pathString, checkPublishInEvolveFilter); foreach (IQueryResult hit in qr) { DocumentInfo doc = new DocumentInfo(hit["d.cmis:objectId"].FirstValue.ToString(), hit["d.cmis:name"].FirstValue.ToString()); doc.Properties = this.GetProperties(hit); doc.Path = path; documents.Add(doc); if (propertyMetaData == null) { propertyMetaData = this.GetDocumentPropertyMetaData(hit); } } return(new DocumentList { Documents = documents, DocumentPropertyMetaData = propertyMetaData }); }
public void Init() { source = new List <int>(); for (int i = 0; i < 100; i++) { source.Add(i); } PageFetcher <int> .FetchPage fetchPageDelegate = delegate(long maxNumItems, long skipCount) { IList <int> page = new List <int>(); for (int i = (int)skipCount; i < skipCount + maxNumItems; i++) { if (source.Count <= i) { break; } page.Add(source[i]); } return(new PageFetcher <int> .Page <int>(page, source.Count, skipCount + maxNumItems < source.Count)); }; testEnumerable = new CollectionEnumerable <int>(new PageFetcher <int>(PageSize, fetchPageDelegate)); }
/// <summary> /// Get the sub-folders of a particular CMIS folder. /// </summary> /// <returns>Full path of each sub-folder, including leading slash.</returns> static public string[] GetSubfolders(string repositoryId, string path, string address, string user, string password) { List <string> result = new List <string>(); // Connect to the CMIS repository. Dictionary <string, string> cmisParameters = new Dictionary <string, string>(); cmisParameters[SessionParameter.BindingType] = BindingType.AtomPub; cmisParameters[SessionParameter.AtomPubUrl] = address; cmisParameters[SessionParameter.User] = user; cmisParameters[SessionParameter.Password] = password; cmisParameters[SessionParameter.RepositoryId] = repositoryId; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.CreateSession(cmisParameters); // Get the folder. IFolder folder = (IFolder)session.GetObjectByPath(path); // Debug the properties count, which allows to check whether a particular CMIS implementation is compliant or not. // For instance, IBM Connections is known to send an illegal count. Logger.Info("CmisUtils | folder.Properties.Count:" + folder.Properties.Count.ToString()); // Get the folder's sub-folders. IItemEnumerable <ICmisObject> children = folder.GetChildren(); // Return the full path of each of the sub-folders. foreach (var subfolder in children.OfType <IFolder>()) { result.Add(subfolder.Path); } return(result.ToArray()); }
public void WriteThenRead(string canonical_name, string localPath, string remoteFolderPath, string url, string user, string password, string repositoryId) { string fileName = "test.txt"; var cmisParameters = new Dictionary <string, string>(); cmisParameters[SessionParameter.BindingType] = BindingType.AtomPub; cmisParameters[SessionParameter.AtomPubUrl] = url; cmisParameters[SessionParameter.User] = user; cmisParameters[SessionParameter.Password] = Crypto.Deobfuscate(password); cmisParameters[SessionParameter.RepositoryId] = repositoryId; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.GetRepositories(cmisParameters)[0].CreateSession(); // IFolder root = session.GetRootFolder(); IFolder root = (IFolder)session.GetObjectByPath(remoteFolderPath); Dictionary <string, object> properties = new Dictionary <string, object>(); properties.Add(PropertyIds.Name, fileName); properties.Add(PropertyIds.ObjectTypeId, "cmis:document"); ContentStream contentStream = new ContentStream(); contentStream.FileName = fileName; contentStream.MimeType = MimeType.GetMIMEType(fileName); // Should CmisSync try to guess? byte[] bytes = Encoding.UTF8.GetBytes("Hello,world!"); contentStream.Stream = new MemoryStream(bytes); contentStream.Length = bytes.Length; // Create file. DotCMIS.Enums.VersioningState?state = null; if (true != session.RepositoryInfo.Capabilities.IsAllVersionsSearchableSupported) { state = DotCMIS.Enums.VersioningState.None; } session.CreateDocument(properties, root, contentStream, state); // Check whether file is present. IItemEnumerable <ICmisObject> children = root.GetChildren(); bool found = false; foreach (ICmisObject child in children) { string childFileName = (string)child.GetPropertyValue(PropertyIds.Name); Console.WriteLine(childFileName); if (childFileName.Equals(fileName)) { found = true; } } Assert.True(found); // Clean. IDocument doc = (IDocument)session.GetObjectByPath((remoteFolderPath + "/" + fileName).Replace("//", "/")); doc.DeleteAllVersions(); }
public void WriteThenRead(string canonical_name, string localPath, string remoteFolderPath, string url, string user, string password, string repositoryId) { string fileName = "test.txt"; var cmisParameters = new Dictionary <string, string>(); cmisParameters[SessionParameter.BindingType] = BindingType.AtomPub; cmisParameters[SessionParameter.AtomPubUrl] = url; cmisParameters[SessionParameter.User] = user; cmisParameters[SessionParameter.Password] = password; cmisParameters[SessionParameter.RepositoryId] = repositoryId; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.GetRepositories(cmisParameters)[0].CreateSession(); // IFolder root = session.GetRootFolder(); IFolder root = (IFolder)session.GetObjectByPath(remoteFolderPath); Dictionary <string, object> properties = new Dictionary <string, object>(); properties.Add(PropertyIds.Name, fileName); properties.Add(PropertyIds.ObjectTypeId, "cmis:document"); ContentStream contentStream = new ContentStream(); contentStream.FileName = fileName; contentStream.MimeType = MimeType.GetMIMEType(fileName); // Should CmisSync try to guess? contentStream.Stream = File.OpenRead("../../../TestLibraryRunner/Program.cs"); // Create file. session.CreateDocument(properties, root, contentStream, null); // Check whether file is present. IItemEnumerable <ICmisObject> children = root.GetChildren(); bool found = false; foreach (ICmisObject child in children) { string childFileName = (string)child.GetPropertyValue(PropertyIds.Name); Console.WriteLine(childFileName); if (childFileName.Equals(fileName)) { found = true; } } Assert.True(found); // Clean. IDocument doc = (IDocument)session.GetObjectByPath(remoteFolderPath + "/" + fileName); doc.DeleteAllVersions(); }
public void RenameAlfrescoDirectory(string OldName, string NewName) { Master = (IFolder)session.GetObject("8a4fec83-a7db-4636-8e84-9ed0babac107"); IItemEnumerable <ICmisObject> Children = Master.GetChildren(); foreach (var child in Children) { if (child.Name == OldName) { child.Rename(NewName); } } }
public IDocument Post(string DocumentName, string DocumentType, byte[] File, string FolderName) { //IFolder folder = session.GetRootFolder(); Master = (IFolder)session.GetObject("8a4fec83-a7db-4636-8e84-9ed0babac107"); var Exists = Master.GetChildren(operationContext).Any(child => child.Name.Equals(FolderName)); if (Exists) { IItemEnumerable <ICmisObject> Children = Master.GetChildren(); foreach (var child in Children) { if (child.Name == FolderName) { WorkingDirectory = child as IFolder; } } } else { WorkingDirectory = CreateFolder(Master, FolderName); } // define dictionary IDictionary <string, object> properties = new Dictionary <string, object>(); properties.Add(PropertyIds.Name, DocumentName); properties.Add(PropertyIds.ObjectTypeId, "cmis:document"); ContentStream contentStream = new ContentStream { FileName = DocumentName, MimeType = DocumentType, Length = File.Length, Stream = new MemoryStream(File) }; if (FileExists(WorkingDirectory, DocumentName)) { IItemEnumerable <ICmisObject> Files = WorkingDirectory.GetChildren(); DeleteFile(Files, DocumentName); } return(WorkingDirectory.CreateDocument(properties, contentStream, null)); }
public Dictionary <string, DocumentPropertyMetaData> GetDocumentPropertyMetaData() { Dictionary <string, DocumentPropertyMetaData> propertyMetaData = null; IItemEnumerable <IQueryResult> qr = CMISQuery.SelectDocumentsByKey(""); foreach (IQueryResult hit in qr) { if (propertyMetaData == null) { propertyMetaData = this.GetDocumentPropertyMetaData(hit); } else { break; } } return(propertyMetaData); }
public void SmokeTestQuery() { IItemEnumerable <IQueryResult> qr = Session.Query("SELECT * FROM cmis:document", false); Assert.NotNull(qr); foreach (IQueryResult hit in qr) { Assert.NotNull(hit); Assert.NotNull(hit["cmis:objectId"]); Console.WriteLine(hit.GetPropertyValueById(PropertyIds.Name) + " (" + hit.GetPropertyValueById(PropertyIds.ObjectId) + ")"); foreach (IPropertyData prop in hit.Properties) { string name = prop.QueryName; object value = prop.FirstValue; } } }
public bool Delete(string DocumentName, string FolderName) { Master = (IFolder)session.GetObject("8a4fec83-a7db-4636-8e84-9ed0babac107"); var Exists = Master.GetChildren(operationContext).Any(child => child.Name.Equals(FolderName)); if (Exists) { IItemEnumerable <ICmisObject> Children = Master.GetChildren(); foreach (var child in Children) { if (child.Name == FolderName) { WorkingDirectory = child as IFolder; } } } else { WorkingDirectory = CreateFolder(Master, FolderName); } if (FileExists(WorkingDirectory, DocumentName)) { IItemEnumerable <ICmisObject> Files = WorkingDirectory.GetChildren(); try { DeleteFile(Files, DocumentName); return(true); } catch (Exception ex) { return(false); throw ex as Exception; } } return(true); }
public bool DeleteFile(IItemEnumerable <ICmisObject> Files, string FileName) { bool prop = false; foreach (var file in Files) { try { if (file.Name == FileName) { file.Delete(true); } prop = true; } catch (Exception e) { throw e as Exception; } } return(prop); }
public void Init() { source = new List<int>(); for (int i = 0; i < 100; i++) { source.Add(i); } PageFetcher<int>.FetchPage fetchPageDelegate = delegate(long maxNumItems, long skipCount) { IList<int> page = new List<int>(); for (int i = (int)skipCount; i < skipCount + maxNumItems; i++) { if (source.Count <= i) { break; } page.Add(source[i]); } return new PageFetcher<int>.Page<int>(page, source.Count, skipCount + maxNumItems < source.Count); }; testEnumerable = new CollectionEnumerable<int>(new PageFetcher<int>(PageSize, fetchPageDelegate)); }
/// <summary> /// the key links a document to a cm instance /// </summary> /// <param name="key"></param> /// <returns></returns> public DocumentList GetDocumentsByKey(string key) { List <DocumentInfo> documents = new List <DocumentInfo>(); Dictionary <string, string> propertiesByKey = new Dictionary <string, string>(); Dictionary <string, DocumentPropertyMetaData> propertyMetaData = null; IItemEnumerable <IQueryResult> qr = CMISQuery.SelectDocumentsByKey(key); foreach (IQueryResult hit in qr) { DocumentInfo doc = new DocumentInfo(hit["d.cmis:objectId"].FirstValue.ToString(), hit["d.cmis:name"].FirstValue.ToString()); doc.Properties = this.GetProperties(hit); documents.Add(doc); if (propertyMetaData == null) { propertyMetaData = this.GetDocumentPropertyMetaData(hit); } } return(new DocumentList { Documents = documents, DocumentPropertyMetaData = propertyMetaData }); }
public void DotCmisToIBMConnections(string canonical_name, string localPath, string remoteFolderPath, string url, string user, string password, string repositoryId) { var cmisParameters = new Dictionary <string, string>(); cmisParameters[SessionParameter.BindingType] = BindingType.AtomPub; cmisParameters[SessionParameter.AtomPubUrl] = url; cmisParameters[SessionParameter.User] = user; cmisParameters[SessionParameter.Password] = Crypto.Deobfuscate(password); cmisParameters[SessionParameter.RepositoryId] = repositoryId; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.GetRepositories(cmisParameters)[0].CreateSession(); Console.WriteLine("Depth: 1"); IFolder root = session.GetRootFolder(); IItemEnumerable <ICmisObject> children = root.GetChildren(); foreach (var folder in children.OfType <IFolder>()) { Console.WriteLine(folder.Path); } Console.WriteLine("Depth: 2"); root = session.GetRootFolder(); children = root.GetChildren(); foreach (var folder in children.OfType <IFolder>()) { Console.WriteLine(folder.Path); IItemEnumerable <ICmisObject> subChildren = folder.GetChildren(); foreach (var subFolder in subChildren.OfType <IFolder>()) // Exception happens here, see https://issues.apache.org/jira/browse/CMIS-593 { Console.WriteLine(subFolder.Path); } } }
public void SmokeTestTypes() { // getTypeDefinition IObjectType documentType = Session.GetTypeDefinition("cmis:document"); Assert.NotNull(documentType); Assert.True(documentType is DocumentType); Assert.AreEqual("cmis:document", documentType.Id); Assert.AreEqual(BaseTypeId.CmisDocument, documentType.BaseTypeId); Assert.True(documentType.IsBaseType); Assert.IsNullOrEmpty(documentType.ParentTypeId); Assert.NotNull(documentType.PropertyDefinitions); Assert.True(documentType.PropertyDefinitions.Count >= 9); IObjectType folderType = Session.GetTypeDefinition("cmis:folder"); Assert.NotNull(folderType); Assert.True(folderType is FolderType); Assert.AreEqual("cmis:folder", folderType.Id); Assert.AreEqual(BaseTypeId.CmisFolder, folderType.BaseTypeId); Assert.True(folderType.IsBaseType); Assert.IsNullOrEmpty(folderType.ParentTypeId); Assert.NotNull(folderType.PropertyDefinitions); Assert.True(folderType.PropertyDefinitions.Count >= 9); // getTypeChildren Session.Clear(); IItemEnumerable <IObjectType> children = Session.GetTypeChildren(null, true); Assert.NotNull(children); int count; count = 0; foreach (IObjectType type in children) { Assert.NotNull(type); Assert.NotNull(type.Id); Assert.True(type.IsBaseType); Assert.IsNullOrEmpty(type.ParentTypeId); Assert.NotNull(type.PropertyDefinitions); Session.Clear(); IObjectType type2 = Session.GetTypeDefinition(type.Id); AssertAreEqual(type, type2); Session.GetTypeChildren(type.Id, true); count++; } Assert.True(count >= 2); Assert.True(count <= 4); // getTypeDescendants Session.Clear(); IList <ITree <IObjectType> > descendants = Session.GetTypeDescendants(null, -1, true); count = 0; foreach (ITree <IObjectType> tree in descendants) { Assert.NotNull(tree); Assert.NotNull(tree.Item); IObjectType type = tree.Item; Assert.NotNull(type); Assert.NotNull(type.Id); Assert.True(type.IsBaseType); Assert.IsNullOrEmpty(type.ParentTypeId); Assert.NotNull(type.PropertyDefinitions); Session.Clear(); IObjectType type2 = Session.GetTypeDefinition(type.Id); AssertAreEqual(type, type2); Session.GetTypeDescendants(type.Id, 2, true); count++; } Assert.True(count >= 2); Assert.True(count <= 4); }
public ShopIterator(IItemEnumerable item) { this.item = item; }
/// <summary> /// Crawl remote content, syncing down if needed. /// Meanwhile, cache remoteFiles and remoteFolders, they are output parameters that are used in CrawlLocalFiles/CrawlLocalFolders /// </summary> private bool CrawlRemote(IFolder remoteFolder, string remotePath, string localFolder, IList <string> localFilenameTranslationOfExistingRemoteDocuments, IList <string> remoteFolders) { bool success = true; SleepWhileSuspended(); // Remember seen names, and depending on the profile ignore the ones that have appeared already. // For instance, if the CMIS server has a file called Hello and a folder called HELLO, then on Windows the paths would conflict. // Store lowercase file and folder names inside. HashSet <string> names = new HashSet <string>(); // Get all remote children. // TODO: use paging IOperationContext operationContext = session.CreateOperationContext(); operationContext.FilterString = "*"; operationContext.IncludeAllowableActions = true; operationContext.IncludePolicies = true; operationContext.IncludeRelationships = IncludeRelationshipsFlag.Both; operationContext.IncludeAcls = true; // renditionFilter=* not available in DotCMIS this.repoInfo.CmisProfile.ConfigureOperationContext(operationContext); operationContext.MaxItemsPerPage = Int32.MaxValue; // Get children. IItemEnumerable <ICmisObject> childrenEnumeration = remoteFolder.GetChildren(operationContext); // Log. /*IList<ICmisObject> children = childrenEnumeration.ToList(); // Because we need to enumerate twice (log+crawl). * StringBuilder logBuilder = new StringBuilder(); * foreach (ICmisObject cmisObject in children) * { * logBuilder.Append(cmisObject.Name + " (" + cmisObject.GetType().Name + ") "); * } * Logger.Debug("Content of " + remotePath + ": " + logBuilder);*/ // Crawl. foreach (ICmisObject cmisObject in childrenEnumeration /*children*/) { try { if (cmisObject is DotCMIS.Client.Impl.Folder) { // It is a CMIS folder. IFolder remoteSubFolder = (IFolder)cmisObject; string remoteSubPath = CmisUtils.PathCombine(remotePath, remoteSubFolder.Name); // Ignore edgy folders. if (repoInfo.CmisProfile.IgnoreIfSameLowercaseNames && names.Contains(remoteSubFolder.Name.ToLowerInvariant())) { Logger.Warn("Ignoring " + remoteSubFolder.Name + "because other file or folder has the same name when ignoring lowercase/uppercase"); continue; } if (!repoInfo.CmisProfile.RemoteObjectWorthSyncing(remoteSubFolder)) { continue; } CrawlRemoteFolder(remoteSubFolder, remoteSubPath, localFolder, remoteFolders); names.Add(remoteSubFolder.Name.ToLowerInvariant()); } else if (cmisObject is DotCMIS.Client.Impl.Document) { // It is a CMIS document. IDocument remoteDocument = (IDocument)cmisObject; string remoteDocumentPath = CmisUtils.PathCombine(remotePath, remoteDocument.Name); // Ignore edgy documents. if (repoInfo.CmisProfile.IgnoreIfSameLowercaseNames && names.Contains(repoInfo.CmisProfile.localFilename(remoteDocument).ToLowerInvariant())) { Logger.Warn("Ignoring " + repoInfo.CmisProfile.localFilename(remoteDocument) + "because other file or folder has the same name when ignoring lowercase/uppercase"); continue; } if (!repoInfo.CmisProfile.RemoteObjectWorthSyncing(remoteDocument)) { continue; } CrawlRemoteDocument(remoteDocument, remoteDocumentPath, localFolder, localFilenameTranslationOfExistingRemoteDocuments); names.Add(remoteDocument.Name.ToLowerInvariant()); } else if (isLink(cmisObject)) { Logger.Debug("Ignoring file '" + remoteFolder + "/" + cmisObject.Name + "' of type '" + cmisObject.ObjectType.Description + "'. Links are not currently handled."); } else { Logger.Warn("Unknown object type: '" + cmisObject.ObjectType.Description + "' (" + cmisObject.ObjectType.DisplayName + ") for object " + remoteFolder + "/" + cmisObject.Name); } } catch (CmisBaseException e) { ProcessRecoverableException("Could not access remote object: " + cmisObject.Name, e); success = false; } } return(success); }