//IRepositoryManager
        public void RegisterModule(IExtensionObjectsModule module)
        {
            List<IExtensionObject> addedExtensionObjects = new List<IExtensionObject>();
            foreach (IExtensionObject extObject in module.ExtensionObjects)
            {
                try
                {
                    AddExtensionObject(extObject);
                    addedExtensionObjects.Add(extObject);
                }
                catch (Exception ex)
                {
                    foreach (IExtensionObject extensionObject in addedExtensionObjects)
                    {
                        RemoveExtensionObject(extensionObject);
                    }
                    throw;
                }
            }

            this.modules.Add(module);
        }
 public bool HandleCannotAddExtensionObject(IExtensionObjectsModule module, IExtensionObject extensionObject,
     Exception exception)
 {
     logger.Info(string.Format("({0}:{1}) -> {2}", module.Name, extensionObject.DataObject, exception));
     return true;
 }
 public ExtensionObject(Guid repositoryIdentifier, IExtensionObjectsModule owner, object dataObject)
 {
     RepositoryIdentifier = repositoryIdentifier;
     Owner = owner;
     DataObject = dataObject;
 }
        public void RemoveModule(IExtensionObjectsModule module)
        {
            if (!modules.Contains(module))
                throw new MissingModuleException(module);

            foreach (IExtensionObject extObject in module.ExtensionObjects)
                RemoveExtensionObject(extObject);
        }