protected LayoutFriendlyURL getUniqueLayoutFriendlyURL(
      PortletDataContext portletDataContext,
      LayoutFriendlyURL layoutFriendlyURL,
      LayoutFriendlyURL existingLayoutFriendlyURL)
      throws Exception {

    String friendlyURL = layoutFriendlyURL.getFriendlyURL();

    for (int i = 1; ; i++) {
      LayoutFriendlyURL duplicateLayoutFriendlyURL =
          LayoutFriendlyURLLocalServiceUtil.fetchLayoutFriendlyURL(
              portletDataContext.getScopeGroupId(),
              layoutFriendlyURL.isPrivateLayout(),
              layoutFriendlyURL.getFriendlyURL(),
              layoutFriendlyURL.getLanguageId());

      if ((duplicateLayoutFriendlyURL == null)
          || ((existingLayoutFriendlyURL != null)
              && (existingLayoutFriendlyURL.getLayoutFriendlyURLId()
                  == duplicateLayoutFriendlyURL.getLayoutFriendlyURLId()))) {

        break;
      }

      layoutFriendlyURL.setFriendlyURL(friendlyURL + i);
    }

    return layoutFriendlyURL;
  }
  protected void deleteMissingLayoutFriendlyURLs(
      PortletDataContext portletDataContext, Layout layout) {

    Map<Long, Long> layoutFriendlyURLIds =
        (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(LayoutFriendlyURL.class);

    List<LayoutFriendlyURL> layoutFriendlyURLs =
        _layoutFriendlyURLLocalService.getLayoutFriendlyURLs(layout.getPlid());

    for (LayoutFriendlyURL layoutFriendlyURL : layoutFriendlyURLs) {
      if (!layoutFriendlyURLIds.containsValue(layoutFriendlyURL.getLayoutFriendlyURLId())) {

        _layoutFriendlyURLLocalService.deleteLayoutFriendlyURL(layoutFriendlyURL);
      }
    }
  }