Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR for 7.6 Beta by making Patchhandler and related classes internal #2606

Open
wants to merge 38 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0bce83d
Bulk operations8 (#2502)
Sreejithpin Jun 3, 2021
7c3f404
Feature/new add support for odata bind (#2506)
ElizabethOkerio Jun 11, 2021
cebba7f
updates
Sreejithpin Jul 8, 2021
f9acd98
small update
Sreejithpin Jul 9, 2021
627276d
Code review comments
Sreejithpin Jul 27, 2021
6789fb9
update for odataid _temp
Sreejithpin Aug 24, 2021
9286d98
updates
Sreejithpin Aug 26, 2021
0f85f26
updates to use only factory
Sreejithpin Aug 27, 2021
82823d0
updates
Sreejithpin Aug 30, 2021
20ce568
Bulk operations8 (#2502)
Sreejithpin Jun 3, 2021
f18e40f
Feature/new add support for odata bind (#2506)
ElizabethOkerio Jun 11, 2021
5d2926a
updates
Sreejithpin Jul 8, 2021
8fe74af
Code review comments
Sreejithpin Jul 27, 2021
7670ab7
update for odataid _temp
Sreejithpin Aug 24, 2021
cf028e4
updates
Sreejithpin Aug 26, 2021
76aec31
updates to use only factory
Sreejithpin Aug 27, 2021
5d20b2d
updates
Sreejithpin Aug 30, 2021
c42f50f
Squashing Commits
Sreejithpin Aug 30, 2021
0a202ce
Merged updates
Sreejithpin Oct 29, 2021
763e474
Update Microsoft.AspNetCore.OData.PublicApi.bsl
Sreejithpin Oct 29, 2021
8b92a31
Update DeltaTests.cs
Sreejithpin Oct 29, 2021
847c235
test update
Sreejithpin Oct 29, 2021
80d27dd
test update
Sreejithpin Oct 29, 2021
4778fd0
test update
Sreejithpin Oct 29, 2021
524b2c6
test update
Sreejithpin Oct 29, 2021
f0dbf65
Update DeltaTests.cs
Sreejithpin Oct 29, 2021
8b96a5b
Updates for 7.6 release
Sreejithpin Dec 2, 2021
c15e90a
Update WebStack.versions.settings.targets
Sreejithpin Dec 2, 2021
59138c2
updates
Sreejithpin Dec 4, 2021
9fd1ffa
Update app.config
Sreejithpin Dec 4, 2021
502f20c
Updates
Sreejithpin Dec 20, 2021
7d5acdc
Draft PR to experiment with refactoring
mikepizzo Jan 11, 2022
3c790d0
Improve logic for setting id on resourceWrapper using path and key va…
mikepizzo Jan 21, 2022
2d4ac72
Update ODataResourceDeserializer.cs
Sreejithpin Feb 1, 2022
044fa48
New PR for Serializers for Bulk Operation with Updated ContextPath (#…
Sreejithpin Feb 1, 2022
ca4750b
Updates
Sreejithpin Feb 8, 2022
3792f0c
updates for casttype
Sreejithpin Feb 17, 2022
14e5111
updates
Sreejithpin Mar 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update for odataid _temp
  • Loading branch information
Sreejithpin committed Oct 28, 2021
commit 7670ab7e338a5ad605e95a5cfc65ada5e4bf2920
153 changes: 0 additions & 153 deletions src/Microsoft.AspNet.OData.Shared/DefaultPatchHandler.cs

This file was deleted.

56 changes: 28 additions & 28 deletions src/Microsoft.AspNet.OData.Shared/EdmChangedObjectCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -398,25 +398,25 @@ private static void ValidateForDeletedEntityId(IEdmStructuralProperty[] keys, Ed
/// <returns>ChangedObjectCollection response</returns>
internal EdmChangedObjectCollection Patch(ICollection<IEdmStructuredObject> originalCollection)
{
EdmPatchMethodHandler patchHandler = new DefaultEdmPatchMethodHandler(originalCollection, _entityType);
EdmODataAPIHandler apiHandler = new DefaultEdmODataAPIHandler(originalCollection, _entityType);

return CopyChangedValues(patchHandler);
return CopyChangedValues(apiHandler);
}

/// <summary>
/// Patch for EdmChangedObjectCollection, a collection for IEdmChangedObject
/// </summary>
/// <returns>ChangedObjectCollection response</returns>
public EdmChangedObjectCollection Patch(EdmPatchMethodHandler patchHandler)
public EdmChangedObjectCollection Patch(EdmODataAPIHandler apiHandler)
{
return CopyChangedValues(patchHandler);
return CopyChangedValues(apiHandler);
}


[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling")]
internal EdmChangedObjectCollection CopyChangedValues(EdmPatchMethodHandler patchHandler)
internal EdmChangedObjectCollection CopyChangedValues(EdmODataAPIHandler apiHandler)
{
EdmChangedObjectCollection changedObjectCollection = new EdmChangedObjectCollection(_entityType);
IEdmStructuralProperty[] keys = _entityType.Key().ToArray();
Expand All @@ -438,13 +438,13 @@ internal EdmChangedObjectCollection CopyChangedValues(EdmPatchMethodHandler patc
{
operation = DataModificationOperationKind.Delete;

if (patchHandler.TryDelete(keyValues, out errorMessage) != PatchStatus.Success)
if (apiHandler.TryDelete(keyValues, out errorMessage) != ODataAPIResponseStatus.Success)
{
//Handle Failed Operation - Delete
PatchStatus patchStatus = patchHandler.TryGet(keyValues, out original, out getErrorMessage);
if (patchStatus == PatchStatus.Success)
ODataAPIResponseStatus ODataAPIResponseStatus = apiHandler.TryGet(keyValues, out original, out getErrorMessage);
if (ODataAPIResponseStatus == ODataAPIResponseStatus.Success)
{
IEdmChangedObject changedObject = HandleFailedOperation(deletedObj, operation, original, keys, errorMessage, patchHandler);
IEdmChangedObject changedObject = HandleFailedOperation(deletedObj, operation, original, keys, errorMessage, apiHandler);
changedObjectCollection.Add(changedObject);
continue;
}
Expand All @@ -456,42 +456,42 @@ internal EdmChangedObjectCollection CopyChangedValues(EdmPatchMethodHandler patc
{
EdmEntityObject deltaEntityObject = changedObj as EdmEntityObject;

PatchStatus patchStatus = patchHandler.TryGet(keyValues, out original, out getErrorMessage);
ODataAPIResponseStatus ODataAPIResponseStatus = apiHandler.TryGet(keyValues, out original, out getErrorMessage);

if (patchStatus == PatchStatus.NotFound)
if (ODataAPIResponseStatus == ODataAPIResponseStatus.NotFound)
{
operation = DataModificationOperationKind.Insert;

if (patchHandler.TryCreate(changedObj, out original, out errorMessage) != PatchStatus.Success)
if (apiHandler.TryCreate(changedObj, out original, out errorMessage) != ODataAPIResponseStatus.Success)
{
//Handle failed Opreataion - create
IEdmChangedObject changedObject = HandleFailedOperation(deltaEntityObject, operation, original, keys, errorMessage, patchHandler);
IEdmChangedObject changedObject = HandleFailedOperation(deltaEntityObject, operation, original, keys, errorMessage, apiHandler);
changedObjectCollection.Add(changedObject);
continue;
}
}
else if (patchStatus == PatchStatus.Success)
else if (ODataAPIResponseStatus == ODataAPIResponseStatus.Success)
{
operation = DataModificationOperationKind.Update;
}
else
{
//Handle failed operation
IEdmChangedObject changedObject = HandleFailedOperation(deltaEntityObject, operation, null, keys, getErrorMessage, patchHandler);
IEdmChangedObject changedObject = HandleFailedOperation(deltaEntityObject, operation, null, keys, getErrorMessage, apiHandler);
changedObjectCollection.Add(changedObject);
continue;
}

//Patch for addition/update.
PatchItem(deltaEntityObject, original as EdmStructuredObject, patchHandler);
PatchItem(deltaEntityObject, original as EdmStructuredObject, apiHandler);

changedObjectCollection.Add(changedObj);
}
}
catch (Exception ex)
{
//Handle Failed Operation
IEdmChangedObject changedObject = HandleFailedOperation(changedObj as EdmEntityObject, operation, originalObj, keys, ex.Message, patchHandler);
IEdmChangedObject changedObject = HandleFailedOperation(changedObj as EdmEntityObject, operation, originalObj, keys, ex.Message, apiHandler);

Contract.Assert(changedObject != null);
changedObjectCollection.Add(changedObject);
Expand Down Expand Up @@ -519,31 +519,31 @@ private static IDictionary<string, object> GetKeyValues(IEdmStructuralProperty [
return keyValues;
}

private void PatchItem(EdmStructuredObject changedObj, EdmStructuredObject originalObj, EdmPatchMethodHandler patchHandler)
private void PatchItem(EdmStructuredObject changedObj, EdmStructuredObject originalObj, EdmODataAPIHandler apiHandler)
{
foreach (string propertyName in changedObj.GetChangedPropertyNames())
{
ApplyProperties(changedObj, originalObj, propertyName, patchHandler);
ApplyProperties(changedObj, originalObj, propertyName, apiHandler);
}

foreach (string propertyName in changedObj.GetUnchangedPropertyNames())
{
ApplyProperties(changedObj, originalObj, propertyName, patchHandler);
ApplyProperties(changedObj, originalObj, propertyName, apiHandler);
}
}

private void ApplyProperties(EdmStructuredObject changedObj, EdmStructuredObject originalObj, string propertyName, EdmPatchMethodHandler patchHandler)
private void ApplyProperties(EdmStructuredObject changedObj, EdmStructuredObject originalObj, string propertyName, EdmODataAPIHandler apiHandler)
{
object value;
if (changedObj.TryGetPropertyValue(propertyName, out value))
{
EdmChangedObjectCollection changedColl = value as EdmChangedObjectCollection;
if (changedColl != null)
{
EdmPatchMethodHandler patchHandlerNested = patchHandler.GetNestedPatchHandler(originalObj, propertyName);
if (patchHandlerNested != null)
EdmODataAPIHandler apiHandlerNested = apiHandler.GetNestedHandler(originalObj, propertyName);
if (apiHandlerNested != null)
{
changedColl.Patch(patchHandlerNested);
changedColl.Patch(apiHandlerNested);
}
else
{
Expand Down Expand Up @@ -581,7 +581,7 @@ private void ApplyProperties(EdmStructuredObject changedObj, EdmStructuredObject
originalObj.TrySetPropertyValue(propertyName, origStructuredObj);
}

PatchItem(structuredObj, origStructuredObj, patchHandler);
PatchItem(structuredObj, origStructuredObj, apiHandler);
}
else
{
Expand All @@ -592,7 +592,7 @@ private void ApplyProperties(EdmStructuredObject changedObj, EdmStructuredObject
}

private IEdmChangedObject HandleFailedOperation(EdmEntityObject changedObj, DataModificationOperationKind operation, IEdmStructuredObject originalObj,
IEdmStructuralProperty[] keys, string errorMessage, EdmPatchMethodHandler patchHandler)
IEdmStructuralProperty[] keys, string errorMessage, EdmODataAPIHandler apiHandler)
{
IEdmChangedObject edmChangedObject = null;
DataModificationExceptionType dataModificationExceptionType = new DataModificationExceptionType(operation);
Expand All @@ -608,7 +608,7 @@ private IEdmChangedObject HandleFailedOperation(EdmEntityObject changedObj, Data
case DataModificationOperationKind.Insert:
{
EdmDeltaDeletedEntityObject edmDeletedObject = new EdmDeltaDeletedEntityObject(EntityType);
PatchItem(edmDeletedObject, changedObj, patchHandler);
PatchItem(edmDeletedObject, changedObj, apiHandler);

ValidateForDeletedEntityId(keys, edmDeletedObject);

Expand All @@ -622,7 +622,7 @@ private IEdmChangedObject HandleFailedOperation(EdmEntityObject changedObj, Data
case DataModificationOperationKind.Delete:
{
EdmDeltaEntityObject edmEntityObject = new EdmDeltaEntityObject(EntityType);
PatchItem(originalObj as EdmStructuredObject, edmEntityObject, patchHandler);
PatchItem(originalObj as EdmStructuredObject, edmEntityObject, apiHandler);

edmEntityObject.TransientInstanceAnnotationContainer = changedObj.TransientInstanceAnnotationContainer;
edmEntityObject.PersistentInstanceAnnotationsContainer = changedObj.PersistentInstanceAnnotationsContainer;
Expand Down
Loading