protected Map<String, String> getDataObjectAttributes(BaseElement dObj) {
    Map<String, String> attributes = null;

    if (null != dObj) {
      List<ExtensionElement> attributesExtension =
          dObj.getExtensionElements().get(ELEMENT_DATA_ATTRIBUTES);

      if (null != attributesExtension && !attributesExtension.isEmpty()) {
        attributes = new HashMap<String, String>();
        List<ExtensionElement> attributeExtensions =
            attributesExtension.get(0).getChildElements().get(ELEMENT_DATA_ATTRIBUTE);

        for (ExtensionElement attributeExtension : attributeExtensions) {
          attributes.put(
              attributeExtension.getAttributeValue(YOURCO_EXTENSIONS_NAMESPACE, ATTRIBUTE_NAME),
              attributeExtension.getAttributeValue(YOURCO_EXTENSIONS_NAMESPACE, ATTRIBUTE_VALUE));
        }
      }
    }
    return attributes;
  }
  protected Localization getLocalization(BaseElement dObj) {
    List<ExtensionElement> i18lnExtension =
        dObj.getExtensionElements().get(ELEMENT_I18LN_LOCALIZATION);

    if (!i18lnExtension.isEmpty()) {
      Map<String, List<ExtensionAttribute>> extensionAttributes =
          i18lnExtension.get(0).getAttributes();
      localization.setLabeledEntityIdForName(
          extensionAttributes.get(ATTRIBUTE_DATA_LABELED_ENTITY_ID_FOR_NAME).get(0).getValue());
      localization.setLabeledEntityIdForDescription(
          extensionAttributes
              .get(ATTRIBUTE_DATA_LABELED_ENTITY_ID_FOR_DESCRIPTION)
              .get(0)
              .getValue());
      localization.setResourceBundleKeyForName(
          extensionAttributes.get(ATTRIBUTE_DATA_RESOURCE_BUNDLE_KEY_FOR_NAME).get(0).getValue());
      localization.setResourceBundleKeyForDescription(
          extensionAttributes
              .get(ATTRIBUTE_DATA_RESOURCE_BUNDLE_KEY_FOR_DESCRIPTION)
              .get(0)
              .getValue());
    }
    return localization;
  }