private void parseSchedulerConfiguration(Element configuration) {
    _schedulerConfDataList = new ArrayList<SchedulerConfigurationData>();

    NodeList nodes = configuration.getChildNodes();
    int n = 0;
    for (int i = 0; i < nodes.getLength(); i++) {
      // Each scheduler node
      Node node = nodes.item(i);
      if (node.getNodeType() == Node.ELEMENT_NODE) {
        n++;
        Element schedulerElem = (Element) node;

        String className;
        Node classNameNode = schedulerElem.getElementsByTagName("classname").item(0);
        if (classNameNode == null) {
          throw new RuntimeException("No tag 'classname' in scheduler " + n);
        }
        className = classNameNode.getTextContent();
        if (className.equals("")) {
          throw new RuntimeException("Empty tag 'classname' in scheduler " + n);
        }

        String schedulerName;
        Node schedulerNameNode = schedulerElem.getElementsByTagName("name").item(0);
        if (schedulerNameNode == null) {
          throw new RuntimeException("No tag 'name' in scheduler " + n + " classname " + className);
        }
        schedulerName = schedulerNameNode.getTextContent();
        if (schedulerName.equals("")) {
          throw new RuntimeException("Empty tag 'name' in scheduler " + n + " classname " + className);
        }

        // Check if parameters are defined for the scheduler
        Map<String, String> paramsMap = Utils.getConfigurationParameters(schedulerElem);

        SchedulerConfigurationData schedulerData = new SchedulerConfigurationData(schedulerName, className, paramsMap);
        _schedulerConfDataList.add(schedulerData);

      }
    }
  }
This class manages the scheduler configurations
app/com/linkedin/drelephant/configurations/scheduler/SchedulerConfiguration.java