summaryrefslogtreecommitdiffstats
path: root/xmlserializer/XmlDocSource.h
diff options
context:
space:
mode:
authorGeorges-Henri Baron <georges-henrix.baron@intel.com>2012-09-04 17:30:28 +0200
committerDavid Wagner <david.wagner@intel.com>2014-02-12 17:03:57 +0100
commitcec86c1904a45a7027218adb3d34c8764bdfcc38 (patch)
tree218f0204920c09d264e9caa9ade0ba92cd74ac51 /xmlserializer/XmlDocSource.h
parentd7e4844d85db591a2ea235dd1b081c76e2f5cb9d (diff)
downloadexternal_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/XmlDocSource.h')
-rw-r--r--xmlserializer/XmlDocSource.h151
1 files changed, 141 insertions, 10 deletions
diff --git a/xmlserializer/XmlDocSource.h b/xmlserializer/XmlDocSource.h
index a59919e..1953425 100644
--- a/xmlserializer/XmlDocSource.h
+++ b/xmlserializer/XmlDocSource.h
@@ -1,6 +1,6 @@
/*
* INTEL CONFIDENTIAL
- * Copyright © 2011 Intel
+ * Copyright © 2013 Intel
* Corporation All Rights Reserved.
*
* The source code contained or described herein and all documents related to
@@ -18,44 +18,175 @@
* of the Materials, either expressly, by implication, inducement, estoppel or
* otherwise. Any license under such intellectual property rights must be
* express and approved by Intel in writing.
- *
- * CREATED: 2012-08-10
*/
#pragma once
-
#include "XmlElement.h"
#include "XmlSerializingContext.h"
+#include <string>
struct _xmlDoc;
struct _xmlNode;
+struct _xmlError;
+/**
+ * The CXmlDocSource is used by CXmlDocSink.
+ * The interaction between the xml source and xml sink is defined
+ * in the process method of CXmlDocSink. One can subclass CXmlDocSource
+ * for different purposes by implementing the populate method and then
+ * use it with any existing implementation of CXmlDocSink.
+ */
class CXmlDocSource
{
public:
+ /**
+ * Constructor
+ *
+ * @param[out] pDoc a pointer to the xml document that will be filled by the class
+ * @param[in] pRootNode a pointer to the root element of the document.
+ */
CXmlDocSource(_xmlDoc* pDoc, _xmlNode* pRootNode = NULL);
+
+ /**
+ * Constructor
+ *
+ * @param[out] pDoc a pointer to the xml document that will be filled by the class
+ * @param[in] strXmlSchemaFile a string containing the path to the schema file
+ * @param[in] strRootElementType a string containing the root element type
+ * @param[in] strRootElementName a string containing the root element name
+ * @param[in] strNameAttributeName a string containing the name of the root name attribute
+ */
+ CXmlDocSource(_xmlDoc* pDoc,
+ const string& strXmlSchemaFile,
+ const string& strRootElementType,
+ const string& strRootElementName,
+ const string& strNameAttrituteName);
+
+ /**
+ * Constructor
+ *
+ * @param[out] pDoc a pointer to the xml document that will be filled by the class
+ * @param[in] strXmlSchemaFile a string containing the path to the schema file
+ * @param[in] strRootElementType a string containing the root element type
+ */
+ CXmlDocSource(_xmlDoc* pDoc, const string& strXmlSchemaFile, const string& strRootElementType);
+
+ /**
+ * Destructor
+ */
virtual ~CXmlDocSource();
- // Method Called by the CXmlDocSink::process method
+ /**
+ * Method called by the CXmlDocSink::process method.
+ *
+ * @param[out] serializingContext is used as error output
+ *
+ * @return false if there are any error
+ */
virtual bool populate(CXmlSerializingContext& serializingContext) = 0;
- // Root element
+ /**
+ * Method that returns the root element of the Xml tree.
+ *
+ * @param[out] xmlRootElement a reference to the CXmleElement destination
+ */
void getRootElement(CXmlElement& xmlRootElement) const;
+
+ /**
+ * Getter method.
+ *
+ * @return the root element's name
+ */
string getRootElementName() const;
+
+ /**
+ * Getter method.
+ * Method that returns the root element's attribute with name matching strAttributeName.
+ *
+ * @param[in] strAttributeName is a string used to find the corresponding attribute
+ *
+ * @return the value of the root's attribute named as strAttributeName
+ */
string getRootElementAttributeString(const string& strAttributeName) const;
- // Method that returns the xmlDoc contained in the Source. (Can be used in a Doc Sink)
+ /**
+ * Getter method.
+ * Method that returns the xmlDoc contained in the Source.
+ * (Can be used in a Doc Sink)
+ *
+ * @return the document _pDoc
+ */
_xmlDoc* getDoc() const;
+ /**
+ * Method that validates the Xml doc contained in pDoc
+ *
+ * @param[out] serializingContext is used as error output
+ *
+ * @return false if any error occurs
+ */
+ virtual bool validate(CXmlSerializingContext& serializingContext);
+
protected:
- // Doc
+ /**
+ * Doc
+ */
_xmlDoc* _pDoc;
- // Root node
+ /**
+ * Root node
+ */
_xmlNode* _pRootNode;
- // libxml2 library cleanup
+ /**
+ * libxml2 library cleanup
+ */
static bool _bLibXml2CleanupScheduled;
+
+private:
+
+ /**
+ * Method that initializes class internal attributes in constructor
+ */
+ void init();
+
+ /** Method that check the validity of the document with the xsd file.
+ *
+ * @return true if document is valid, false if any error occures
+ */
+ bool isInstanceDocumentValid();
+
+ /** Validity error display method
+ *
+ * @param[in] pUserData pointer to the data to validate
+ * @param[out] pError is the xml error output
+ */
+ static void schemaValidityStructuredErrorFunc(void* pUserData, _xmlError* pError);
+
+ /**
+ * Schema file
+ */
+ string _strXmlSchemaFile;
+
+ /**
+ * Element type info
+ */
+ string _strRootElementType;
+
+ /**
+ * Element name info
+ */
+ string _strRootElementName;
+
+ /**
+ * Element name attribute info
+ */
+ string _strNameAttrituteName;
+
+ /**
+ * Boolean that enables the root element name attribute check
+ */
+ bool _bNameCheck;
};