docs: protected String getRfsNameWithExportName(CmsObject cms, String vfsName) {
  
          String rfsName = vfsName;
  
          try {
              // check if the resource folder (or a parent folder) has the "exportname" property set
              String name = CmsResource.getName(vfsName).replaceAll("/$", "");
              CmsUUID detailId = cms.readIdForUrlName(name);
              String propertyReadPath;
              if (detailId == null) {
                  propertyReadPath = CmsResource.getFolderPath(rfsName);
              } else {
                  propertyReadPath = CmsResource.getFolderPath(rfsName.replaceAll("/$", ""));
              }
              CmsProperty exportNameProperty = cms.readPropertyObject(
                  propertyReadPath,
                  CmsPropertyDefinition.PROPERTY_EXPORTNAME,
                  true);
  
              if (exportNameProperty.isNullProperty()) {
                  // if "exportname" is not set we must add the site root
                  rfsName = cms.getRequestContext().addSiteRoot(rfsName);
              } else {
                  // "exportname" property is set
                  String exportname = exportNameProperty.getValue();
                  if (exportname.charAt(0) != '/') {
                      exportname = '/' + exportname;
                  }
                  if (exportname.charAt(exportname.length() - 1) != '/') {
                      exportname = exportname + '/';
                  }
                  String value = null;
                  boolean cont;
                  String resourceName = rfsName; // resourceName can be the detail page URI
                  do {
                      // find out where the export name was set, to replace these parent folders in the RFS name
                      try {
                          CmsProperty prop = cms.readPropertyObject(
                              resourceName,
                              CmsPropertyDefinition.PROPERTY_EXPORTNAME,
                              false);
                          if (prop.isIdentical(exportNameProperty)) {
                              // look for the right position in path
                              value = prop.getValue();
                          }
                          cont = (value == null) && (resourceName.length() > 1);
                      } catch (CmsVfsResourceNotFoundException e) {
                          // this is for publishing deleted resources
                          cont = (resourceName.length() > 1);
                      } catch (CmsSecurityException se) {
                          // a security exception (probably no read permission) we return the current result
                          cont = false;
                      }
                      if (cont) {
                          resourceName = CmsResource.getParentFolder(resourceName);
                      }
                  } while (cont);
                  rfsName = exportname + rfsName.substring(resourceName.length());
              }
          } catch (CmsException e) {
              if (LOG.isDebugEnabled()) {
                  LOG.debug(e.getLocalizedMessage(), e);
              }
              // ignore exception, return vfsName as rfsName
              rfsName = vfsName;
          }
          return rfsName;
      }