code: private static void resolveOneLink(ArrayResource array, CDAField field, String locale,
                                       CDARichNode node) {
      if (node instanceof CDARichHyperLink
          && ((CDARichHyperLink) node).data instanceof Map) {
        final CDARichHyperLink link = (CDARichHyperLink) node;
        final Map<String, Object> data = (Map<String, Object>) link.data;
        final Object target = data.get("target");
  
        if (target instanceof Map) {
          if (isLink(target)) {
            final Map<String, Object> map = (Map<String, Object>) target;
            final Map<String, Object> sys = (Map<String, Object>) map.get("sys");
            final String linkType = (String) sys.get("linkType");
            final String id = (String) sys.get("id");
  
            if ("Asset".equals(linkType)) {
              link.data = array.assets().get(id);
            } else if ("Entry".equals(linkType)) {
              link.data = array.entries().get(id);
            }
  
          } else {
            throw new IllegalStateException("Could not parse content of data field '"
                + field.id() + "' for locale '" + locale + "' at node '" + node
                + "'. Please check your content type model.");
          }
        } else if (target == null && data.containsKey("uri")) {
          link.data = data.get("uri");
        }
      } else if (node instanceof CDARichParagraph) {
        for (final CDARichNode child : ((CDARichParagraph) node).getContent()) {
          resolveOneLink(array, field, locale, child);
        }
      }
    }
docs: Link found, resolve it.
  
  @param array  the complete response from Contentful.
  @param field  the field containing a link.
  @param locale the locale of the link to be updated.
  @param node   the node build from the response.