@Override
  public void onSuccess(CComponentTypeRegistry[] result) {
    CComponentTypeNode[] ds = new CComponentTypeNode[result.length];
    int index = 0;
    for (CComponentTypeRegistry registry : result) {
      ds[index++] = new CComponentTypeNode(registry);
      if (PROCESSOR_SECTION_ID.equals(sectionID))
        WebClientController.componentManager.registerProcessor(registry);
      else if (DATASOURCE_SECTION_ID.equals(sectionID))
        WebClientController.componentManager.registerDataSource(registry);
    }
    TreeNode root = new TreeNode("ComponentRoot", ds);

    Tree dataSourceTree = new Tree();
    dataSourceTree.setModelType(TreeModelType.CHILDREN);
    dataSourceTree.setNameProperty(COMPONENT_NAME);
    dataSourceTree.setRoot(root);
    // group tree grid
    TreeGridField connectorsField = new TreeGridField("ComponentField");
    connectorsField.setShowHover(false);
    connectorsField.setCellFormatter(
        new CellFormatter() {
          @Override
          public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
            return record.getAttributeAsString(COMPONENT_NAME);
          }
        });
    treeGrid.setData(dataSourceTree);
    treeGrid.setFields(connectorsField);
  }