diff options
author | Georges-Henri Baron <georges-henrix.baron@intel.com> | 2012-09-04 17:30:28 +0200 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:03:57 +0100 |
commit | cec86c1904a45a7027218adb3d34c8764bdfcc38 (patch) | |
tree | 218f0204920c09d264e9caa9ade0ba92cd74ac51 /xmlserializer/XmlFileDocSource.cpp | |
parent | d7e4844d85db591a2ea235dd1b081c76e2f5cb9d (diff) | |
download | external_parameter-framework-cec86c1904a45a7027218adb3d34c8764bdfcc38.zip external_parameter-framework-cec86c1904a45a7027218adb3d34c8764bdfcc38.tar.gz external_parameter-framework-cec86c1904a45a7027218adb3d34c8764bdfcc38.tar.bz2 |
PFW: Add setDomainsXML command to import domains from string
BZ: 55694
Unable possibility to import the configurable domains from a string
Create one command that can be called through the command
line of the parameter-framework. The command setDomainXML
allows to import configurable domains with settings from
a string provided as first argument containing the xml description.
Change-Id: I6db7ccb8ba61b5e4c8ba81579a68f40e887d1534
Signed-off-by: Georges-Henri Baron <georges-henrix.baron@intel.com>
Reviewed-on: http://android.intel.com:8080/65408
Reviewed-by: cactus <cactus@intel.com>
Reviewed-by: Dixon, CharlesX <charlesx.dixon@intel.com>
Reviewed-by: Rocard, KevinX <kevinx.rocard@intel.com>
Tested-by: Dixon, CharlesX <charlesx.dixon@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'xmlserializer/XmlFileDocSource.cpp')
-rw-r--r-- | xmlserializer/XmlFileDocSource.cpp | 128 |
1 files changed, 22 insertions, 106 deletions
diff --git a/xmlserializer/XmlFileDocSource.cpp b/xmlserializer/XmlFileDocSource.cpp index f1094f1..4df2ad1 100644 --- a/xmlserializer/XmlFileDocSource.cpp +++ b/xmlserializer/XmlFileDocSource.cpp @@ -24,64 +24,33 @@ #include "XmlFileDocSource.h" #include <libxml/parser.h> -#include <libxml/xmlschemas.h> #define base CXmlDocSource - - -CXmlFileDocSource::CXmlFileDocSource(const string& strXmlInstanceFile, const string& strXmlSchemaFile, const string& strRootElementType, const string& strRootElementName, const string& strNameAttrituteName) : - base(xmlReadFile(strXmlInstanceFile.c_str(), NULL, 0)), _strXmlInstanceFile(strXmlInstanceFile), _strXmlSchemaFile(strXmlSchemaFile), _strRootElementType(strRootElementType), _strRootElementName(strRootElementName), _strNameAttrituteName(strNameAttrituteName), _bNameCheck(true) +CXmlFileDocSource::CXmlFileDocSource(const string& strXmlInstanceFile, + const string& strXmlSchemaFile, + const string& strRootElementType, + const string& strRootElementName, + const string& strNameAttrituteName) : + base(xmlReadFile(strXmlInstanceFile.c_str(),NULL, 0), + strXmlSchemaFile, + strRootElementType, + strRootElementName, + strNameAttrituteName), + _strXmlInstanceFile(strXmlInstanceFile) { } -CXmlFileDocSource::CXmlFileDocSource(const string& strXmlInstanceFile, const string& strXmlSchemaFile, const string& strRootElementType) : - base(xmlReadFile(strXmlInstanceFile.c_str(), NULL, 0)), _strXmlInstanceFile(strXmlInstanceFile), _strXmlSchemaFile(strXmlSchemaFile), _strRootElementType(strRootElementType), _strRootElementName(""), _strNameAttrituteName(""), _bNameCheck(false) +CXmlFileDocSource::CXmlFileDocSource(const string& strXmlInstanceFile, + const string& strXmlSchemaFile, + const string& strRootElementType) : + base(xmlReadFile(strXmlInstanceFile.c_str(), NULL, 0), + strXmlSchemaFile, + strRootElementType), + _strXmlInstanceFile(strXmlInstanceFile) { } -bool CXmlFileDocSource::populate(CXmlSerializingContext& serializingContext) -{ - // Check that the doc has been created - if (!isParsable(serializingContext)) { - - return false; - } - - // Validate - if (!isInstanceDocumentValid()) { - - serializingContext.setError("Document " + _strXmlInstanceFile + " is not valid"); - - return false; - } - - // Check Root element type - if (getRootElementName() != _strRootElementType) { - - serializingContext.setError("Error: Wrong XML structure file " + _strXmlInstanceFile); - serializingContext.appendLineToError("Root Element " + getRootElementName() + " mismatches expected type " + _strRootElementType); - - return false; - } - - // Check Root element name attribute (if any) - if (_bNameCheck) { - - string strRootElementNameCheck = getRootElementAttributeString(_strNameAttrituteName); - - if (!_strRootElementName.empty() && strRootElementNameCheck != _strRootElementName) { - - serializingContext.setError("Error: Wrong XML structure file " + _strXmlInstanceFile); - serializingContext.appendLineToError(_strRootElementType + " element " + _strRootElementName + " mismatches expected " + _strRootElementType + " type " + strRootElementNameCheck); - - return false; - } - } - - return true; -} - bool CXmlFileDocSource::isParsable(CXmlSerializingContext& serializingContext) const { // Check that the doc has been created @@ -95,68 +64,15 @@ bool CXmlFileDocSource::isParsable(CXmlSerializingContext& serializingContext) c return true; } -bool CXmlFileDocSource::isInstanceDocumentValid() +bool CXmlFileDocSource::populate(CXmlSerializingContext& serializingContext) { -#ifdef LIBXML_SCHEMAS_ENABLED - xmlDocPtr pSchemaDoc = xmlReadFile(_strXmlSchemaFile.c_str(), NULL, XML_PARSE_NONET); - - if (!pSchemaDoc) { - // Unable to load Schema - return false; - } - - xmlSchemaParserCtxtPtr pParserCtxt = xmlSchemaNewDocParserCtxt(pSchemaDoc); - - if (!pParserCtxt) { - - // Unable to create schema context - xmlFreeDoc(pSchemaDoc); - return false; - } + if (!base::validate(serializingContext)) { - // Get Schema - xmlSchemaPtr pSchema = xmlSchemaParse(pParserCtxt); + // Add the file's name in the error message + serializingContext.appendLineToError("File : " + _strXmlInstanceFile); - if (!pSchema) { - - // Invalid Schema - xmlSchemaFreeParserCtxt(pParserCtxt); - xmlFreeDoc(pSchemaDoc); - return false; - } - xmlSchemaValidCtxtPtr pValidationCtxt = xmlSchemaNewValidCtxt(pSchema); - - if (!pValidationCtxt) { - - // Unable to create validation context - xmlSchemaFree(pSchema); - xmlSchemaFreeParserCtxt(pParserCtxt); - xmlFreeDoc(pSchemaDoc); return false; } - xmlSetStructuredErrorFunc(this, schemaValidityStructuredErrorFunc); - //xmlSchemaSetValidErrors(pValidationCtxt, schemaValidityErrorFunc, schemaValidityWarningFunc, NULL); - - bool isDocValid = xmlSchemaValidateDoc(pValidationCtxt, _pDoc) == 0; - - xmlSchemaFreeValidCtxt(pValidationCtxt); - xmlSchemaFree(pSchema); - xmlSchemaFreeParserCtxt(pParserCtxt); - xmlFreeDoc(pSchemaDoc); - - return isDocValid; -#else return true; -#endif -} - -void CXmlFileDocSource::schemaValidityStructuredErrorFunc(void* pUserData, _xmlError* pError) -{ - (void)pUserData; - -#ifdef LIBXML_SCHEMAS_ENABLED - // Display message - puts(pError->message); -#endif } |