Example #1
0
        public static BrokenRuleToken Create(IEntityExtensions extension,
                                             params BrokenRule[] brokenRules)
        {
            var token = new BrokenRuleToken
            {
                BrokenRules = brokenRules,
                Extension   = extension
            };

            token.Add();
            return(token);
        }
Example #2
0
        protected bool InvokeWithExceptionFilter(Action action)
        {
            _brokenRuleToken.Cancel();

            try
            {
                action();
            }
            catch (Exception e)
            {
                if (ExceptionHelper.IsNonrecoverableException(e))
                {
                    throw;
                }

                if (_exceptionActions != null)
                {
                    foreach (var exceptionAction in _exceptionActions)
                    {
                        var brokenRules = exceptionAction.Process(e);
                        if (brokenRules == null)
                        {
                            continue;
                        }

                        _brokenRuleToken = BrokenRuleToken.Create(Extensions, brokenRules);

                        return(true); // Handled
                    }
                }

                throw;
            }

            return(false);
        }