docs: @RequestMapping(method = RequestMethod.GET)
      public ModelAndView listFragments(
              HttpServletRequest req,
              @RequestParam(value = "sort", required = false) String sortParam)
              throws ServletException {
  
          // Verify that the user is allowed to use this service
          IPerson user = personManager.getPerson(req);
          if (!AdminEvaluator.isAdmin(user)) {
              throw new AuthorizationException(
                      "User " + user.getUserName() + " not an administrator.");
          }
  
          Map<String, Document> fragmentLayoutMap = null;
          if (userLayoutStore != null) {
              try {
                  fragmentLayoutMap = userLayoutStore.getFragmentLayoutCopies();
              } catch (Exception e) {
                  String msg = "Failed to access fragment layouts";
                  log.error(msg, e);
                  throw new ServletException(msg, e);
              }
          }
  
          List<FragmentBean> fragments = new ArrayList<FragmentBean>();
          for (FragmentDefinition frag : dlmConfig.getFragments()) {
  
              Document layout =
                      fragmentLayoutMap != null ? fragmentLayoutMap.get(frag.getOwnerId()) : null;
  
              List<String> portlets = null;
              if (layout != null) {
                  portlets = new ArrayList<String>();
                  NodeList channelFNames =
                          this.xpathOperations.evaluate(
                                  CHANNEL_FNAME_XPATH, layout, XPathConstants.NODESET);
                  for (int i = 0; i < channelFNames.getLength(); i++) {
                      String fname = channelFNames.item(i).getTextContent();
                      IPortletDefinition pDef = portletRegistry.getPortletDefinitionByFname(fname);
  
                      if (null != pDef) {
                          portlets.add(pDef.getTitle());
                      }
                  }
              }
  
              fragments.add(FragmentBean.create(frag, portlets));
          }
  
          // Determine & follow sorting preference...
          Sort sort = DEFAULT_SORT;
          if (sortParam != null) {
              sort = Sort.valueOf(sortParam);
          }
          Collections.sort(fragments, sort.getComparator());
  
          return new ModelAndView("jsonView", "fragments", fragments);
      }