[MGNLRESTUI-81] Error when processing JSONPath expression that returns String Created: 07/Jun/23  Updated: 13/Jun/23  Resolved: 13/Jun/23

Status: Closed
Project: Magnolia REST Client UI
Component/s: None
Affects Version/s: 1.0.5
Fix Version/s: 2.0.0, 1.0.6

Type: Bug Priority: Neutral
Reporter: Jonathan Ayala Assignee: Javier Benito
Resolution: Fixed Votes: 0
Labels: quickwin
Σ Remaining Estimate: Not Specified Remaining Estimate: Not Specified
Σ Time Spent: 0.25d Time Spent: Not Specified
Σ Original Estimate: Not Specified Original Estimate: Not Specified

Issue Links:
causality
Sub-Tasks:
Key
Summary
Type
Status
Assignee
MGNLRESTUI-82 Implement fix Technical task Completed Javier Benito  
MGNLRESTUI-83 Review Technical task Completed Dai Ha  
MGNLRESTUI-84 Pre-Integration QA Technical task Completed Dai Ha  
MGNLRESTUI-85 QA Technical task Closed Oanh Thai Hoang  
Template:
Acceptance criteria:
Empty
Task DoD:
[X]* Doc/release notes changes? Comment present?
[X]* Downstream builds green?
[X]* Solution information and context easily available?
[X]* Tests
[X]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[X]* Steps to reproduce, expected, and actual results filled
[X]* Affected version filled
Epic Link: DevX Bucket
Sprint: DevX 39
Story Points: 2
Team: DeveloperX
Work Started:
Approved:
Yes

 Description   

Steps to reproduce

  1.  Configure a combobox field with a json datasource that uses a JSONPath expression returning a String such as the following itemID:
        address:
          label: address
          $type: jsonComboBoxField
          datasource:
            name: rest
            $type: jsonDatasource
            restClient: myRestClient
            restCall: localisation
            jsonPathExpressions:
              itemId: '$.concat($.address.street, $.address.zipcode)'
              items: '$.*'
              describeBy: '$.address.street'
    

Rest client for testing:

baseUrl: https://jsonplaceholder.typicode.com
restCalls:
  localisation:
    method: get
    entityClass: com.fasterxml.jackson.databind.JsonNode
    path: /users

JSON returned by the REST service:

