/// <summary> /// Elimina un seriovicio del repositorio y del origen de metadata de servicios.- /// </summary> /// <param name="providerName">Nombre del proveedor de metadata de servicios.-</param> /// <param name="serviceName">Nombre del servicio</param> public static void DeleteServiceConfiguration(string providerName, string serviceName) { ServiceProviderElement provider = GetProvider(providerName); ServiceConfigurationCollection svcList = GetAllServices(provider); if (!svcList.Exists(serviceName, provider.ApplicationId)) { Exceptions.TechnicalException te = new Exceptions.TechnicalException(string.Format("El servicio {0} no se encuentra configurado.\r\nProveedor de Metadata: {1}\r\nApplicationId: {2}\r\n", serviceName, provider.Name, provider.ApplicationId)); te.ErrorId = "7002"; Fwk.Exceptions.ExceptionHelper.SetTechnicalException <ServiceMetadata>(te); throw te; } ServiceConfiguration wServiceConfigurationEnMemoria = svcList.GetServiceConfiguration(serviceName, provider.ApplicationId); svcList.Remove(wServiceConfigurationEnMemoria); if (provider.ProviderType == ServiceProviderType.xml) { XmlServiceConfigurationManager.DeleteServiceConfiguration(provider.SourceInfo, svcList); } else { DatabaseServiceConfigurationManager.DeleteServiceConfiguration(serviceName, provider.ApplicationId, provider.SourceInfo); } }
/// <summary> /// /// </summary> public static void RefreshServices() { ServiceConfigurationCollection svcList = null; foreach (ServiceProviderElement provider in _ProviderSection.Providers) { _Repository.Remove(provider.Name); if (provider.ProviderType == ServiceProviderType.xml) { svcList = XmlServiceConfigurationManager.GetAllServices(provider.SourceInfo); } if (provider.ProviderType == ServiceProviderType.sqldatabase) { svcList = DatabaseServiceConfigurationManager.GetAllServices(provider.ApplicationId, provider.SourceInfo); } try { //Se agrega try cath debido a que un subproseso pueda intentar agregar un item y aexistente _Repository.Add(provider.Name, svcList); } catch (Exception) { } } }
/// <summary> /// Crea un servicio en el origen de datos indicado por el proveedor /// El aaplication Id que se utiliza es el del nuevo servicio. Si el provedor estra configurado para usar uno determinado este se ignora /// de esta manera un proveedor puede insertar servicios para diferentes aplicaciones /// </summary> /// <param name="providerName">Nombre del proveedor de metadata de servicios.-</param> /// <param name="pServiceConfiguration"><see cref="ServiceConfiguration"/></param> public static void AddServiceConfiguration(string providerName, ServiceConfiguration pServiceConfiguration) { ServiceProviderElement provider = GetProvider(providerName); ServiceConfigurationCollection svcList = GetAllServices(provider); if (svcList.Exists(pServiceConfiguration.Name, pServiceConfiguration.ApplicationId)) { Exceptions.TechnicalException te = new Exceptions.TechnicalException(string.Format("El servicio {0} ya existe.\r\nProveedor de Metadata: {1}\r\nApplicationId: {2}\r\n", pServiceConfiguration.Name, provider.Name, provider.ApplicationId)); te.ErrorId = "7002"; Fwk.Exceptions.ExceptionHelper.SetTechnicalException <ServiceMetadata>(te); throw te; } svcList.Add(pServiceConfiguration); if (provider.ProviderType == ServiceProviderType.xml) { XmlServiceConfigurationManager.AddServiceConfiguration(pServiceConfiguration, provider.SourceInfo, svcList); } else { DatabaseServiceConfigurationManager.AddServiceConfiguration(pServiceConfiguration, pServiceConfiguration.ApplicationId, provider.SourceInfo); } }
///date:2013-03-02 No se utilizara la actualizacion //private static FileSystemWatcher watcher; /// <summary> /// Obtiene todos los servicios del proveedor de metadata /// </summary> /// <param name="provider">Proveedor de la metadata</param> /// <returns></returns> public static ServiceConfigurationCollection GetAllServices(ServiceProviderElement provider) { ServiceConfigurationCollection svcList = null; //Si no esta cargado el provider en el repositorio if (!_Repository.ContainsKey(provider.Name)) { #region xml ///date:2013-03-02 No se utilizara la actualizacion if (provider.ProviderType == ServiceProviderType.xml) { //{ svcList = XmlServiceConfigurationManager.GetAllServices(provider.SourceInfo); } // //Habilito FileSystemWatcher para detectar cualquie cambio sobre la metadata // watcher = new System.IO.FileSystemWatcher(); // watcher.Filter = provider.SourceInfo; // watcher.Path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location; // watcher.EnableRaisingEvents = true; // watcher.Changed += new FileSystemEventHandler(watcher_Changed); //} #endregion #region sqldatabase if (provider.ProviderType == ServiceProviderType.sqldatabase) { svcList = DatabaseServiceConfigurationManager.GetAllServices(provider.ApplicationId, provider.SourceInfo); } #endregion try { ///Se agrega try cath debido a que un subproseso pueda intentar agregar un item y aexistente _Repository.Add(provider.Name, svcList); } catch (Exception) { } } else { svcList = _Repository[provider.Name]; } return(svcList); }