Skip to content

Commit

Permalink
Add ResponsiveExceptionAllAttribute.
Browse files Browse the repository at this point in the history
  • Loading branch information
veblush committed Jun 17, 2016
1 parent 71f2ac7 commit 70ca9eb
Showing 1 changed file with 31 additions and 22 deletions.
53 changes: 31 additions & 22 deletions core/Akka.Interfaced/ResponsiveExceptionFilter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,33 @@

namespace Akka.Interfaced
{
public class ResponsiveExceptionFilter : IPostRequestFilter
{
private int _filterOrder;
private Func<Exception, bool> _filter;

int IFilter.Order => _filterOrder;

public ResponsiveExceptionFilter(int filterOrder, Func<Exception, bool> filter)
{
_filterOrder = filterOrder;
_filter = filter;
}

void IPostRequestFilter.OnPostRequest(PostRequestFilterContext context)
{
if (context.Exception != null && _filter(context.Exception))
{
context.Response = new ResponseMessage
{
RequestId = context.Request.RequestId,
Exception = context.Exception
};
context.Exception = null;
}
}
}

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class ResponsiveExceptionAttribute : Attribute, IFilterPerClassFactory
{
Expand Down Expand Up @@ -41,30 +68,12 @@ IFilter IFilterPerClassFactory.CreateInstance()
}
}

public class ResponsiveExceptionFilter : IPostRequestFilter
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class ResponsiveExceptionAllAttribute : ResponsiveExceptionAttribute
{
private int _filterOrder;
private Func<Exception, bool> _filter;

int IFilter.Order => _filterOrder;

public ResponsiveExceptionFilter(int filterOrder, Func<Exception, bool> filter)
public ResponsiveExceptionAllAttribute(int filterOrder = FilterDefaultOrder)
: base(filterOrder, filter: _ => true)
{
_filterOrder = filterOrder;
_filter = filter;
}

void IPostRequestFilter.OnPostRequest(PostRequestFilterContext context)
{
if (context.Exception != null && _filter(context.Exception))
{
context.Response = new ResponseMessage
{
RequestId = context.Request.RequestId,
Exception = context.Exception
};
context.Exception = null;
}
}
}
}

0 comments on commit 70ca9eb

Please sign in to comment.