docs: public void parseResourceTypeConfig(String basePath, I_CmsXmlContentLocation node) throws CmsException {
  
          I_CmsXmlContentValueLocation typeNameLoc = node.getSubValue(N_TYPE_NAME);
          String typeName = typeNameLoc.asString(m_cms);
          CmsContentFolderDescriptor folderOrName = parseFolderOrName(basePath, node.getSubValue(N_FOLDER));
          I_CmsXmlContentValueLocation disabledLoc = node.getSubValue(N_DISABLED);
          boolean disabled = false;
          boolean addDisabled = false;
          boolean createDisabled = false;
          String disabledStr = disabledLoc == null ? null : disabledLoc.asString(m_cms);
          if ((disabledStr != null) && "add".equalsIgnoreCase(disabledStr.trim())) {
              addDisabled = true;
          } else if ((disabledStr != null) && "create".equalsIgnoreCase(disabledStr.trim())) {
              createDisabled = true;
          } else {
              disabled = Boolean.parseBoolean(disabledStr);
          }
          I_CmsXmlContentValueLocation namePatternLoc = node.getSubValue(N_NAME_PATTERN);
          String namePattern = null;
          if (namePatternLoc != null) {
              namePattern = namePatternLoc.asString(m_cms);
          }
  
          boolean detailPagesDisabled = false;
          I_CmsXmlContentValueLocation detailDisabledLoc = node.getSubValue(N_DETAIL_PAGES_DISABLED);
          if (detailDisabledLoc != null) {
              String detailPagesDisabledStr = detailDisabledLoc.asString(m_cms);
              detailPagesDisabled = Boolean.parseBoolean(detailPagesDisabledStr);
          }
  
          int order = I_CmsConfigurationObject.DEFAULT_ORDER;
          I_CmsXmlContentValueLocation orderLoc = node.getSubValue(N_ORDER);
          if (orderLoc != null) {
              try {
                  String orderStr = orderLoc.asString(m_cms);
                  order = Integer.parseInt(orderStr);
              } catch (NumberFormatException e) {
                  // noop
              }
          }
  
          I_CmsXmlContentValueLocation elementViewLoc = node.getSubValue(N_ELEMENT_VIEW);
          CmsUUID elementView = null;
          if (elementViewLoc != null) {
              try {
                  CmsXmlVarLinkValue elementViewValue = (CmsXmlVarLinkValue)elementViewLoc.getValue();
                  String stringValue = elementViewValue.getStringValue(m_cms);
                  if ("".equals(stringValue)) {
                      elementView = CmsUUID.getNullUUID();
                  } else if (stringValue.startsWith(VIEW_SCHEME)) {
                      elementView = new CmsUUID(stringValue.substring(VIEW_SCHEME.length()));
                  } else {
                      elementView = elementViewValue.getLink(m_cms).getStructureId();
                  }
              } catch (Exception e) {
                  // in case parsing the link fails, the default element view will be used
              }
          }
  
          I_CmsXmlContentValueLocation locationLoc = node.getSubValue(N_LOCALIZATION);
          String localization = null;
          if (locationLoc != null) {
              CmsXmlVfsFileValue locationValue = (CmsXmlVfsFileValue)locationLoc.getValue();
              CmsLink link = locationValue.getLink(m_cms);
              if (null != link) {
                  String stringValue = link.getSitePath(m_cms);
                  // extract bundle base name from the path to the bundle file
                  int lastSlashIndex = stringValue.lastIndexOf("/");
                  String fileName = stringValue.substring(lastSlashIndex + 1);
                  if (CmsFileUtil.getExtension(fileName).equals(".properties")) {
                      fileName = fileName.substring(0, fileName.length() - ".properties".length());
                  }
                  String localeSuffix = CmsStringUtil.getLocaleSuffixForName(fileName);
                  if ((localeSuffix != null) && fileName.endsWith(localeSuffix)) {
                      fileName = fileName.substring(0, fileName.length() - localeSuffix.length() - 1);
                  }
                  localization = fileName;
              }
          }
  
          I_CmsXmlContentValueLocation showDefaultViewLoc = node.getSubValue(N_SHOW_IN_DEFAULT_VIEW);
          Boolean showInDefaultView = null;
          if (showDefaultViewLoc != null) {
              showInDefaultView = Boolean.valueOf(
                  Boolean.parseBoolean(showDefaultViewLoc.getValue().getStringValue(m_cms)));
          }
  
          I_CmsXmlContentValueLocation copyInModelsLoc = node.getSubValue(N_COPY_IN_MODELS);
          Boolean copyInModels = null;
          if (copyInModelsLoc != null) {
              copyInModels = Boolean.valueOf(Boolean.parseBoolean(copyInModelsLoc.getValue().getStringValue(m_cms)));
          }
  
          I_CmsXmlContentValueLocation elementDeleteModeLoc = node.getSubValue(N_ELEMENT_DELETE_MODE);
          ElementDeleteMode elementDeleteMode = null;
          if (elementDeleteModeLoc != null) {
              try {
                  elementDeleteMode = ElementDeleteMode.valueOf(elementDeleteModeLoc.getValue().getStringValue(m_cms));
              } catch (Exception e) {
                  LOG.warn(e.getLocalizedMessage(), e);
              }
          }
  
          List<I_CmsFormatterBean> formatters = new ArrayList<I_CmsFormatterBean>();
          for (I_CmsXmlContentValueLocation formatterLoc : node.getSubValues(N_FORMATTER)) {
              CmsFormatterBean formatter = parseFormatter(typeName, formatterLoc);
              formatters.add(formatter);
          }
  
          CmsResourceTypeConfig typeConfig = new CmsResourceTypeConfig(
              typeName,
              disabled,
              folderOrName,
              namePattern,
              detailPagesDisabled,
              addDisabled,
              createDisabled,
              elementView,
              localization,
              showInDefaultView,
              copyInModels,
              order,
              elementDeleteMode);
          m_resourceTypeConfigs.add(typeConfig);
      }