public static void loadExtendTypeRegConfig(String component) {
   if (SystemUtils.isDebug() || !regLoadeds.contains(component)) {
     if (hasRegConfig(component)) {
       if (readConfig(component)) regLoadeds.add(component);
     }
   }
 }
  private static boolean readConfig(String component) {
    FileSystem fs = FileSystemWrapper.instance();
    String path = fs.getRealPath(component + CONFIG_EXT);
    FileReader fr = null;
    boolean ret = false;
    try {
      fr = new FileReader(new File(path));
      String content = NetUtils.readStreamAsString(fr);
      int start = content.indexOf("{");
      int end = content.lastIndexOf("}");
      if ((start != -1) && (end != -1) && (end > start + 1)) {
        String body = content.substring(start + 1, end);
        if (SystemUtils.isNotEmptyString(body)) {
          start = body.indexOf("[");
          end = body.indexOf("]");
          if ((start != -1) && (end != -1)) {
            String config = body.substring(start, end + 1);
            JSONArray defs = JSONArray.parseArray(config);
            int len = defs.size();
            for (int i = 0; i < len; i++) {
              JSONObject o = defs.getJSONObject(i);
              String name = o.containsKey(STR_NAME) ? o.getString(STR_NAME) : null;
              if (null != name && !"".equals(name)) {
                ExtendTypeDef etd =
                    new ExtendTypeDef(
                        name, o.containsKey(STR_EDITOR) ? o.getString(STR_EDITOR) : null);
                extendTypeDefs.put(name, etd);
              }
            }

            ret = true;
          }
        }
      }
      return ret;
    } catch (Exception e) {
      throw UIException.create(e, UIMessages.READ_COMPONENT_CONFIG_ERROR2, component, path);
    } finally {
      try {
        if (fr != null) fr.close();
      } catch (IOException e) {
      }
    }
  }