docs: public CmsUgcConfiguration readConfiguration(CmsFile configFile) throws CmsException {
  
          m_content = CmsXmlContentFactory.unmarshal(m_cms, configFile);
          String resourceType = getStringValue(N_CONTENT_TYPE);
          String contentPath = getStringValue(N_CONTENT_PATH);
          CmsResource contentPathResource = m_cms.readResource(contentPath);
          String namePattern = getStringValue(N_NAME_PATTERN);
          String localeStr = getStringValue(N_LOCALE);
          OpenCms.getLocaleManager();
          Locale locale = CmsLocaleManager.getLocale(localeStr);
          Optional<CmsResource> uploadPathResource = Optional.absent();
          String uploadPath = getStringValue(N_UPLOAD_PATH);
          if (uploadPath != null) {
              uploadPathResource = Optional.of(m_cms.readResource(uploadPath));
          }
          Optional<Long> maxUploadSize = getLongValue(N_MAX_UPLOAD_SIZE);
          Optional<Integer> maxNumContents = getIntValue(N_MAX_NUM_CONTENTS);
          Optional<Long> queueWaitTime = getLongValue(N_QUEUE_WAIT_TIME);
          Optional<Integer> maxQueueLength = getIntValue(N_QUEUE_MAX_LENGTH);
          boolean autoPublish = Boolean.parseBoolean(getStringValue(N_AUTO_PUBLISH));
          String validExtensionsStr = getStringValue(N_VALID_EXTENSIONS);
          Optional<List<String>> validExtensions = Optional.absent();
          if (validExtensionsStr != null) {
              validExtensionsStr = validExtensionsStr.trim();
              List<String> extensions = CmsStringUtil.splitAsList(validExtensionsStr, EXTENSIONS_SEPARATOR);
              validExtensions = Optional.of(extensions);
          }
  
          String userForGuestStr = getStringValue(N_USER_FOR_GUEST);
          Optional<CmsUser> userForGuest = Optional.absent();
          if (userForGuestStr != null) {
              userForGuest = Optional.of(m_cms.readUser(userForGuestStr.trim()));
          }
  
          String projectGroupStr = getStringValue(N_PROJECT_GROUP);
          CmsGroup projectGroup = m_cms.readGroup(projectGroupStr.trim());
          CmsUUID id = configFile.getStructureId();
          CmsUgcConfiguration result = new CmsUgcConfiguration(
              id,
              userForGuest,
              projectGroup,
              resourceType,
              contentPathResource,
              namePattern,
              locale,
              uploadPathResource,
              maxUploadSize,
              maxNumContents,
              queueWaitTime,
              maxQueueLength,
              autoPublish,
              validExtensions);
          result.setPath(configFile.getRootPath());
          return result;
      }