[JsonPatch]Rename SimpleObjectAdapter; Include statuscode in JsonPatchException
This commit is contained in:
parent
2d304e5da1
commit
0462dd6be3
|
|
@ -12,11 +12,11 @@ using Newtonsoft.Json.Serialization;
|
|||
|
||||
namespace Microsoft.AspNet.JsonPatch.Adapters
|
||||
{
|
||||
public class SimpleObjectAdapter<T> : IObjectAdapter<T> where T : class
|
||||
public class ObjectAdapter<T> : IObjectAdapter<T> where T : class
|
||||
{
|
||||
public IContractResolver ContractResolver { get; set; }
|
||||
|
||||
public SimpleObjectAdapter(IContractResolver contractResolver)
|
||||
public ObjectAdapter(IContractResolver contractResolver)
|
||||
{
|
||||
ContractResolver = contractResolver;
|
||||
}
|
||||
|
|
@ -160,7 +160,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
throw new JsonPatchException<T>(operationToReport,
|
||||
string.Format("Patch failed: provided path is invalid for array property type at " +
|
||||
"location path: {0}: position larger than array size",
|
||||
path),
|
||||
path, 422),
|
||||
objectToApplyTo);
|
||||
}
|
||||
}
|
||||
|
|
@ -171,7 +171,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided path is invalid for array property type at location " +
|
||||
"path: {0}: expected array",
|
||||
path),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -251,7 +251,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided from path is invalid for array property type at " +
|
||||
"location from: {0}: invalid position",
|
||||
operation.from),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
|
||||
valueAtFromLocation = array[positionAsInteger];
|
||||
|
|
@ -262,7 +262,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided from path is invalid for array property type at " +
|
||||
"location from: {0}: expected array",
|
||||
operation.from),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -360,7 +360,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided path is invalid for array property type at " +
|
||||
"location path: {0}: position larger than array size",
|
||||
path),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -370,7 +370,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided path is invalid for array property type at " +
|
||||
"location path: {0}: expected array",
|
||||
path),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -481,7 +481,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided from path is invalid for array property type at " +
|
||||
"location path: {0}: invalid position",
|
||||
operation.path),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
|
||||
valueAtPathLocation = array[positionInPathAsInteger];
|
||||
|
|
@ -492,7 +492,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided from path is invalid for array property type at " +
|
||||
"location path: {0}: expected array",
|
||||
operation.path),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -600,7 +600,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided from path is invalid for array property type at " +
|
||||
"location from: {0}: invalid position",
|
||||
operation.from),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
|
||||
valueAtFromLocation = array[positionAsInteger];
|
||||
|
|
@ -611,7 +611,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
string.Format("Patch failed: provided from path is invalid for array property type at " +
|
||||
"location from: {0}: expected array",
|
||||
operation.from),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -636,14 +636,14 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
throw new JsonPatchException<T>(
|
||||
operation,
|
||||
string.Format("Patch failed: property at location {0} does not exist", propertyPath),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
if (patchProperty.Property.Ignored)
|
||||
{
|
||||
throw new JsonPatchException<T>(
|
||||
operation,
|
||||
string.Format("Patch failed: cannot update property at location {0}", propertyPath),
|
||||
objectToApplyTo);
|
||||
objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -663,7 +663,7 @@ namespace Microsoft.AspNet.JsonPatch.Adapters
|
|||
var errorMessage = "Patch failed: provided value is invalid for property type at location path: ";
|
||||
if (!result.CanBeConverted)
|
||||
{
|
||||
throw new JsonPatchException<T>(operation, string.Format(errorMessage + "{0}", path), objectToApplyTo);
|
||||
throw new JsonPatchException<T>(operation, string.Format(errorMessage + "{0}", path), objectToApplyTo, 422);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ namespace Microsoft.AspNet.JsonPatch.Converters
|
|||
{
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
|
||||
|
|
@ -60,7 +60,7 @@ namespace Microsoft.AspNet.JsonPatch.Converters
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new JsonPatchException("The JsonPatchDocument was malformed and could not be parsed.", ex);
|
||||
throw new JsonPatchException("The JsonPatchDocument was malformed and could not be parsed.", ex, 400);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Microsoft.AspNet.JsonPatch.Operations;
|
||||
|
||||
namespace Microsoft.AspNet.JsonPatch.Exceptions
|
||||
{
|
||||
public class JsonPatchException : Exception
|
||||
public class JsonPatchException<T> : JsonPatchException where T : class
|
||||
{
|
||||
public new Exception InnerException { get; internal set; }
|
||||
|
||||
public object AffectedObject { get; private set; }
|
||||
public Operation<T> FailedOperation { get; private set; }
|
||||
public new T AffectedObject { get; private set; }
|
||||
|
||||
private string _message = "";
|
||||
public override string Message
|
||||
|
|
@ -18,6 +18,7 @@ namespace Microsoft.AspNet.JsonPatch.Exceptions
|
|||
{
|
||||
return _message;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public JsonPatchException()
|
||||
|
|
@ -25,9 +26,23 @@ namespace Microsoft.AspNet.JsonPatch.Exceptions
|
|||
|
||||
}
|
||||
|
||||
public JsonPatchException(string message, Exception innerException)
|
||||
public JsonPatchException(Operation<T> operation, string message, T affectedObject)
|
||||
{
|
||||
FailedOperation = operation;
|
||||
_message = message;
|
||||
AffectedObject = affectedObject;
|
||||
}
|
||||
|
||||
public JsonPatchException(Operation<T> operation, string message, T affectedObject, int statusCode)
|
||||
: this(operation, message, affectedObject)
|
||||
{
|
||||
StatusCode = statusCode;
|
||||
}
|
||||
|
||||
public JsonPatchException(Operation<T> operation, string message, T affectedObject,
|
||||
int statusCode, Exception innerException)
|
||||
: this(operation, message, affectedObject, statusCode)
|
||||
{
|
||||
InnerException = innerException;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
|
||||
namespace Microsoft.AspNet.JsonPatch.Exceptions
|
||||
{
|
||||
public class JsonPatchException : Exception
|
||||
{
|
||||
public new Exception InnerException { get; internal set; }
|
||||
|
||||
public int StatusCode { get; internal set; }
|
||||
|
||||
public object AffectedObject { get; private set; }
|
||||
|
||||
private string _message = "";
|
||||
public override string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
return _message;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public JsonPatchException()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public JsonPatchException(string message, Exception innerException)
|
||||
{
|
||||
_message = message;
|
||||
InnerException = innerException;
|
||||
}
|
||||
|
||||
|
||||
public JsonPatchException(string message, Exception innerException, int statusCode)
|
||||
: this(message, innerException)
|
||||
{
|
||||
StatusCode = statusCode;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Microsoft.AspNet.JsonPatch.Operations;
|
||||
|
||||
namespace Microsoft.AspNet.JsonPatch.Exceptions
|
||||
{
|
||||
public class JsonPatchException<T> : JsonPatchException where T : class
|
||||
{
|
||||
public Operation<T> FailedOperation { get; private set; }
|
||||
public new T AffectedObject { get; private set; }
|
||||
|
||||
private string _message = "";
|
||||
public override string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
return _message;
|
||||
}
|
||||
}
|
||||
|
||||
public JsonPatchException()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public JsonPatchException(Operation<T> operation, string message, T affectedObject)
|
||||
{
|
||||
FailedOperation = operation;
|
||||
_message = message;
|
||||
AffectedObject = affectedObject;
|
||||
}
|
||||
|
||||
public JsonPatchException(Operation<T> operation, string message, T affectedObject, Exception innerException)
|
||||
: this(operation, message, affectedObject)
|
||||
{
|
||||
InnerException = innerException;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -354,7 +354,7 @@ namespace Microsoft.AspNet.JsonPatch
|
|||
|
||||
public void ApplyTo(T objectToApplyTo)
|
||||
{
|
||||
ApplyTo(objectToApplyTo, new SimpleObjectAdapter<T>(ContractResolver));
|
||||
ApplyTo(objectToApplyTo, new ObjectAdapter<T>(ContractResolver));
|
||||
}
|
||||
|
||||
public void ApplyTo(T objectToApplyTo, IObjectAdapter<T> adapter)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using Xunit;
|
|||
|
||||
namespace Microsoft.AspNet.JsonPatch.Test
|
||||
{
|
||||
public class SimpleObjectAdapterTests
|
||||
public class ObjectAdapterTests
|
||||
{
|
||||
[Fact]
|
||||
public void AddResultsShouldReplace()
|
||||
Loading…
Reference in New Issue