{ }
*/
- IMPL_PTR_TYPE(XMLResObjectData);
- IMPL_PTR_TYPE(XMLPatternData);
- IMPL_PTR_TYPE(XMLProductData);
- IMPL_PTR_TYPE(XMLPatchData);
- //IMPL_PTR_TYPE(XMLPatchMessageData);
- //IMPL_PTR_TYPE(XMLPatchPackageData);
- //IMPL_PTR_TYPE(XMLPatchScriptData);
-
/* output operators */
namespace {
return out;
}
+ IMPL_PTR_TYPE(XMLResObjectData);
+ IMPL_PTR_TYPE(XMLPatternData);
+ IMPL_PTR_TYPE(XMLProductData);
+ IMPL_PTR_TYPE(XMLPatchData);
+ IMPL_PTR_TYPE(XMLPatchMessageData);
+ IMPL_PTR_TYPE(XMLPatchScriptData);
+
} // namespace xml
} // namespace parser
} // namespace zypp
namespace parser {
namespace xmlstore {
+ DEFINE_PTR_TYPE(XMLResObjectData);
+ DEFINE_PTR_TYPE(XMLProductData);
+ DEFINE_PTR_TYPE(XMLPatternData);
+ DEFINE_PTR_TYPE(XMLPatchData);
+ DEFINE_PTR_TYPE(XMLPatchAtomData);
+ DEFINE_PTR_TYPE(XMLPatchMessageData);
+ DEFINE_PTR_TYPE(XMLPatchScriptData);
+
/**
* @short Holds dependency data
*/
{
public:
XMLPatternData();
- std::string name;
TranslatedText summary;
+ TranslatedText description;
+
std::string default_;
std::string userVisible;
- TranslatedText description;
TranslatedText category;
std::string icon;
std::string script;
std::string type;
std::string vendor;
- std::string name;
TranslatedText displayname;
TranslatedText description;
// those are suse specific tags
XMLPatchMessageData() {};
virtual AtomType atomType() { return Message; };
TranslatedText text;
- };
-
- /*
- class XMLPatchPackageData : public XMLPatchAtomData
- {
- public:
- XMLPatchPackageData() {};
- virtual AtomType atomType() { return Package; };
- TranslatedText text;
- };
- */
+ };
class XMLPatchData : public XMLResObjectData
{
bool rebootNeeded;
bool packageManager;
std::string updateScript;
- std::list<shared_ptr<XMLPatchAtomData> > atoms;
+ std::list<XMLPatchAtomData_Ptr > atoms;
};
std::ostream& operator<<(std::ostream &out, const XMLPatternData& data);
std::ostream& operator<<(std::ostream& out, const XMLProductData& data);
- DEFINE_PTR_TYPE(XMLResObjectData);
- DEFINE_PTR_TYPE(XMLProductData);
- DEFINE_PTR_TYPE(XMLPatternData);
- DEFINE_PTR_TYPE(XMLPatchData);
- DEFINE_PTR_TYPE(XMLPatchAtomData);
- DEFINE_PTR_TYPE(XMLPatchMessageData);
- DEFINE_PTR_TYPE(XMLPatchScriptData);
- DEFINE_PTR_TYPE(XMLPatchPackageData);
+
} // namespace xmlstore
} // namespace parser
} // namespace zypp
patchPtr->rebootNeeded = false;
patchPtr->packageManager = false;
+ parseResObjectCommonData( patchPtr, dataNode);
+ parseDependencies( patchPtr, dataNode);
+
for (xmlNodePtr child = dataNode->children; child && child != dataNode; child = child->next)
{
- if (_helper.isElement(child)) {
+ if (_helper.isElement(child))
+ {
string name = _helper.name(child);
- if (name == "name") {
- patchPtr->name = _helper.content(child);
- }
- else if (name == "summary") {
+
+ if (name == "summary") {
patchPtr->summary.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
}
else if (name == "description") {
patchPtr->description.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
}
- else if (name == "version") {
- patchPtr->epoch = _helper.attribute(child,"epoch");
- patchPtr->ver = _helper.attribute(child,"ver");
- patchPtr->rel = _helper.attribute(child,"rel");
- }
- else if (name == "provides") {
- parseDependencyEntries(& patchPtr->provides, child);
- }
- else if (name == "conflicts") {
- parseDependencyEntries(& patchPtr->conflicts, child);
- }
- else if (name == "obsoletes") {
- parseDependencyEntries(& patchPtr->obsoletes, child);
- }
- else if (name == "prerequires") {
- parseDependencyEntries(& patchPtr->prerequires, child);
- }
- else if (name == "requires") {
- parseDependencyEntries(& patchPtr->requires, child);
- }
- else if (name == "recommends") {
- parseDependencyEntries(& patchPtr->recommends, child);
- }
- else if (name == "suggests") {
- parseDependencyEntries(& patchPtr->suggests, child);
- }
- else if (name == "supplements") {
- parseDependencyEntries(& patchPtr->supplements, child);
- }
- else if (name == "enhances") {
- parseDependencyEntries(& patchPtr->enhances, child);
- }
- else if (name == "freshens") {
- parseDependencyEntries(& patchPtr->freshens, child);
- }
else if (name == "category") {
patchPtr->category = _helper.content(child);
}
else if (name == "atoms") {
parseAtomsNode(patchPtr, child);
}
- else {
- WAR << "XML <data> contains the unknown element <" << name << "> "
- << _helper.positionInfo(child) << ", skipping" << endl;
- }
}
}
return patchPtr;
{
parseMessageNode (dataPtr, child);
}
- else {
- WAR << "XML <atoms> contains the unknown element <" << name << "> "
- << _helper.positionInfo(child) << ", skipping" << endl;
- }
}
}
}
void
XMLPatchParser::parseAtomNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode)
{
- shared_ptr<XMLPatchAtomData> atom(new XMLPatchAtomData);
+ XMLPatchAtomData_Ptr atom(new XMLPatchAtomData);
// inject dependencies and other stuff
- parseResolvableNode( dataPtr, formatNode);
+ parseResObjectCommonData( atom, formatNode);
+ parseDependencies( atom, formatNode);
+
dataPtr->atoms.push_back(atom);
}
void
XMLPatchParser::parseScriptNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode)
{
- shared_ptr<XMLPatchScriptData> script(new XMLPatchScriptData);
- parseResolvableNode( dataPtr, formatNode);
+ XMLPatchScriptData_Ptr script(new XMLPatchScriptData);
+
+ parseResObjectCommonData( script, formatNode);
+ parseDependencies( script, formatNode);
for (xmlNodePtr child = formatNode->children; child != 0; child = child ->next)
{
{
script->undo_script = _helper.content(child);
}
- else
- {
- WAR << "XML <atoms/script> contains the unknown element <" << name << "> " << _helper.positionInfo(child) << ", skipping" << endl;
- }
}
}
dataPtr->atoms.push_back(script);
void
XMLPatchParser::parseMessageNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode)
{
- shared_ptr<XMLPatchMessageData> message(new XMLPatchMessageData);
+ XMLPatchMessageData_Ptr message(new XMLPatchMessageData);
+
+ parseResObjectCommonData( message, formatNode);
+ parseDependencies( message, formatNode);
for (xmlNodePtr child = formatNode->children; child != 0; child = child ->next)
{
if (name == "text") {
message->text.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
}
- else {
- WAR << "XML <atoms/message> contains the unknown element <" << name << "> " << _helper.positionInfo(child) << ", skipping" << endl;
- }
}
}
- parseResolvableNode( dataPtr, formatNode);
dataPtr->atoms.push_back(message);
}
- void XMLPatchParser::parseResolvableNode(XMLResObjectData_Ptr dataPtr, xmlNodePtr formatNode)
- {
- for (xmlNodePtr child = formatNode->children; child != 0; child = child ->next)
- {
- if (_helper.isElement(child))
- {
- string name = _helper.name(child);
- if (name == "name") {
- dataPtr->name = _helper.content(child);
- }
- else if (name == "version") {
- dataPtr->epoch = _helper.attribute(child,"epoch");
- dataPtr->ver = _helper.attribute(child,"ver");
- dataPtr->rel = _helper.attribute(child,"rel");
- }
- else if (name == "arch") {
- dataPtr->arch = _helper.content(child);
- }
- else if (name == "provides") {
- parseDependencyEntries(& dataPtr->provides, child);
- }
- else if (name == "conflicts") {
- parseDependencyEntries(& dataPtr->conflicts, child);
- }
- else if (name == "obsoletes") {
- parseDependencyEntries(& dataPtr->obsoletes, child);
- }
- else if (name == "requires") {
- parseDependencyEntries(& dataPtr->requires, child);
- }
- else if (name == "recommends") {
- parseDependencyEntries(& dataPtr->recommends, child);
- }
- else if (name == "suggests") {
- parseDependencyEntries(& dataPtr->suggests, child);
- }
- else if (name == "supplements") {
- parseDependencyEntries(& dataPtr->supplements, child);
- }
- else if (name == "enhances") {
- parseDependencyEntries(& dataPtr->enhances, child);
- }
- else if (name == "freshens") {
- parseDependencyEntries(& dataPtr->freshens, child);
- }
- else {
- WAR << "XML <atoms/" << _helper.name(formatNode) << "> contains the unknown element <"
- << name << "> "
- << _helper.positionInfo(child) << ", skipping" << endl;
- }
- }
- }
- }
-
-
} // namespace yum
} // namespace parser
} // namespace zypp
xmlNodePtr dataNode = xmlTextReaderExpand(reader);
xml_assert(dataNode);
- for (xmlNodePtr child = dataNode->children;
- child && child != dataNode;
- child = child->next) {
- if (_helper.isElement(child)) {
- string name = _helper.name(child);
- if (name == "name") {
- dataPtr->name = _helper.content(child);
- }
- else if (name == "arch") {
- dataPtr->arch = _helper.content(child);
- }
- else if (name == "version") {
- dataPtr->epoch = _helper.attribute(child,"epoch");
- dataPtr->ver = _helper.attribute(child,"ver");
- dataPtr->rel = _helper.attribute(child,"rel");
- }
- else if (name == "summary") {
- dataPtr->summary.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
- }
- else if (name == "default") {
- dataPtr->default_ = _helper.content(child);
- }
- else if (name == "uservisible") {
- dataPtr->userVisible = _helper.content(child);
- }
- else if (name == "description") {
- dataPtr->description.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
- }
- else if (name == "category") {
- dataPtr->category.setText(_helper.content(child));
- }
- else if (name == "icon") {
- dataPtr->icon = _helper.content(child);
- }
- else if (name == "script") {
- dataPtr->script = _helper.content(child);
- }
- else if (name == "provides") {
- parseDependencyEntries(& dataPtr->provides, child);
- }
- else if (name == "conflicts") {
- parseDependencyEntries(& dataPtr->conflicts, child);
- }
- else if (name == "obsoletes") {
- parseDependencyEntries(& dataPtr->obsoletes, child);
- }
- else if (name == "prerequires") {
- parseDependencyEntries(& dataPtr->prerequires, child);
- }
- else if (name == "requires") {
- parseDependencyEntries(& dataPtr->requires, child);
- }
- else if (name == "recommends") {
- parseDependencyEntries(& dataPtr->recommends, child);
- }
- else if (name == "suggests") {
- parseDependencyEntries(& dataPtr->suggests, child);
- }
- else if (name == "supplements") {
- parseDependencyEntries(& dataPtr->supplements, child);
- }
- else if (name == "enhances") {
- parseDependencyEntries(& dataPtr->enhances, child);
- }
- else if (name == "freshens") {
- parseDependencyEntries(& dataPtr->freshens, child);
- }
- else {
- WAR << "XML <pattern> contains the unknown element <" << name << "> "
- << _helper.positionInfo(child) << ", skipping" << endl;
- }
- }
- }
+ parseResObjectCommonData( dataPtr, dataNode);
+ parseDependencies( dataPtr, dataNode);
+
+ for (xmlNodePtr child = dataNode->children; child && child != dataNode; child = child->next)
+ {
+ if (_helper.isElement(child))
+ {
+ string name = _helper.name(child);
+
+ if (name == "summary")
+ {
+ dataPtr->summary.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
+ }
+ else if (name == "default") {
+ dataPtr->default_ = _helper.content(child);
+ }
+ else if (name == "uservisible") {
+ dataPtr->userVisible = _helper.content(child);
+ }
+ else if (name == "description") {
+ dataPtr->description.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
+ }
+ else if (name == "category") {
+ dataPtr->category.setText(_helper.content(child));
+ }
+ else if (name == "icon") {
+ dataPtr->icon = _helper.content(child);
+ }
+ else if (name == "script") {
+ dataPtr->script = _helper.content(child);
+ }
+ }
+ }
return dataPtr;
} /* end process */
xmlNodePtr dataNode = xmlTextReaderExpand(reader);
xml_assert(dataNode);
productPtr->type = _helper.attribute(dataNode,"type");
-
+
+ parseResObjectCommonData( productPtr, dataNode);
+ parseDependencies( productPtr, dataNode);
+
for (xmlNodePtr child = dataNode->children; child && child != dataNode; child = child->next)
{
if (_helper.isElement(child))
{
string name = _helper.name(child);
- if (name == "name") {
- productPtr->name = _helper.content(child);
- }
- else if (name == "vendor") {
+ if (name == "vendor") {
productPtr->vendor = _helper.content(child);
}
else if (name == "release-notes-url") {
else if (name == "description") {
productPtr->description.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
}
- else if (name == "version") {
- productPtr->epoch = _helper.attribute(child,"epoch");
- productPtr->ver = _helper.attribute(child,"ver");
- productPtr->rel = _helper.attribute(child,"rel");
- }
- else if (name == "provides") {
- parseDependencyEntries(& productPtr->provides, child);
- }
- else if (name == "conflicts") {
- parseDependencyEntries(& productPtr->conflicts, child);
- }
- else if (name == "obsoletes") {
- parseDependencyEntries(& productPtr->obsoletes, child);
- }
- else if (name == "prerequires") {
- parseDependencyEntries(& productPtr->prerequires, child);
- }
- else if (name == "requires") {
- parseDependencyEntries(& productPtr->requires, child);
- }
- else if (name == "recommends") {
- parseDependencyEntries(& productPtr->recommends, child);
- }
- else if (name == "suggests") {
- parseDependencyEntries(& productPtr->suggests, child);
- }
- else if (name == "supplements") {
- parseDependencyEntries(& productPtr->supplements, child);
- }
- else if (name == "enhances") {
- parseDependencyEntries(& productPtr->enhances, child);
- }
- else if (name == "freshens") {
- parseDependencyEntries(& productPtr->freshens, child);
- }
- else {
- WAR << "XML <data> contains the unknown element <" << name << "> "
- << _helper.positionInfo(child) << ", skipping" << endl;
- }
}
}
return productPtr;
{
}
-void parseResObjectEntries( XMLResObjectData *data, xmlNodePtr depNode)
+
+void
+XMLResObjectParser::parseResObjectCommonData( XMLResObjectData_Ptr dataPtr, xmlNodePtr node)
{
- xml_assert(data);
- xml_assert(depNode);
-
+ xml_assert(node);
+
+ for (xmlNodePtr child = node->children; child != 0; child = child ->next)
+ {
+ if (_helper.isElement(child))
+ {
+ string name = _helper.name(child);
+
+ if (name == "name") {
+ dataPtr->name = _helper.content(child);
+ }
+ else if (name == "arch") {
+ dataPtr->arch = _helper.content(child);
+ }
+ else if (name == "version") {
+ dataPtr->epoch = _helper.attribute(child,"epoch");
+ dataPtr->ver = _helper.attribute(child,"ver");
+ dataPtr->rel = _helper.attribute(child,"rel");
+ }
+ }
+ }
+}
+
+void
+ XMLResObjectParser::parseDependencies( XMLResObjectData_Ptr dataPtr, xmlNodePtr node)
+{
+ xml_assert(node);
+
+ for (xmlNodePtr child = node->children; child != 0; child = child ->next)
+ {
+ if (_helper.isElement(child))
+ {
+ string name = _helper.name(child);
+ if (name == "provides") {
+ parseDependencyEntries(& dataPtr->provides, child);
+ }
+ else if (name == "conflicts") {
+ parseDependencyEntries(& dataPtr->conflicts, child);
+ }
+ else if (name == "obsoletes") {
+ parseDependencyEntries(& dataPtr->obsoletes, child);
+ }
+ else if (name == "prerequires") {
+ parseDependencyEntries(& dataPtr->prerequires, child);
+ }
+ else if (name == "requires") {
+ parseDependencyEntries(& dataPtr->requires, child);
+ }
+ else if (name == "recommends") {
+ parseDependencyEntries(& dataPtr->recommends, child);
+ }
+ else if (name == "suggests") {
+ parseDependencyEntries(& dataPtr->suggests, child);
+ }
+ else if (name == "supplements") {
+ parseDependencyEntries(& dataPtr->supplements, child);
+ }
+ else if (name == "enhances") {
+ parseDependencyEntries(& dataPtr->enhances, child);
+ }
+ else if (name == "freshens") {
+ parseDependencyEntries(& dataPtr->freshens, child);
+ }
+ }
+ }
}
XMLResObjectParser::parseDependencyEntries(list<XMLDependency> *depList,
xmlNodePtr depNode)
{
- xml_assert(depList);
xml_assert(depNode);
for (xmlNodePtr child = depNode->children; child != 0; child = child ->next)
}
else
{
- WAR << "XML dependency within <format> contains the unknown element <" << name << "> "
+ WAR << "XML dependency contains the unknown element <" << name << "> "
<< _helper.positionInfo(child) << ", skipping" << endl;
}
}
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
-/** \file zypp/parser/yum/XMLResObjectParser.h
+/** \file zypp/parser/xmlstore/XMLResObjectParser.h
*
*/
virtual ~XMLResObjectParser();
protected:
- // FIXME move needed method to a common class, inherit it
- friend class XMLProductParser;
-// friend class XMLPatternParser;
- //void parseResObjectEntries( XMLResObjectData *data, xmlNodePtr depNode);
+ void parseResObjectCommonData( XMLResObjectData_Ptr dataPtr, xmlNodePtr node);
+ void parseDependencies( XMLResObjectData_Ptr dataPtr, xmlNodePtr depNode);
void parseDependencyEntries(std::list<XMLDependency> *depList, xmlNodePtr depNode);
LibXMLHelper _helper;
};
// now process the atoms
ResObject::Ptr atom;
- for (std::list<shared_ptr<XMLPatchAtomData> >::const_iterator it = parsed.atoms.begin(); it != parsed.atoms.end(); it++)
+ for (std::list<XMLPatchAtomData_Ptr >::const_iterator it = parsed.atoms.begin(); it != parsed.atoms.end(); it++)
{
switch ((*it)->atomType())
{
// the patch require the atom, the atom require and freshens the package.
// get the parsed patch atom data
- shared_ptr<XMLPatchAtomData> atom_data = dynamic_pointer_cast<XMLPatchAtomData>(*it);
+ XMLPatchAtomData_Ptr atom_data = dynamic_pointer_cast<XMLPatchAtomData>(*it);
atom = createAtom(*atom_data);
impl->_atoms.push_back(atom);
break;
}
case XMLPatchAtomData::Message:
{
- shared_ptr<XMLPatchMessageData> message_data = dynamic_pointer_cast<XMLPatchMessageData>(*it);
+ XMLPatchMessageData_Ptr message_data = dynamic_pointer_cast<XMLPatchMessageData>(*it);
atom = createMessage(*message_data);
impl->_atoms.push_back(atom);
break;
}
case XMLPatchAtomData::Script:
{
- shared_ptr<XMLPatchScriptData> script_data = dynamic_pointer_cast<XMLPatchScriptData>(*it);
+ XMLPatchScriptData_Ptr script_data = dynamic_pointer_cast<XMLPatchScriptData>(*it);
atom = createScript(*script_data);
impl->_atoms.push_back(atom);
break;