public static FederatedAuthenticatorConfig build(OMElement federatedAuthenticatorConfigOM) {

    if (federatedAuthenticatorConfigOM == null) {
      return null;
    }

    FederatedAuthenticatorConfig federatedAuthenticatorConfig = new FederatedAuthenticatorConfig();

    Iterator<?> iter = federatedAuthenticatorConfigOM.getChildElements();

    while (iter.hasNext()) {
      OMElement element = (OMElement) (iter.next());
      String elementName = element.getLocalName();

      if ("Name".equals(elementName)) {
        federatedAuthenticatorConfig.setName(element.getText());
      } else if ("DisplayName".equals(elementName)) {
        federatedAuthenticatorConfig.setDisplayName(element.getText());
      } else if ("IsEnabled".equals(elementName)) {
        federatedAuthenticatorConfig.setEnabled(Boolean.parseBoolean(element.getText()));
      } else if ("Properties".equals(elementName)) {
        Iterator<?> propertiesIter = element.getChildElements();
        List<Property> propertiesArrList = new ArrayList<Property>();

        if (propertiesIter != null) {
          while (propertiesIter.hasNext()) {
            OMElement propertiesElement = (OMElement) (propertiesIter.next());
            propertiesArrList.add(Property.build(propertiesElement));
          }
        }

        if (CollectionUtils.isNotEmpty(propertiesArrList)) {
          Property[] propertiesArr = propertiesArrList.toArray(new Property[0]);
          federatedAuthenticatorConfig.setProperties(propertiesArr);
        }
      }
    }

    return federatedAuthenticatorConfig;
  }