Castle.MonoRail.Framework.ControllerLifecycleExecutor.ProcessFilter C# (CSharp) Method

ProcessFilter() private method

private ProcessFilter ( ExecuteEnum when, FilterDescriptor desc ) : bool
when ExecuteEnum
desc FilterDescriptor
return bool
		private bool ProcessFilter(ExecuteEnum when, FilterDescriptor desc)
		{
			if (desc.FilterInstance == null)
			{
				desc.FilterInstance = filterFactory.Create(desc.FilterType);

				IFilterAttributeAware filterAttAware = desc.FilterInstance as IFilterAttributeAware;

				if (filterAttAware != null)
				{
					filterAttAware.Filter = desc.Attribute;
				}
			}

			try
			{
				if (logger.IsDebugEnabled)
				{
					logger.DebugFormat("Running filter {0}/{1}", when, desc.FilterType.FullName);
				}

				return desc.FilterInstance.Perform(when, context, controller);
			}
			catch(Exception ex)
			{
				if (logger.IsErrorEnabled)
				{
					logger.ErrorFormat("Error processing filter " + desc.FilterType.FullName, ex);
				}

				throw;
			}
		}