/// <summary> /// at this time, there is always only one feature to be activated or deactivated in a location with same scope /// </summary> /// <param name="message"></param> private void HandleFeatureToggleRequest(FeatureToggleRequest message) { _log.Debug("Entered LocationActor-HandleFeatureToggleRequest"); if (message.Activate) { ActivatedFeature af; var error = dataService.ActivateFeature( message.FeatureDefinition , message.Location , message.ElevatedPrivileges , message.Force , out af); var completed = new Core.Messages.Completed.FeatureActivationCompleted( message.TaskId , message.Location.Id , af , string.Empty ); Sender.Tell(completed); } else { var completed = new Core.Messages.Completed.FeatureDeactivationCompleted( message.TaskId , message.Location.Id , string.Empty ); Sender.Tell(completed); } }
private void HandleActivation(FeatureToggleRequest message) { string errorMsg = null; ActivatedFeature af; switch (message.Location.Scope) { case Core.Models.Enums.Scope.Web: errorMsg += dataService.WebFeatureAction( message.FeatureDefinition, message.Location, Core.Models.Enums.FeatureAction.Activate, message.ElevatedPrivileges.Value, message.Force.Value, out af); break; case Core.Models.Enums.Scope.Site: errorMsg += dataService.SiteFeatureAction( message.FeatureDefinition, message.Location, Core.Models.Enums.FeatureAction.Activate, message.ElevatedPrivileges.Value, message.Force.Value, out af); break; case Core.Models.Enums.Scope.WebApplication: errorMsg += dataService.WebAppFeatureAction( message.FeatureDefinition, message.Location, Core.Models.Enums.FeatureAction.Activate, message.Force.Value, out af); break; case Core.Models.Enums.Scope.Farm: errorMsg += dataService.FarmFeatureAction( message.FeatureDefinition, message.Location, Core.Models.Enums.FeatureAction.Activate, message.Force.Value, out af); break; case Core.Models.Enums.Scope.ScopeInvalid: errorMsg += string.Format("Location '{0}' has invalid scope - not supported for feature activation.", message.Location.Id); af = null; break; default: errorMsg += string.Format("Location '{0}' has unidentified scope - not supported for feature activation.", message.Location.Id); af = null; break; } if (string.IsNullOrEmpty(errorMsg)) { var completed = new Core.Messages.Completed.FeatureActivationCompleted( message.TaskId, message.Location.UniqueId, af ); Sender.Tell(completed); } else { var cancelationMsg = new CancelMessage( message.TaskId, errorMsg, true ); Sender.Tell(cancelationMsg); } }