You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Carsten Milkau (Jira)" <ji...@apache.org> on 2019/08/21 11:45:00 UTC

[jira] [Updated] (OLINGO-1384) AnnotationInMemoryDs: deep Create throws "Missing source field for related data"

     [ https://issues.apache.org/jira/browse/OLINGO-1384?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Milkau updated OLINGO-1384:
-----------------------------------
    Description: 
When a deep create on a source entity follows a navigation property but no corresponding navigation at the target entity is found, AnnotationInMemoryDs throws the error "Missing source field for related data". There are two possible reasons no target navigation is found:
 # It doesn't exist
 # The target entity is of the same type as the source entity ("self-reference")

*Steps to reproduce:*
 # Checkout cars-annotation-archetype
 # Remove property "Car" of entity type "Driver"
 # Run example service
 # Click "create example data"

*Expected results:*

Example data, including drivers, is created.

*Actual results:*

Car creation fails when it mentions a driver, no drivers are created nor cars that have a driver. Each create request logs "Missing source field for related data".

*Workaround:*
 # Always create a corresponding back-navigation property at the target entity of a navigation when using deep creates.
 # Don't use deep create when target entity type = source entity type.

*Additional information:*
 # A similar fix as this one is already present in readRelatedData()
 # Patch does not include a test (yet) for this special case. I would need some assistance regarding conventions and options.
 # Bug was introduced in [6f7b76f689e4a8c8889c59760715c80d4a4c17f2|https://github.com/apache/olingo-odata2/commit/6f7b76f689e4a8c8889c59760715c80d4a4c17f2] of issue OLINGO-508. IMHO that change broke more than it fixed (expect at least one more related bug), but see #1.

  was:
When a deep create on a source entity follows a navigation property but no corresponding navigation exists at the target entity is found, AnnotationInMemoryDs throws the error "Missing source field for related data". There are two possible reasons no target navigation is found:
 # It doesn't exist
 # The target entity is of the same type as the source entity ("self-reference")

*Steps to reproduce:*
 # Checkout cars-annotation-archetype
 # Remove property "Car" of entity type "Driver"
 # Run example service
 # Click "create example data"

*Expected results:*

Example data, including drivers, is created.

*Actual results:*

Car creation fails when it mentions a driver, no drivers are created nor cars that have a driver. Each create request logs "Missing source field for related data".

*Workaround:*
 # Always create a corresponding back-navigation property at the target entity of a navigation when using deep creates.
 # Don't use deep create when target entity type = source entity type.

*Additional information:*
 # A similar fix as this one is already present in readRelatedData()
 # Patch does not include a test (yet) for this special case. I would need some assistance regarding conventions and options.
 # Bug was introduced in [6f7b76f689e4a8c8889c59760715c80d4a4c17f2|https://github.com/apache/olingo-odata2/commit/6f7b76f689e4a8c8889c59760715c80d4a4c17f2] of issue OLINGO-508. IMHO that change broke more than it fixed (expect at least one more related bug), but see #1.


> AnnotationInMemoryDs: deep Create throws "Missing source field for related data"
> --------------------------------------------------------------------------------
>
>                 Key: OLINGO-1384
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1384
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata2-annotation
>    Affects Versions: V2 2.0.2, V2 2.0.3, V2 2.0.4, V2 2.0.5, V2 2.0.6, V2 2.0.7, V2 2.0.8, V2 2.0.9, V2 2.0.10, V2 2.0.11
>            Reporter: Carsten Milkau
>            Priority: Minor
>              Labels: newbie, patch
>             Fix For: V2 2.0.12
>
>         Attachments: odata2-annotation-processor-deep-create-unidir.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> When a deep create on a source entity follows a navigation property but no corresponding navigation at the target entity is found, AnnotationInMemoryDs throws the error "Missing source field for related data". There are two possible reasons no target navigation is found:
>  # It doesn't exist
>  # The target entity is of the same type as the source entity ("self-reference")
> *Steps to reproduce:*
>  # Checkout cars-annotation-archetype
>  # Remove property "Car" of entity type "Driver"
>  # Run example service
>  # Click "create example data"
> *Expected results:*
> Example data, including drivers, is created.
> *Actual results:*
> Car creation fails when it mentions a driver, no drivers are created nor cars that have a driver. Each create request logs "Missing source field for related data".
> *Workaround:*
>  # Always create a corresponding back-navigation property at the target entity of a navigation when using deep creates.
>  # Don't use deep create when target entity type = source entity type.
> *Additional information:*
>  # A similar fix as this one is already present in readRelatedData()
>  # Patch does not include a test (yet) for this special case. I would need some assistance regarding conventions and options.
>  # Bug was introduced in [6f7b76f689e4a8c8889c59760715c80d4a4c17f2|https://github.com/apache/olingo-odata2/commit/6f7b76f689e4a8c8889c59760715c80d4a4c17f2] of issue OLINGO-508. IMHO that change broke more than it fixed (expect at least one more related bug), but see #1.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)