Configuration property to control the depth of referenced nodes (MGNLREST-361)

[MGNLREST-608] QA Created: 06/Jan/23  Updated: 11/Jan/23  Resolved: 11/Jan/23

Status: Completed
Project: Magnolia REST Framework
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Sub-task Priority: Neutral
Reporter: Oanh Thai Hoang Assignee: Javier Benito
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Template:
Date of First Response:
Sprint: DevX 28
Team: DeveloperX

 Comments   
Comment by Javier Benito [ 10/Jan/23 ]

DX Core 6.2 demo bundle downloaded from Nexus.

 

Using tourFinder as example, if we don't configure a resolver, we get:

"tourFinder": "d25e69d9-27d0-4477-824c-7cc0714c97ce", 

if we configure a resolver with only 1 as depthInReferencedNode:

references:
  - name: referenceToParentWithDefaultDepthInReferencedNode
    propertyName: tourFinder
    referenceResolver:
      class: info.magnolia.rest.reference.jcr.JcrReferenceResolverDefinition
      targetWorkspace: website
      depthInReferencedNode: 1 

we get, as part of the returned json:

      "tourFinder": {
        "@name": "tour-finder",
        "@path": "/travel/tour-finder",
        "@id": "d25e69d9-27d0-4477-824c-7cc0714c97ce",
        "@nodeType": "mgnl:page",
        "hideInNav": true,
        "title": "Tour Finder",
        "main": {
          "@name": "main",
          "@path": "/travel/tour-finder/main",
          "@id": "9cafcc1e-e561-4f15-83ba-6019c8107a86",
          "@nodeType": "mgnl:area",
          "@nodes": []
        },
        "footer": {
          "@name": "footer",
          "@path": "/travel/tour-finder/footer",
          "@id": "ce31ad28-22b2-4c94-9bff-515ee7883634",
          "@nodeType": "mgnl:area",
          "@nodes": []
        },
        "@nodes": [
          "main",
          "footer"
        ]
      }

so in this case, tourFinder is resolved to its node content, but only to one level (main and footer areas within the node are not resolved).

And changing it to 2, we get (again, as part of the returned json):

      "tourFinder": {
        "@name": "tour-finder",
        "@path": "/travel/tour-finder",
        "@id": "d25e69d9-27d0-4477-824c-7cc0714c97ce",
        "@nodeType": "mgnl:page",
        "hideInNav": true,
        "title": "Tour Finder",
        "main": {
          "@name": "main",
          "@path": "/travel/tour-finder/main",
          "@id": "9cafcc1e-e561-4f15-83ba-6019c8107a86",
          "@nodeType": "mgnl:area",
          "0": {
            "@name": "0",
            "@path": "/travel/tour-finder/main/0",
            "@id": "506bfd9a-ef9f-42bf-8650-f32a3b2fd841",
            "@nodeType": "mgnl:component",
            "@nodes": []
          },
          "@nodes": [
            "0"
          ]
        },
        "footer": {
          "@name": "footer",
          "@path": "/travel/tour-finder/footer",
          "@id": "ce31ad28-22b2-4c94-9bff-515ee7883634",
          "@nodeType": "mgnl:area",
          "footer1": {
            "@name": "footer1",
            "@path": "/travel/tour-finder/footer/footer1",
            "@id": "76c936d5-c305-4745-8e23-cfb694692bad",
            "@nodeType": "mgnl:area",
            "@nodes": []
          },
          "footer2": {
            "@name": "footer2",
            "@path": "/travel/tour-finder/footer/footer2",
            "@id": "a2d47f9d-eddf-493e-bf83-e7a64c7be2f0",
            "@nodeType": "mgnl:area",
            "@nodes": []
          },
.....
..... 

Where we can see that now, main and footer are resolved.

Generated at Mon Feb 12 07:01:29 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.