protected void parseMetaInfoFile() throws AmbariException {
    File f = new File(getAbsolutePath() + File.separator + SERVICE_METAINFO_FILE_NAME);
    if (! f.exists()) {
      throw new AmbariException(String.format("Stack Definition Service at '%s' doesn't contain a metainfo.xml file",
          f.getAbsolutePath()));
    }

    try {
      metaInfoXml = unmarshaller.unmarshal(ServiceMetainfoXml.class, f);
    } catch (Exception e) {
      metaInfoXml = new ServiceMetainfoXml();
      metaInfoXml.setValid(false);
      String msg = String.format("Unable to parse service metainfo.xml file '%s' ", f.getAbsolutePath());
      metaInfoXml.addError(msg);
      LOG.warn(msg, e);
      metaInfoXml.setSchemaVersion(getAbsolutePath().replace(f.getParentFile().getParentFile().getParent()+File.separator, ""));
    }
  }
Unmarshal the metainfo file into its object representation.

@throws AmbariException if the metainfo file doesn't exist or
                        unable to unmarshal the metainfo file
ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java