{
  "id" : 1,
  "name" : "Leanne Graham",
  "username" : "Bret",
  "email" : "Sincere@april.biz",
  "address" : {
    "street" : "Kulas Light",
    "suite" : "Apt. 556",
    "city" : "Gwenborough",
    "zipcode" : "92998-3874",
    "geo" : {
      "lat" : "-37.3159",
      "lng" : "81.1496"
    }
  },
  "phone" : "1-770-736-8031 x56442",
  "website" : "hildegard.org",
  "company" : {
    "name" : "Romaguera-Crona",
    "catchPhrase" : "Multi-layered client-server neural-net",
    "bs" : "harness real-time e-markets"
  }
}, {
  "id" : 2,
  "name" : "Ervin Howell",
  "username" : "Antonette",
  "email" : "Shanna@melissa.tv",
  "address" : {
    "street" : "Victor Plains",
    "suite" : "Suite 879",
    "city" : "Wisokyburgh",
    "zipcode" : "90566-7771",
    "geo" : {
      "lat" : "-43.9509",
      "lng" : "-34.4618"
    }
  },
  "phone" : "010-692-6593 x09125",
  "website" : "anastasia.net",
  "company" : {
    "name" : "Deckow-Crist",
    "catchPhrase" : "Proactive didactic contingency",
    "bs" : "synergize scalable supply-chains"
  }
}, {
  "id" : 3,
  "name" : "Clementine Bauch",
  "username" : "Samantha",
  "email" : "Nathan@yesenia.net",
  "address" : {
    "street" : "Douglas Extension",
    "suite" : "Suite 847",
    "city" : "McKenziehaven",
    "zipcode" : "59590-4157",
    "geo" : {
      "lat" : "-68.6102",
      "lng" : "-47.0653"
    }
  },
  "phone" : "1-463-123-4447",
  "website" : "ramiro.info",
  "company" : {
    "name" : "Romaguera-Jacobson",
    "catchPhrase" : "Face to face bifurcated interface",
    "bs" : "e-enable strategic applications"
  }
}, {
  "id" : 4,
  "name" : "Patricia Lebsack",
  "username" : "Karianne",
  "email" : "Julianne.OConner@kory.org",
  "address" : {
    "street" : "Hoeger Mall",
    "suite" : "Apt. 692",
    "city" : "South Elvis",
    "zipcode" : "53919-4257",
    "geo" : {
      "lat" : "29.4572",
      "lng" : "-164.2990"
    }
  },
  "phone" : "493-170-9623 x156",
  "website" : "kale.biz",
  "company" : {
    "name" : "Robel-Corkery",
    "catchPhrase" : "Multi-tiered zero tolerance productivity",
    "bs" : "transition cutting-edge web services"
  }
}, {
  "id" : 5,
  "name" : "Chelsey Dietrich",
  "username" : "Kamren",
  "email" : "Lucio_Hettinger@annie.ca",
  "address" : {
    "street" : "Skiles Walks",
    "suite" : "Suite 351",
    "city" : "Roscoeview",
    "zipcode" : "33263",
    "geo" : {
      "lat" : "-31.8129",
      "lng" : "62.5342"
    }
  },
  "phone" : "(254)954-1289",
  "website" : "demarco.info",
  "company" : {
    "name" : "Keebler LLC",
    "catchPhrase" : "User-centric fault-tolerant solution",
    "bs" : "revolutionize end-to-end systems"
  }
}, {
  "id" : 6,
  "name" : "Mrs. Dennis Schulist",
  "username" : "Leopoldo_Corkery",
  "email" : "Karley_Dach@jasper.info",
  "address" : {
    "street" : "Norberto Crossing",
    "suite" : "Apt. 950",
    "city" : "South Christy",
    "zipcode" : "23505-1337",
    "geo" : {
      "lat" : "-71.4197",
      "lng" : "71.7478"
    }
  },
  "phone" : "1-477-935-8478 x6430",
  "website" : "ola.org",
  "company" : {
    "name" : "Considine-Lockman",
    "catchPhrase" : "Synchronised bottom-line interface",
    "bs" : "e-enable innovative applications"
  }
}, {
  "id" : 7,
  "name" : "Kurtis Weissnat",
  "username" : "Elwyn.Skiles",
  "email" : "Telly.Hoeger@billy.biz",
  "address" : {
    "street" : "Rex Trail",
    "suite" : "Suite 280",
    "city" : "Howemouth",
    "zipcode" : "58804-1099",
    "geo" : {
      "lat" : "24.8918",
      "lng" : "21.8984"
    }
  },
  "phone" : "210.067.6132",
  "website" : "elvis.io",
  "company" : {
    "name" : "Johns Group",
    "catchPhrase" : "Configurable multimedia task-force",
    "bs" : "generate enterprise e-tailers"
  }
}, {
  "id" : 8,
  "name" : "Nicholas Runolfsdottir V",
  "username" : "Maxime_Nienow",
  "email" : "Sherwood@rosamond.me",
  "address" : {
    "street" : "Ellsworth Summit",
    "suite" : "Suite 729",
    "city" : "Aliyaview",
    "zipcode" : "45169",
    "geo" : {
      "lat" : "-14.3990",
      "lng" : "-120.7677"
    }
  },
  "phone" : "586.493.6943 x140",
  "website" : "jacynthe.com",
  "company" : {
    "name" : "Abernathy Group",
    "catchPhrase" : "Implemented secondary concept",
    "bs" : "e-enable extensible e-tailers"
  }
}, {
  "id" : 9,
  "name" : "Glenna Reichert",
  "username" : "Delphine",
  "email" : "Chaim_McDermott@dana.io",
  "address" : {
    "street" : "Dayna Park",
    "suite" : "Suite 449",
    "city" : "Bartholomebury",
    "zipcode" : "76495-3109",
    "geo" : {
      "lat" : "24.6463",
      "lng" : "-168.8889"
    }
  },
  "phone" : "(775)976-6794 x41206",
  "website" : "conrad.com",
  "company" : {
    "name" : "Yost and Sons",
    "catchPhrase" : "Switchable contextually-based project",
    "bs" : "aggregate real-time technologies"
  }
}, {
  "id" : 10,
  "name" : "Clementina DuBuque",
  "username" : "Moriah.Stanton",
  "email" : "Rey.Padberg@karina.biz",
  "address" : {
    "street" : "Kattie Turnpike",
    "suite" : "Suite 198",
    "city" : "Lebsackbury",
    "zipcode" : "31428-2261",
    "geo" : {
      "lat" : "-38.2386",
      "lng" : "57.2232"
    }
  },
  "phone" : "024-648-3804",
  "website" : "ambrose.net",
  "company" : {
    "name" : "Hoeger LLC",
    "catchPhrase" : "Centralized empowering task-force",
    "bs" : "target end-to-end models"
  }
}

Expected results

The itemid field is correctly set

Actual results

There's an error:

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.fasterxml.jackson.databind.JsonNode
	at java.util.Optional.map(Optional.java:215) ~[?:1.8.0_121]
	at info.magnolia.rest.ui.JsonSelectFieldSupport.asText(JsonSelectFieldSupport.java:82) ~[magnolia-rest-client-ui-1.0.5.jar:?]

Workaround

Development notes

The error occurs in line 82 of info.magnolia.rest.ui.JsonSelectFieldSupport.asText(JsonNode, String) when the returned String is casted to JsonNode. Adding some checking before casting would fix this issue.


Generated at Mon Feb 12 06:51:41 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.