Uploaded image for project: 'Magnolia REST Client UI'
  1. Magnolia REST Client UI
  2. MGNLRESTUI-81

Error when processing JSONPath expression that returns String

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Neutral
    • 2.0.0, 1.0.6
    • 1.0.5

    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.

      Checklists

        Acceptance criteria

        Attachments

          Activity

            People

              jbenito Javier Benito
              jayala Jonathan Ayala
              DeveloperX
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                Work Started:

                Checklists

                  Bug DoR
                  Task DoD

                  Time Tracking

                    Estimated:
                    Original Estimate - Not Specified
                    Not Specified
                    Remaining:
                    Remaining Estimate - Not Specified
                    Not Specified
                    Logged:
                    Time Spent - 0.25d
                    0.25d