Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }