public ITypeDefinition GetTypeDefinition(string repositoryId, string typeId, IExtensionsData extension) { ITypeDefinition result = null; bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0); TypeDefinitionCache cache = session.GetTypeDefinitionCache(); // if extension is not set, check the cache first if (!hasExtension) { result = cache.Get(repositoryId, typeId); if (result != null) { return(result); } } // it was not in the cache -> get the SPI and fetch the type definition ICmisSpi spi = session.GetSpi(); result = spi.GetRepositoryService().GetTypeDefinition(repositoryId, typeId, extension); // put it into the cache if (!hasExtension && (result != null)) { cache.Put(repositoryId, result); } return(result); }
private void AddToTypeCache(TypeDefinitionCache cache, string repositoryId, IList <ITypeDefinitionContainer> containers) { if (containers == null) { return; } foreach (ITypeDefinitionContainer container in containers) { cache.Put(repositoryId, container.TypeDefinition); AddToTypeCache(cache, repositoryId, container.Children); } }
public ITypeDefinitionList GetTypeChildren(string repositoryId, string typeId, bool?includePropertyDefinitions, long?maxItems, long?skipCount, IExtensionsData extension) { ITypeDefinitionList result = null; bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0); // get the SPI and fetch the type definitions ICmisSpi spi = session.GetSpi(); result = spi.GetRepositoryService().GetTypeChildren(repositoryId, typeId, includePropertyDefinitions, maxItems, skipCount, extension); // put it into the cache if (!hasExtension && (includePropertyDefinitions ?? false) && (result != null) && (result.List != null)) { TypeDefinitionCache cache = session.GetTypeDefinitionCache(); foreach (ITypeDefinition tdd in result.List) { cache.Put(repositoryId, tdd); } } return(result); }
private void AddToTypeCache(TypeDefinitionCache cache, string repositoryId, IList<ITypeDefinitionContainer> containers) { if (containers == null) { return; } foreach (ITypeDefinitionContainer container in containers) { cache.Put(repositoryId, container.TypeDefinition); AddToTypeCache(cache, repositoryId, container.Children); } }