public CommandHandlingSettings( [NotNull] ICommandHandlerResolver handlerResolver, [NotNull] ResolveCommandType resolveCommandType) { Ensure.That(handlerResolver, "handlerResolver").IsNotNull(); Ensure.That(resolveCommandType, "ResolveCommandType").IsNotNull(); _handlerResolver = handlerResolver; _resolveCommandType = resolveCommandType; _deserializeCommand = CatchDeserializationExceptions( (commandReader, type) => { var body = commandReader.ReadToEnd(); // Will cause LOH problems if command json > 85KB return(SimpleJson.DeserializeObject(body, type, CommandClient.JsonSerializerStrategy)); }); }
public CommandHandlingSettings( [NotNull] ICommandHandlerResolver handlerResolver, [NotNull] ResolveCommandType resolveCommandType) { Ensure.That(handlerResolver, "handlerResolver").IsNotNull(); Ensure.That(resolveCommandType, "ResolveCommandType").IsNotNull(); _handlerResolver = handlerResolver; _resolveCommandType = resolveCommandType; _deserializeCommand = CatchDeserializationExceptions( (commandReader, type) => { var body = commandReader.ReadToEnd(); // Will cause LOH problems if command json > 85KB return SimpleJson.DeserializeObject(body, type, CommandClient.JsonSerializerStrategy); }); }
private static DeserializeCommand CatchDeserializationExceptions(DeserializeCommand deserializeCommand) { return((commandReader, type) => { try { return deserializeCommand(commandReader, type); } catch (Exception ex) { if (ex is IHttpProblemDetailException) { throw; } throw new HttpProblemDetailsException <HttpProblemDetails>(new HttpProblemDetails { Title = "Error occured deserializing command.", Status = 400, Detail = ex.Message }); } }); }
private static DeserializeCommand CatchDeserializationExceptions(DeserializeCommand deserializeCommand) { return (commandReader, type) => { try { return deserializeCommand(commandReader, type); } catch(Exception ex) { if(ex is IHttpProblemDetailException) { throw; } throw new HttpProblemDetailsException<HttpProblemDetails>(new HttpProblemDetails { Title = "Error occured deserializing command.", Status = 400, Detail = ex.Message }); } }; }