/// <summary> /// Creates the swallow exception hander. /// </summary> /// <param name="parsedAdviceExpression">The parsed advice expression.</param> /// <returns></returns> protected virtual IExceptionHandler CreateSwallowExceptionHander(ParsedAdviceExpression parsedAdviceExpression) { IExceptionHandler handler; handler = new SwallowExceptionHandler(parsedAdviceExpression.ExceptionNames); return(handler); }
private void AddExceptionNames(ParsedAdviceExpression parsedAdviceExpression, IExceptionHandler handler) { foreach (string exceptionName in parsedAdviceExpression.ExceptionNames) { handler.SourceExceptionNames.Add(exceptionName); } }
/// <summary> /// Parses the specified handler string, creating an instance of IExceptionHander. /// </summary> /// <param name="handlerString">The handler string.</param> /// <returns>an instance of an exception handler or null if was not able to correctly parse /// handler string.</returns> protected virtual IExceptionHandler Parse(string handlerString) { ParsedAdviceExpression parsedAdviceExpression = ParseAdviceExpression(handlerString); if (!parsedAdviceExpression.Success) { log.Warn("Could not parse exception hander statement " + handlerString); return(null); } return(CreateExceptionHandler(parsedAdviceExpression)); }
/// <summary> /// Creates the exception handler. /// </summary> /// <param name="parsedAdviceExpression">The parsed advice expression.</param> /// <returns>The exception handler instance</returns> protected virtual IExceptionHandler CreateExceptionHandler(ParsedAdviceExpression parsedAdviceExpression) { if (parsedAdviceExpression.ActionText.IndexOf("log") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.ContainsKey("log")) { handler = exceptionHandlerTable["log"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateLogExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return(handler); } else if (parsedAdviceExpression.ActionText.IndexOf("translate") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("translate")) { handler = exceptionHandlerTable["translate"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateTranslationExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return(handler); } else if (parsedAdviceExpression.ActionText.IndexOf("wrap") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("wrap")) { handler = exceptionHandlerTable["wrap"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateTranslationExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = ParseWrappedExceptionExpression("wrap", parsedAdviceExpression.AdviceExpression); return(handler); } else if (parsedAdviceExpression.ActionText.IndexOf("replace") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("replace")) { handler = exceptionHandlerTable["replace"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateTranslationExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = ParseWrappedExceptionExpression("replace", parsedAdviceExpression.AdviceExpression); return(handler); } else if (parsedAdviceExpression.ActionText.IndexOf("swallow") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("swallow")) { handler = exceptionHandlerTable["swallow"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateSwallowExceptionHander(parsedAdviceExpression); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; return(handler); } else if (parsedAdviceExpression.ActionText.IndexOf("return") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("return")) { handler = exceptionHandlerTable["return"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateReturnValueExceptionHandler(parsedAdviceExpression); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return(handler); } else if (parsedAdviceExpression.ActionText.IndexOf("execute") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("execute")) { handler = exceptionHandlerTable["execute"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateExecuteSpelExceptionHandler(parsedAdviceExpression); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return(handler); } else { log.Warn("Could not parse exception hander statement " + parsedAdviceExpression.AdviceExpression); } return(null); }
/// <summary> /// Creates the swallow exception hander. /// </summary> /// <param name="parsedAdviceExpression">The parsed advice expression.</param> /// <returns></returns> protected virtual IExceptionHandler CreateSwallowExceptionHander(ParsedAdviceExpression parsedAdviceExpression) { IExceptionHandler handler; handler = new SwallowExceptionHandler(parsedAdviceExpression.ExceptionNames); return handler; }
/// <summary> /// Creates the exception handler. /// </summary> /// <param name="parsedAdviceExpression">The parsed advice expression.</param> /// <returns>The exception handler instance</returns> protected virtual IExceptionHandler CreateExceptionHandler(ParsedAdviceExpression parsedAdviceExpression) { if (parsedAdviceExpression.ActionText.IndexOf("log") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.ContainsKey("log")) { handler = exceptionHandlerTable["log"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateLogExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return handler; } else if (parsedAdviceExpression.ActionText.IndexOf("translate") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("translate")) { handler = exceptionHandlerTable["translate"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateTranslationExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return handler; } else if (parsedAdviceExpression.ActionText.IndexOf("wrap") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("wrap")) { handler = exceptionHandlerTable["wrap"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateTranslationExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = ParseWrappedExceptionExpression("wrap", parsedAdviceExpression.AdviceExpression); return handler; } else if (parsedAdviceExpression.ActionText.IndexOf("replace") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("replace")) { handler = exceptionHandlerTable["replace"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateTranslationExceptionHandler(parsedAdviceExpression.ExceptionNames); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = ParseWrappedExceptionExpression("replace", parsedAdviceExpression.AdviceExpression); return handler; } else if (parsedAdviceExpression.ActionText.IndexOf("swallow") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("swallow")) { handler = exceptionHandlerTable["swallow"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateSwallowExceptionHander(parsedAdviceExpression); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; return handler; } else if (parsedAdviceExpression.ActionText.IndexOf("return") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("return")) { handler = exceptionHandlerTable["return"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateReturnValueExceptionHandler(parsedAdviceExpression); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return handler; } else if (parsedAdviceExpression.ActionText.IndexOf("execute") >= 0) { IExceptionHandler handler; if (exceptionHandlerTable.Contains("execute")) { handler = exceptionHandlerTable["execute"]; AddExceptionNames(parsedAdviceExpression, handler); } else { handler = CreateExecuteSpelExceptionHandler(parsedAdviceExpression); } handler.ConstraintExpressionText = parsedAdviceExpression.ConstraintExpression; handler.ActionExpressionText = parsedAdviceExpression.ActionExpressionText; return handler; } else { log.Warn("Could not parse exception hander statement " + parsedAdviceExpression.AdviceExpression); } return null; }