Skip to content

Commit

Permalink
Mark ServiceController.Execute() not used by External handlers as InP…
Browse files Browse the repository at this point in the history
…rocess
  • Loading branch information
mythz committed Aug 29, 2017
1 parent 408d63f commit dbb9e8f
Showing 1 changed file with 47 additions and 25 deletions.
72 changes: 47 additions & 25 deletions src/ServiceStack/Host/ServiceController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,9 @@ public object Execute(object requestDto)
return Execute(requestDto, new BasicRequest());
}

/// <summary>
/// External HTTP Request called from HTTP handlers
/// </summary>
public virtual object Execute(object requestDto, IRequest req)
{
req.Dto = requestDto;
Expand All @@ -535,20 +538,30 @@ public virtual object Execute(object requestDto, IRequest req)
return response;
}

// Only Used internally by TypedFilterTests
public object Execute(object requestDto, IRequest req, bool applyFilters)
{
if (applyFilters)
try
{
requestDto = appHost.ApplyRequestConverters(req, requestDto);
if (appHost.ApplyRequestFilters(req, req.Response, requestDto))
return null;
}
req.SetInProcessRequest();

if (applyFilters)
{
requestDto = appHost.ApplyRequestConverters(req, requestDto);
if (appHost.ApplyRequestFilters(req, req.Response, requestDto))
return null;
}

var response = Execute(requestDto, req);
var response = Execute(requestDto, req);

return applyFilters
? ApplyResponseFilters(response, req)
: response;
return applyFilters
? ApplyResponseFilters(response, req)
: response;
}
finally
{
req.ReleaseIfInProcessRequest();
}
}

[Obsolete("Use Execute(IRequest, applyFilters:true)")]
Expand All @@ -559,25 +572,34 @@ public object Execute(IRequest req)

public object Execute(IRequest req, bool applyFilters)
{
string contentType;
var restPath = RestHandler.FindMatchingRestPath(req.Verb, req.PathInfo, out contentType);
req.SetRoute(restPath as RestPath);
req.OperationName = restPath.RequestType.GetOperationName();
var requestDto = RestHandler.CreateRequest(req, restPath);
req.Dto = requestDto;

if (applyFilters)
try
{
requestDto = appHost.ApplyRequestConverters(req, requestDto);
if (appHost.ApplyRequestFilters(req, req.Response, requestDto))
return null;
}
req.SetInProcessRequest();

string contentType;
var restPath = RestHandler.FindMatchingRestPath(req.Verb, req.PathInfo, out contentType);
req.SetRoute(restPath as RestPath);
req.OperationName = restPath.RequestType.GetOperationName();
var requestDto = RestHandler.CreateRequest(req, restPath);
req.Dto = requestDto;

if (applyFilters)
{
requestDto = appHost.ApplyRequestConverters(req, requestDto);
if (appHost.ApplyRequestFilters(req, req.Response, requestDto))
return null;
}

var response = Execute(requestDto, req);
var response = Execute(requestDto, req);

return applyFilters
? ApplyResponseFilters(response, req)
: response;
return applyFilters
? ApplyResponseFilters(response, req)
: response;
}
finally
{
req.ReleaseIfInProcessRequest();
}
}

public Task<object> ExecuteAsync(object requestDto, IRequest req, bool applyFilters)
Expand Down

0 comments on commit dbb9e8f

Please sign in to comment.