/// <summary> /// Intercepts the specified invocation. /// </summary> /// <param name="invocation">The invocation.</param> public void Intercept(IInvocation invocation) { var result = invocation.Method.Invoke(_evaluator, invocation.Arguments); invocation.ReturnValue = result; if (invocation.Method == TargetEvaluate) { if (AuditPath.IsAuditEnabled) { AuditPath.AuditLog(_engineURI, _statementName, AuditEnum.EXPRESSION, "expression " + _expressionToString + " result " + result); } } else if (invocation.Method == TargetEvaluateCollEvents) { if (AuditPath.IsAuditEnabled) { var resultBeans = (ICollection <EventBean>)result; var @out = "null"; if (resultBeans != null) { if (resultBeans.IsEmpty()) { @out = "{}"; } else { var buf = new StringWriter(); var count = 0; foreach (EventBean theEvent in resultBeans) { buf.Write(" Event "); buf.Write(Convert.ToString(count++)); buf.Write(":"); EventBeanUtility.AppendEvent(buf, theEvent); } @out = buf.ToString(); } } AuditPath.AuditLog(_engineURI, _statementName, AuditEnum.EXPRESSION, "expression " + _expressionToString + " result " + @out); } } else if (invocation.Method == TargetEvaluateCollScalar) { if (AuditPath.IsAuditEnabled) { AuditPath.AuditLog(_engineURI, _statementName, AuditEnum.EXPRESSION, "expression " + _expressionToString + " result " + result); } } else if (invocation.Method == TargetEvaluateBean) { if (AuditPath.IsAuditEnabled) { var @out = "null"; if (result != null) { var buf = new StringWriter(); EventBeanUtility.AppendEvent(buf, (EventBean)result); @out = buf.ToString(); } AuditPath.AuditLog(_engineURI, _statementName, AuditEnum.EXPRESSION, "expression " + _expressionToString + " result " + @out); } } }