Uploaded image for project: 'Magnolia REST Framework'
  1. Magnolia REST Framework
  2. MGNLREST-227

Content Delivery API can produce invalid JSON

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • 2.1.6, 2.2.2
    • 2.1.5
    • None
    • Yes
    • Maintenance 17, Maintenance 18, Maintenance 19, Maintenance 21
    • 5

      The content delivery API produces invalid JSON when a reference resolver that is applied to a list returns Optional.Empty(). The issue is in info.magnolia.rest.delivery.jcr.NodeWriter#writeProperty:

                  for(int i = 0; i < values.length; ++i) {
                      String valueAsString = this.getValueString(values[i]);
                      if (isResolveReference && referenceResolver.isPresent()) {
                          Optional<Object> reference = ((ReferenceResolver)referenceResolver.get()).resolve(valueAsString);
                          if (this.canWriteReference(reference, stack, valueAsString, depth)) {
                              this.writeResolvedReference(jsonGenerator, reference.get(), (String)null, i > 0, stack, depth, annotations, entityStream, mediaType, httpHeaders);
                              resolvedValues.add(valueAsString);
                          } else if (resolvedValues.contains(valueAsString)) {
                              this.writeResolvedReference(jsonGenerator, reference.get(), (String)null, i > 0, stack, depth, annotations, entityStream, mediaType, httpHeaders);
                          } else {
                              // FIX THIS a common needs to added here if 'i > 0'
                              jsonGenerator.write(valueAsString);
                          }
                      } else {
                          jsonGenerator.write(valueAsString);
                      }
                  }
      

      See attached example of malformed json.
      The use case for this is as follows: We’re converting a JCR object that bundles together a set of amazon s3:// asset to a model with hyperlinks. The issue happens when the JCR object with the s3 links gets deleted, but orphaned references remain.

        Acceptance criteria

          1. image.png
            127 kB
            Leah Staniorski

              mdivilek Milan Divilek
              lstaniorski Leah Staniorski
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Bug DoR
                  Task DoD

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