summaryrefslogtreecommitdiffstats
path: root/parameter
diff options
context:
space:
mode:
authorKevin Rocard <kevinx.rocard@intel.com>2013-08-07 16:15:33 +0200
committerDavid Wagner <david.wagner@intel.com>2014-02-12 17:04:05 +0100
commita7b6960cb51b289f6e24a8c494f1a0683d91dcbe (patch)
treec51a4b26a35ad906827534af93fa03f31d9c758e /parameter
parentd5679acf4b38db415bd25b0c3664d69cec5f43d4 (diff)
downloadexternal_parameter-framework-a7b6960cb51b289f6e24a8c494f1a0683d91dcbe.zip
external_parameter-framework-a7b6960cb51b289f6e24a8c494f1a0683d91dcbe.tar.gz
external_parameter-framework-a7b6960cb51b289f6e24a8c494f1a0683d91dcbe.tar.bz2
Change the element builder semantic
BZ: 122982 To parse XML, the PFW uses factories containing a map of XML tags and their associated builder builder. The builders used to contain the XML tag of the XML element that it will use in the context of the factory. A builder and an XML tag are already linked by the factory, thus the tag member in the builder is redundant. Remove the XML tag builder attribute and provide it on factory filling. Change-Id: I827c3b34dffb23bc850316d0b092b31c21987ac2 Signed-off-by: Kevin Rocard <kevinx.rocard@intel.com> Reviewed-on: http://android.intel.com:8080/124214 Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com> Tested-by: Barthes, FabienX <fabienx.barthes@intel.com> Reviewed-by: cactus <cactus@intel.com> Tested-by: cactus <cactus@intel.com>
Diffstat (limited to 'parameter')
-rw-r--r--parameter/Android.mk1
-rw-r--r--parameter/ElementBuilder.cpp38
-rw-r--r--parameter/ElementBuilder.h7
-rw-r--r--parameter/ElementBuilderTemplate.h1
-rw-r--r--parameter/ElementLibrary.cpp4
-rw-r--r--parameter/ElementLibrary.h16
-rw-r--r--parameter/KindElementBuilderTemplate.h2
-rw-r--r--parameter/NamedElementBuilderTemplate.h2
-rw-r--r--parameter/ParameterMgr.cpp50
-rw-r--r--parameter/SubsystemElementBuilder.cpp3
-rw-r--r--parameter/SystemClass.cpp3
11 files changed, 45 insertions, 82 deletions
diff --git a/parameter/Android.mk b/parameter/Android.mk
index e6e9891..a4be419 100644
--- a/parameter/Android.mk
+++ b/parameter/Android.mk
@@ -16,7 +16,6 @@ common_src_files := \
PathNavigator.cpp \
Element.cpp \
SystemClass.cpp \
- ElementBuilder.cpp \
Component.cpp \
ParameterMgr.cpp \
SelectionCriteria.cpp \
diff --git a/parameter/ElementBuilder.cpp b/parameter/ElementBuilder.cpp
deleted file mode 100644
index aa383bc..0000000
--- a/parameter/ElementBuilder.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * INTEL CONFIDENTIAL
- * Copyright © 2011 Intel
- * Corporation All Rights Reserved.
- *
- * The source code contained or described herein and all documents related to
- * the source code ("Material") are owned by Intel Corporation or its suppliers
- * or licensors. Title to the Material remains with Intel Corporation or its
- * suppliers and licensors. The Material contains trade secrets and proprietary
- * and confidential information of Intel or its suppliers and licensors. The
- * Material is protected by worldwide copyright and trade secret laws and
- * treaty provisions. No part of the Material may be used, copied, reproduced,
- * modified, published, uploaded, posted, transmitted, distributed, or
- * disclosed in any way without Intel’s prior express written permission.
- *
- * No license under any patent, copyright, trade secret or other intellectual
- * property right is granted to or conferred upon you by disclosure or delivery
- * 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: 2011-06-01
- * UPDATED: 2011-07-27
- */
-#include "ElementBuilder.h"
-
-CElementBuilder::CElementBuilder(const string& strType) : _strType(strType)
-{
-}
-
-CElementBuilder::~CElementBuilder()
-{
-}
-
-const string& CElementBuilder::getType() const
-{
- return _strType;
-}
diff --git a/parameter/ElementBuilder.h b/parameter/ElementBuilder.h
index fddcd03..8264721 100644
--- a/parameter/ElementBuilder.h
+++ b/parameter/ElementBuilder.h
@@ -29,12 +29,7 @@
class CElementBuilder
{
public:
- CElementBuilder(const string& strType);
- virtual ~CElementBuilder();
-
- const string& getType() const;
+ virtual ~CElementBuilder() {};
virtual CElement* createElement(const CXmlElement& xmlElement) const = 0;
-private:
- string _strType;
};
diff --git a/parameter/ElementBuilderTemplate.h b/parameter/ElementBuilderTemplate.h
index d74a04f..5b65f23 100644
--- a/parameter/ElementBuilderTemplate.h
+++ b/parameter/ElementBuilderTemplate.h
@@ -30,7 +30,6 @@ template <class ElementType>
class TElementBuilderTemplate : public CElementBuilder
{
public:
- TElementBuilderTemplate(const string& strType) : CElementBuilder(strType) {}
virtual CElement* createElement(const CXmlElement& xmlElement) const
{
diff --git a/parameter/ElementLibrary.cpp b/parameter/ElementLibrary.cpp
index 9031d3c..695942a 100644
--- a/parameter/ElementLibrary.cpp
+++ b/parameter/ElementLibrary.cpp
@@ -57,9 +57,9 @@ CElement* CElementLibrary::createElement(const CXmlElement& xmlElement) const
return NULL;
}
-void CElementLibrary::addElementBuilder(CElementBuilder* pElementBuilder)
+void CElementLibrary::addElementBuilder(string type, const CElementBuilder *pElementBuilder)
{
- _elementBuilderMap[pElementBuilder->getType()] = pElementBuilder;
+ _elementBuilderMap[type] = pElementBuilder;
}
string CElementLibrary::getBuilderType(const CXmlElement& xmlElement) const
diff --git a/parameter/ElementLibrary.h b/parameter/ElementLibrary.h
index 134ef0f..0de6056 100644
--- a/parameter/ElementLibrary.h
+++ b/parameter/ElementLibrary.h
@@ -35,15 +35,21 @@ class CElementBuilder;
class CElementLibrary
{
- typedef map<string, CElementBuilder*>::iterator ElementBuilderMapIterator;
- typedef map<string, CElementBuilder*>::const_iterator ElementBuilderMapConstIterator;
+ typedef map<string, const CElementBuilder*> ElementBuilderMap;
+ typedef ElementBuilderMap::iterator ElementBuilderMapIterator;
+ typedef ElementBuilderMap::const_iterator ElementBuilderMapConstIterator;
public:
CElementLibrary();
virtual ~CElementLibrary();
- // Filling
- void addElementBuilder(CElementBuilder* pElementBuilder);
+ /** Add a xml tag and it's corresponding builder in the library.
+ *
+ * @param[in] xmlTag is the tag of an xml element that can be given to the builder to
+ * create a new element.
+ * @param[in] pElementBuilder is the tag associated element builder.
+ */
+ void addElementBuilder(string type, const CElementBuilder *pElementBuilder);
void clean();
// Instantiation
@@ -54,5 +60,5 @@ private:
virtual string getBuilderType(const CXmlElement& xmlElement) const;
// Builders
- map<string, CElementBuilder*> _elementBuilderMap;
+ ElementBuilderMap _elementBuilderMap;
};
diff --git a/parameter/KindElementBuilderTemplate.h b/parameter/KindElementBuilderTemplate.h
index afdd686..2fa8371 100644
--- a/parameter/KindElementBuilderTemplate.h
+++ b/parameter/KindElementBuilderTemplate.h
@@ -30,7 +30,7 @@ template <class ElementType>
class TKindElementBuilderTemplate : public CElementBuilder
{
public:
- TKindElementBuilderTemplate(const string& strType) : CElementBuilder(strType) {}
+ TKindElementBuilderTemplate() : CElementBuilder() {}
virtual CElement* createElement(const CXmlElement& xmlElement) const
{
diff --git a/parameter/NamedElementBuilderTemplate.h b/parameter/NamedElementBuilderTemplate.h
index 7ebb8d8..eaf4320 100644
--- a/parameter/NamedElementBuilderTemplate.h
+++ b/parameter/NamedElementBuilderTemplate.h
@@ -30,7 +30,7 @@ template <class ElementType>
class TNamedElementBuilderTemplate : public CElementBuilder
{
public:
- TNamedElementBuilderTemplate(const string& strType) : CElementBuilder(strType) {}
+ TNamedElementBuilderTemplate() : CElementBuilder() {}
virtual CElement* createElement(const CXmlElement& xmlElement) const
{
diff --git a/parameter/ParameterMgr.cpp b/parameter/ParameterMgr.cpp
index fdca8da..f2d30e2 100644
--- a/parameter/ParameterMgr.cpp
+++ b/parameter/ParameterMgr.cpp
@@ -2101,43 +2101,43 @@ void CParameterMgr::feedElementLibraries()
// Global Configuration handling
CElementLibrary* pFrameworkConfigurationLibrary = new CElementLibrary;
- pFrameworkConfigurationLibrary->addElementBuilder(new TElementBuilderTemplate<CParameterFrameworkConfiguration>("ParameterFrameworkConfiguration"));
- pFrameworkConfigurationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CSubsystemPlugins>("SubsystemPlugins"));
- pFrameworkConfigurationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CPluginLocation>("Location"));
- pFrameworkConfigurationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CFrameworkConfigurationLocation>("StructureDescriptionFileLocation"));
- pFrameworkConfigurationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CFrameworkConfigurationGroup>("SettingsConfiguration"));
- pFrameworkConfigurationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CFrameworkConfigurationLocation>("ConfigurableDomainsFileLocation"));
- pFrameworkConfigurationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CFrameworkConfigurationLocation>("BinarySettingsFileLocation"));
+ pFrameworkConfigurationLibrary->addElementBuilder("ParameterFrameworkConfiguration", new TElementBuilderTemplate<CParameterFrameworkConfiguration>());
+ pFrameworkConfigurationLibrary->addElementBuilder("SubsystemPlugins", new TKindElementBuilderTemplate<CSubsystemPlugins>());
+ pFrameworkConfigurationLibrary->addElementBuilder("Location", new TKindElementBuilderTemplate<CPluginLocation>());
+ pFrameworkConfigurationLibrary->addElementBuilder("StructureDescriptionFileLocation", new TKindElementBuilderTemplate<CFrameworkConfigurationLocation>());
+ pFrameworkConfigurationLibrary->addElementBuilder("SettingsConfiguration", new TKindElementBuilderTemplate<CFrameworkConfigurationGroup>());
+ pFrameworkConfigurationLibrary->addElementBuilder("ConfigurableDomainsFileLocation", new TKindElementBuilderTemplate<CFrameworkConfigurationLocation>());
+ pFrameworkConfigurationLibrary->addElementBuilder("BinarySettingsFileLocation", new TKindElementBuilderTemplate<CFrameworkConfigurationLocation>());
_pElementLibrarySet->addElementLibrary(pFrameworkConfigurationLibrary);
// Parameter creation
CElementLibrary* pParameterCreationLibrary = new CElementLibrary;
- pParameterCreationLibrary->addElementBuilder(new CSubsystemElementBuilder(getSystemClass()->getSubsystemLibrary()));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CComponentType>("ComponentType"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CComponentInstance>("Component"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CBitParameterType>("BitParameter"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CBitParameterBlockType>("BitParameterBlock"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CStringParameterType>("StringParameter"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CParameterBlockType>("ParameterBlock"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CBooleanParameterType>("BooleanParameter"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CIntegerParameterType>("IntegerParameter"));
- pParameterCreationLibrary->addElementBuilder(new TElementBuilderTemplate<CLinearParameterAdaptation>("LinearAdaptation"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CEnumParameterType>("EnumParameter"));
- pParameterCreationLibrary->addElementBuilder(new TElementBuilderTemplate<CEnumValuePair>("ValuePair"));
- pParameterCreationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CFixedPointParameterType>("FixedPointParameter"));
- pParameterCreationLibrary->addElementBuilder(new TKindElementBuilderTemplate<CXmlFileIncluderElement>("SubsystemInclude"));
+ pParameterCreationLibrary->addElementBuilder("Subsystem", new CSubsystemElementBuilder(getSystemClass()->getSubsystemLibrary()));
+ pParameterCreationLibrary->addElementBuilder("ComponentType", new TNamedElementBuilderTemplate<CComponentType>());
+ pParameterCreationLibrary->addElementBuilder("Component", new TNamedElementBuilderTemplate<CComponentInstance>());
+ pParameterCreationLibrary->addElementBuilder("BitParameter", new TNamedElementBuilderTemplate<CBitParameterType>());
+ pParameterCreationLibrary->addElementBuilder("BitParameterBlock", new TNamedElementBuilderTemplate<CBitParameterBlockType>());
+ pParameterCreationLibrary->addElementBuilder("StringParameter", new TNamedElementBuilderTemplate<CStringParameterType>());
+ pParameterCreationLibrary->addElementBuilder("ParameterBlock", new TNamedElementBuilderTemplate<CParameterBlockType>());
+ pParameterCreationLibrary->addElementBuilder("BooleanParameter", new TNamedElementBuilderTemplate<CBooleanParameterType>());
+ pParameterCreationLibrary->addElementBuilder("IntegerParameter", new TNamedElementBuilderTemplate<CIntegerParameterType>());
+ pParameterCreationLibrary->addElementBuilder("LinearAdaptation", new TElementBuilderTemplate<CLinearParameterAdaptation>());
+ pParameterCreationLibrary->addElementBuilder("EnumParameter", new TNamedElementBuilderTemplate<CEnumParameterType>());
+ pParameterCreationLibrary->addElementBuilder("ValuePair", new TElementBuilderTemplate<CEnumValuePair>());
+ pParameterCreationLibrary->addElementBuilder("FixedPointParameter", new TNamedElementBuilderTemplate<CFixedPointParameterType>());
+ pParameterCreationLibrary->addElementBuilder("SubsystemInclude", new TKindElementBuilderTemplate<CXmlFileIncluderElement>());
_pElementLibrarySet->addElementLibrary(pParameterCreationLibrary);
// Parameter Configuration Domains creation
CElementLibrary* pParameterConfigurationLibrary = new CElementLibrary;
- pParameterConfigurationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CConfigurableDomain>("ConfigurableDomain"));
- pParameterConfigurationLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CDomainConfiguration>("Configuration"));
- pParameterConfigurationLibrary->addElementBuilder(new TElementBuilderTemplate<CCompoundRule>("CompoundRule"));
- pParameterConfigurationLibrary->addElementBuilder(new TElementBuilderTemplate<CSelectionCriterionRule>("SelectionCriterionRule"));
+ pParameterConfigurationLibrary->addElementBuilder("ConfigurableDomain", new TNamedElementBuilderTemplate<CConfigurableDomain>());
+ pParameterConfigurationLibrary->addElementBuilder("Configuration", new TNamedElementBuilderTemplate<CDomainConfiguration>());
+ pParameterConfigurationLibrary->addElementBuilder("CompoundRule", new TElementBuilderTemplate<CCompoundRule>());
+ pParameterConfigurationLibrary->addElementBuilder("SelectionCriterionRule", new TElementBuilderTemplate<CSelectionCriterionRule>());
_pElementLibrarySet->addElementLibrary(pParameterConfigurationLibrary);
}
diff --git a/parameter/SubsystemElementBuilder.cpp b/parameter/SubsystemElementBuilder.cpp
index c55c7dc..6336778 100644
--- a/parameter/SubsystemElementBuilder.cpp
+++ b/parameter/SubsystemElementBuilder.cpp
@@ -25,7 +25,8 @@
#include "SubsystemElementBuilder.h"
#include "SubsystemLibrary.h"
-CSubsystemElementBuilder::CSubsystemElementBuilder(const CSubsystemLibrary* pSubsystemLibrary) : CElementBuilder("Subsystem"), _pSubsystemLibrary(pSubsystemLibrary)
+CSubsystemElementBuilder::CSubsystemElementBuilder(const CSubsystemLibrary* pSubsystemLibrary) :
+ CElementBuilder(), _pSubsystemLibrary(pSubsystemLibrary)
{
}
diff --git a/parameter/SystemClass.cpp b/parameter/SystemClass.cpp
index 98917d7..f3477c6 100644
--- a/parameter/SystemClass.cpp
+++ b/parameter/SystemClass.cpp
@@ -135,7 +135,8 @@ bool CSystemClass::loadSubsystems(string& strError, const CSubsystemPlugins* pSu
log_info("All subsystem plugins successfully loaded");
// Add virtual subsystem builder
- _pSubsystemLibrary->addElementBuilder(new TNamedElementBuilderTemplate<CVirtualSubsystem>("Virtual"));
+ _pSubsystemLibrary->addElementBuilder("Virtual",
+ new TNamedElementBuilderTemplate<CVirtualSubsystem>());
return true;
}