Author: jkupec
Date: Tue May 22 22:45:46 2007
New Revision: 5591
URL: http://svn.opensuse.org/viewcvs/zypp?rev=5591&view=rev
Log:
products.xml parser complete
Added:
trunk/libzypp/zypp/parser/yum/ProductFileReader.cc
trunk/libzypp/zypp/parser/yum/ProductFileReader.h
trunk/libzypp/zypp/parser/yum/schema/products.rnc
- copied, changed from r5589, trunk/libzypp/zypp/parser/yum/schema/product.rnc
trunk/libzypp/zypp/parser/yum/schema/products.rng
- copied, changed from r5589, trunk/libzypp/zypp/parser/yum/schema/product.rng
Removed:
trunk/libzypp/zypp/parser/yum/schema/product.rnc
trunk/libzypp/zypp/parser/yum/schema/product.rng
Modified:
trunk/libzypp/zypp/CMakeLists.txt
trunk/libzypp/zypp/parser/yum/FileReaderBase.h
trunk/libzypp/zypp/parser/yum/schema/repomd.rnc
trunk/libzypp/zypp/parser/yum/schema/repomd.rng
trunk/libzypp/zypp/source/yum/YUMResourceType.cc
trunk/libzypp/zypp/source/yum/YUMResourceType.h
trunk/libzypp/zypp2/parser/yum/YUMParser.cc
trunk/libzypp/zypp2/parser/yum/YUMParser.h
Modified: trunk/libzypp/zypp/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/CMakeLists.txt?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/CMakeLists.txt (original)
+++ trunk/libzypp/zypp/CMakeLists.txt Tue May 22 22:45:46 2007
@@ -560,6 +560,7 @@
parser/yum/FilelistsFileReader.cc
parser/yum/PatchFileReader.cc
parser/yum/PatternFileReader.cc
+ parser/yum/ProductFileReader.cc
)
SET( zypp_parser_yum_HEADERS
@@ -582,6 +583,7 @@
parser/yum/FilelistsFileReader.h
parser/yum/PatchFileReader.h
parser/yum/PatternFileReader.h
+ parser/yum/ProductFileReader.h
parser/yum/schemanames.h
)
Modified: trunk/libzypp/zypp/parser/yum/FileReaderBase.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/FileReaderBase.h?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/FileReaderBase.h (original)
+++ trunk/libzypp/zypp/parser/yum/FileReaderBase.h Tue May 22 22:45:46 2007
@@ -45,7 +45,8 @@
tag_pkgfiles,
tag_deltarpm,
tag_patchrpm,
- tag_pattern
+ tag_pattern,
+ tag_product
};
/**
Added: trunk/libzypp/zypp/parser/yum/ProductFileReader.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/ProductFileReader.cc?rev=5591&view=auto
==============================================================================
--- trunk/libzypp/zypp/parser/yum/ProductFileReader.cc (added)
+++ trunk/libzypp/zypp/parser/yum/ProductFileReader.cc Tue May 22 22:45:46 2007
@@ -0,0 +1,143 @@
+/*---------------------------------------------------------------------\
+| ____ _ __ __ ___ |
+| |__ / \ / / . \ . \ |
+| / / \ V /| _/ _/ |
+| / /__ | | | | | | |
+| /_____||_| |_| |_| |
+| |
+\---------------------------------------------------------------------*/
+
+#include "zypp/base/Logger.h"
+#include "zypp/parser/yum/ProductFileReader.h"
+
+#undef ZYPP_BASE_LOGGER_LOGGROUP
+#define ZYPP_BASE_LOGGER_LOGGROUP "parser"
+
+using namespace std;
+using namespace zypp::xml;
+
+namespace zypp
+{
+ namespace parser
+ {
+ namespace yum
+ {
+
+
+ ProductFileReader::ProductFileReader(const Pathname & product_file, ProcessProduct callback)
+ : _callback(callback)
+ {
+ Reader reader(product_file);
+ MIL << "Reading " << product_file << endl;
+ reader.foreachNode(bind(&ProductFileReader::consumeNode, this, _1));
+ }
+
+ // --------------------------------------------------------------------------
+
+ /*
+ * xpath and multiplicity of processed nodes are included in the code
+ * for convenience:
+ *
+ * // xpath: <xpath> (?|*|+)
+ *
+ * if multiplicity is ommited, then the node has multiplicity 'one'.
+ */
+
+ // --------------------------------------------------------------------------
+
+ bool ProductFileReader::consumeNode(Reader & reader_r)
+ {
+ // dependency block nodes
+ if (_product && consumeDependency(reader_r, _product->deps))
+ return true;
+
+ if (reader_r->nodeType() == XML_READER_TYPE_ELEMENT)
+ {
+ // xpath: /products/product
+ if (reader_r->name() == "product")
+ {
+ tag(tag_product); // just for the case of reuse somewhere/sometimes
+ _product = new data::Product;
+ return true;
+ }
+
+ // xpath: /products/product/name
+ if (reader_r->name() == "name")
+ {
+ _product->name = reader_r.nodeText().asString();
+ // TODO what's this?
+ // _product->? = reader_r->getAttribute("type").asString();
+ return true;
+ }
+
+ // xpath: /products/product/vendor
+ if (reader_r->name() == "vendor")
+ {
+ _product->vendor = reader_r.nodeText().asString();
+ }
+
+ // xpath: /products/product/version
+ if (reader_r->name() == "version")
+ {
+ _product->edition = Edition(reader_r->getAttribute("ver").asString(),
+ reader_r->getAttribute("rel").asString(),
+ reader_r->getAttribute("epoch").asString());
+ }
+
+ // xpath: /products/product/displayname (+)
+ if (reader_r->name() == "displayname")
+ {
+ Locale locale(reader_r->getAttribute("lang").asString());
+ _product->longName.setText(reader_r.nodeText().asString(), locale);
+ return true;
+ }
+
+ // xpath: /products/product/shortname (*)
+ if (reader_r->name() == "shortname")
+ {
+ Locale locale(reader_r->getAttribute("lang").asString());
+ _product->shortName.setText(reader_r.nodeText().asString(), locale);
+ return true;
+ }
+
+ // xpath: /products/product/description (+)
+ if (reader_r->name() == "description")
+ {
+ Locale locale(reader_r->getAttribute("lang").asString());
+ _product->description.setText(reader_r.nodeText().asString(), locale);
+ return true;
+ }
+ }
+
+ else if (reader_r->nodeType() == XML_READER_TYPE_END_ELEMENT)
+ {
+ // xpath: /products/product
+ if (reader_r->name() == "product")
+ {
+ if (_callback)
+ _callback(handoutProduct());
+
+ toParentTag(); // just for the case of reuse somewhere/sometimes
+
+ return true;
+ }
+ }
+
+ return true;
+ }
+
+ // --------------------------------------------------------------------------
+
+ data::Product_Ptr ProductFileReader::handoutProduct()
+ {
+ data::Product_Ptr ret;
+ ret.swap(_product);
+ return ret;
+ }
+
+
+ } // ns yum
+ } // ns parser
+} // ns zypp
+
+// vim: set ts=2 sts=2 sw=2 et ai:
Added: trunk/libzypp/zypp/parser/yum/ProductFileReader.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/ProductFileReader.h?rev=5591&view=auto
==============================================================================
--- trunk/libzypp/zypp/parser/yum/ProductFileReader.h (added)
+++ trunk/libzypp/zypp/parser/yum/ProductFileReader.h Tue May 22 22:45:46 2007
@@ -0,0 +1,88 @@
+/*---------------------------------------------------------------------\
+| ____ _ __ __ ___ |
+| |__ / \ / / . \ . \ |
+| / / \ V /| _/ _/ |
+| / /__ | | | | | | |
+| /_____||_| |_| |_| |
+| |
+\---------------------------------------------------------------------*/
+
+#ifndef ZYPP_PARSER_YUM_PRODUCTFILEREADER_H_
+#define ZYPP_PARSER_YUM_PRODUCTFILEREADER_H_
+
+#include "zypp/base/Function.h"
+#include "zypp/parser/xml/Reader.h"
+#include "zypp/parser/yum/FileReaderBase.h"
+#include "zypp/data/ResolvableData.h"
+
+namespace zypp
+{
+ namespace parser
+ {
+ namespace yum
+ {
+
+
+ /**
+ * Reader of products.xml file conforming to RNC definition located
+ * in zypp/parser/yum/schema/products.rnc
+ *
+ * \see zypp::data::Product
+ * \see zypp::parser::xml::Reader
+ */
+ class ProductFileReader : FileReaderBase
+ {
+ public:
+
+ /**
+ * Consumer callback definition. Function which will process the read
+ * data must be of this type.
+ */
+ typedef function ProcessProduct;
+
+ /**
+ * CTOR. Creates also \ref xml::Reader and starts reading.
+ *
+ * \param products_file products.xml file to read.
+ * \param callback Function which will process read data.
+ */
+ ProductFileReader(const Pathname & products_file, ProcessProduct callback);
+
+ private:
+
+ /**
+ * Callback provided to the XML reader.
+ *
+ * \param the xml reader object reading the file
+ * \return true to tell the reader to continue, false to tell it to stop
+ *
+ * \see PrimaryFileReader::consumeNode(xml::Reader)
+ */
+ bool consumeNode(xml::Reader & reader_r);
+
+ /**
+ * Creates a new \ref data::Product_Ptr, swaps its contents with \ref _product
+ * and returns it. Used to hand-out the data object to its consumer
+ * (a \ref ProcessProduct function) after it has been read.
+ */
+ data::Product_Ptr handoutProduct();
+
+ private:
+ /**
+ * Callback for processing product metadata.
+ */
+ ProcessProduct _callback;
+
+ /**
+ * Pointer to the \ref zypp::data::Product object for storing the product
+ * metada.
+ */
+ data::Product_Ptr _product;
+ };
+
+
+ } // ns yum
+ } // ns parser
+} // ns zypp
+
+#endif /*ZYPP_PARSER_YUM_PRODUCTFILEREADER_H_*/
Copied: trunk/libzypp/zypp/parser/yum/schema/products.rnc (from r5589, trunk/libzypp/zypp/parser/yum/schema/product.rnc)
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/schema/products.rnc?p2=trunk/libzypp/zypp/parser/yum/schema/products.rnc&p1=trunk/libzypp/zypp/parser/yum/schema/product.rnc&r1=5589&r2=5591&rev=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/schema/product.rnc (original)
+++ trunk/libzypp/zypp/parser/yum/schema/products.rnc Tue May 22 22:45:46 2007
@@ -1,80 +1,25 @@
default namespace = "http://linux.duke.edu/metadata/rpm"
-namespace ns1 = "http://novell.com/package/metadata/suse/product"
+namespace ns1 = "http://novell.com/package/metadata/suse/products"
-include "rpm-ns.rnc"
+include "suse-primary.rnc" {
+ start = products
+}
-start =
-element ns1:product {
- attribute type { text },
- element ns1:vendor { text },
- element ns1:name { text },
- element ns1:version {
- attribute epoch { xsd:nonNegativeInteger },
- attribute ver { text },
- attribute rel { text }
- },
- element ns1:displayname {
- attribute lang { text },
- text
- }+,
- element ns1:shortname {
- attribute lang { text },
- text
- }*,
- element ns1:description {
- attribute lang { text },
- text
- }+,
- element provides {
- (
- element entry {
- attribute-kind?,
- attribute-name,
- (
- shared-entry-attributes,
- attribute-flags-provides
- )?,
- empty
- } |
- element-capability
- )+
- }?,
- element conflicts {
- usual-entry-or-capability+
- }?,
- element obsoletes {
- (
- element entry {
- attribute-kind?,
- attribute-name,
- (
- shared-entry-attributes,
- attribute-flags-obsoletes
- )?,
- empty
- } |
- element-capability
- )+
- }?,
- element requires {
- (
- element entry {
- attribute pre { "1" | "0" }?,
- usual-entry-content
- } |
- element-capability
- )*
- }?,
- element recommends {
- usual-entry-or-capability*
- }?,
- element enhances {
- usual-entry-or-capability*
- }?,
- element supplements {
- usual-entry-or-capability*
- }?,
- element suggests {
- usual-entry-or-capability*
- }?
+products = element ns1:products {
+ element ns1:product {
+ attribute type { text },
+ element ns1:vendor { text },
+ element ns1:name { text },
+ element ns1:version {
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }
+ },
+ element ns1:displayname { localized-string }+,
+ element ns1:shortname { localized-string }*,
+ element ns1:description { localized-string }+,
+ dependencies
+ }+
}
+
+
Copied: trunk/libzypp/zypp/parser/yum/schema/products.rng (from r5589, trunk/libzypp/zypp/parser/yum/schema/product.rng)
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/schema/products.rng?p2=trunk/libzypp/zypp/parser/yum/schema/products.rng&p1=trunk/libzypp/zypp/parser/yum/schema/product.rng&r1=5589&r2=5591&rev=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/schema/product.rng (original)
+++ trunk/libzypp/zypp/parser/yum/schema/products.rng Tue May 22 22:45:46 2007
@@ -1,135 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:ns1="http://novell.com/package/metadata/suse/product" ns="http://linux.duke.edu/metadata/rpm" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
- <include href="rpm-ns.rng"/>
- <start>
- <element name="ns1:product">
- <attribute name="type"/>
- <element name="ns1:vendor">
- <text/>
- </element>
- <element name="ns1:name">
- <text/>
- </element>
- <element name="ns1:version">
- <attribute name="epoch">
- <data type="nonNegativeInteger"/>
- </attribute>
- <attribute name="ver"/>
- <attribute name="rel"/>
- </element>
+<grammar xmlns:ns1="http://novell.com/package/metadata/suse/products" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href="suse-primary.rng">
+ <start>
+ <ref name="products"/>
+ </start>
+ </include>
+ <define name="products">
+ <element name="ns1:products">
<oneOrMore>
- <element name="ns1:displayname">
- <attribute name="lang"/>
- <text/>
- </element>
- </oneOrMore>
- <zeroOrMore>
- <element name="ns1:shortname">
- <attribute name="lang"/>
- <text/>
- </element>
- </zeroOrMore>
- <oneOrMore>
- <element name="ns1:description">
- <attribute name="lang"/>
- <text/>
- </element>
- </oneOrMore>
- <optional>
- <element name="provides">
- <oneOrMore>
- <choice>
- <element name="entry">
- <optional>
- <ref name="attribute-kind"/>
- </optional>
- <ref name="attribute-name"/>
- <optional>
- <ref name="shared-entry-attributes"/>
- <ref name="attribute-flags-provides"/>
- </optional>
- <empty/>
- </element>
- <ref name="element-capability"/>
- </choice>
- </oneOrMore>
- </element>
- </optional>
- <optional>
- <element name="conflicts">
+ <element name="ns1:product">
+ <attribute name="type"/>
+ <element name="ns1:vendor">
+ <text/>
+ </element>
+ <element name="ns1:name">
+ <text/>
+ </element>
+ <element name="ns1:version">
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ </element>
<oneOrMore>
- <ref name="usual-entry-or-capability"/>
+ <element name="ns1:displayname">
+ <ref name="localized-string"/>
+ </element>
</oneOrMore>
- </element>
- </optional>
- <optional>
- <element name="obsoletes">
- <oneOrMore>
- <choice>
- <element name="entry">
- <optional>
- <ref name="attribute-kind"/>
- </optional>
- <ref name="attribute-name"/>
- <optional>
- <ref name="shared-entry-attributes"/>
- <ref name="attribute-flags-obsoletes"/>
- </optional>
- <empty/>
- </element>
- <ref name="element-capability"/>
- </choice>
- </oneOrMore>
- </element>
- </optional>
- <optional>
- <element name="requires">
- <zeroOrMore>
- <choice>
- <element name="entry">
- <optional>
- <attribute name="pre">
- <choice>
- <value>1</value>
- <value>0</value>
- </choice>
- </attribute>
- </optional>
- <ref name="usual-entry-content"/>
- </element>
- <ref name="element-capability"/>
- </choice>
- </zeroOrMore>
- </element>
- </optional>
- <optional>
- <element name="recommends">
- <zeroOrMore>
- <ref name="usual-entry-or-capability"/>
- </zeroOrMore>
- </element>
- </optional>
- <optional>
- <element name="enhances">
- <zeroOrMore>
- <ref name="usual-entry-or-capability"/>
- </zeroOrMore>
- </element>
- </optional>
- <optional>
- <element name="supplements">
- <zeroOrMore>
- <ref name="usual-entry-or-capability"/>
- </zeroOrMore>
- </element>
- </optional>
- <optional>
- <element name="suggests">
<zeroOrMore>
- <ref name="usual-entry-or-capability"/>
+ <element name="ns1:shortname">
+ <ref name="localized-string"/>
+ </element>
</zeroOrMore>
+ <oneOrMore>
+ <element name="ns1:description">
+ <ref name="localized-string"/>
+ </element>
+ </oneOrMore>
+ <ref name="dependencies"/>
</element>
- </optional>
+ </oneOrMore>
</element>
- </start>
+ </define>
</grammar>
Modified: trunk/libzypp/zypp/parser/yum/schema/repomd.rnc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/schema/repomd.rnc?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/schema/repomd.rnc (original)
+++ trunk/libzypp/zypp/parser/yum/schema/repomd.rnc Tue May 22 22:45:46 2007
@@ -2,7 +2,7 @@
element repomd {
element data {
- attribute type { "other" | "filelists" | "primary" | "group" | "product" | "patches" | "patterns" }&
+ attribute type { "other" | "filelists" | "primary" | "group" | "products" | "patches" | "patterns" }&
element location {
attribute xml:base { xsd:anyURI }?,
attribute href { xsd:anyURI },
Modified: trunk/libzypp/zypp/parser/yum/schema/repomd.rng
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/schema/repomd.rng?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/schema/repomd.rng (original)
+++ trunk/libzypp/zypp/parser/yum/schema/repomd.rng Tue May 22 22:45:46 2007
@@ -10,7 +10,7 @@
<value>filelists</value>
<value>primary</value>
<value>group</value>
- <value>product</value>
+ <value>products</value>
<value>patches</value>
<value>patterns</value>
</choice>
Modified: trunk/libzypp/zypp/source/yum/YUMResourceType.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/source/yum/YUMResourceType.cc?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/source/yum/YUMResourceType.cc (original)
+++ trunk/libzypp/zypp/source/yum/YUMResourceType.cc Tue May 22 22:45:46 2007
@@ -28,8 +28,8 @@
const YUMResourceType YUMResourceType::GROUP(YUMResourceType::GROUP_e);
const YUMResourceType YUMResourceType::PATCHES(YUMResourceType::PATCHES_e);
const YUMResourceType YUMResourceType::PATCH(YUMResourceType::PATCH_e);
- const YUMResourceType YUMResourceType::PRODUCT(YUMResourceType::PRODUCT_e);
- const YUMResourceType YUMResourceType::PATTERN(YUMResourceType::PATTERN_e);
+ const YUMResourceType YUMResourceType::PRODUCTS(YUMResourceType::PRODUCTS_e);
+ const YUMResourceType YUMResourceType::PATTERNS(YUMResourceType::PATTERNS_e);
YUMResourceType::YUMResourceType(const std::string & strval_r)
@@ -48,8 +48,8 @@
_table["group"] = YUMResourceType::GROUP_e;
_table["patches"] = YUMResourceType::PATCHES_e;
_table["patch"] = YUMResourceType::PATCH_e;
- _table["product"] = YUMResourceType::PRODUCT_e;
- _table["patterns"] = YUMResourceType::PATTERN_e;
+ _table["products"] = YUMResourceType::PRODUCTS_e;
+ _table["patterns"] = YUMResourceType::PATTERNS_e;
_table["NONE"] = _table["none"] = YUMResourceType::NONE_e;
}
@@ -77,8 +77,8 @@
_table[GROUP_e] = "group";
_table[PATCHES_e] = "patches";
_table[PATCH_e] = "patch";
- _table[PRODUCT_e] = "product";
- _table[PATTERN_e] = "patterns";
+ _table[PRODUCTS_e] = "products";
+ _table[PATTERNS_e] = "patterns";
_table[NONE_e] = "NONE";
}
return _table[_type];
Modified: trunk/libzypp/zypp/source/yum/YUMResourceType.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/source/yum/YUMResourceType.h?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp/source/yum/YUMResourceType.h (original)
+++ trunk/libzypp/zypp/source/yum/YUMResourceType.h Tue May 22 22:45:46 2007
@@ -33,8 +33,8 @@
static const YUMResourceType GROUP;
static const YUMResourceType PATCHES; // suse extension
static const YUMResourceType PATCH; // suse extension
- static const YUMResourceType PRODUCT; // suse extension
- static const YUMResourceType PATTERN; // suse extension
+ static const YUMResourceType PRODUCTS; // suse extension
+ static const YUMResourceType PATTERNS; // suse extension
enum Type
{
@@ -46,8 +46,8 @@
GROUP_e,
PATCHES_e,
PATCH_e,
- PRODUCT_e,
- PATTERN_e
+ PRODUCTS_e,
+ PATTERNS_e
};
YUMResourceType(Type type) : _type(type) {}
Modified: trunk/libzypp/zypp2/parser/yum/YUMParser.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp2/parser/yum/YUMParser.cc?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp2/parser/yum/YUMParser.cc (original)
+++ trunk/libzypp/zypp2/parser/yum/YUMParser.cc Tue May 22 22:45:46 2007
@@ -7,8 +7,7 @@
| |
\---------------------------------------------------------------------*/
-#include "zypp/ZYpp.h"
-#include "zypp/ZYppFactory.h"
+#include <iostream>
#include "zypp/base/Logger.h"
#include "zypp/parser/yum/RepomdFileReader.h"
@@ -16,6 +15,7 @@
#include "zypp/parser/yum/PatchesFileReader.h"
#include "zypp/parser/yum/PatchFileReader.h"
#include "zypp/parser/yum/PatternFileReader.h"
+#include "zypp/parser/yum/ProductFileReader.h"
#include "zypp/parser/yum/OtherFileReader.h"
#include "zypp/parser/yum/FilelistsFileReader.h"
@@ -35,7 +35,7 @@
// TODO make this through ZYppCallbacks.h
bool progress_function(ProgressData::value_type p)
{
- cout << "Parsing $name_would_come_in_handy [" << p << "%]" << endl;
+ std::cout << "Parsing $name_would_come_in_handy [" << p << "%]" << endl;
// cout << "\rParsing $name_would_come_in_handy [" << p << "%]" << flush;
return true;
}
@@ -143,14 +143,23 @@
// -------------------------------------------------------------------------
- bool YUMParser::pattern_CB(const data::Pattern_Ptr & pattern_ptr)
+ bool YUMParser::pattern_CB(const data::Pattern_Ptr & product_ptr)
{
- _consumer.consumePattern(_catalog_id, pattern_ptr);
+ _consumer.consumePattern(_catalog_id, product_ptr);
- DBG << "got pattern "
- << pattern_ptr->name << pattern_ptr->edition << " "
- << pattern_ptr->arch
- << endl;
+ MIL << "got pattern " << product_ptr->name << endl;
+
+ return true;
+ }
+
+ // -------------------------------------------------------------------------
+
+ bool YUMParser::product_CB(const data::Product_Ptr & product_ptr)
+ {
+ _consumer.consumeProduct(_catalog_id, product_ptr);
+
+ MIL << "got product " << product_ptr->name
+ << "-" << product_ptr->edition << endl;
return true;
}
@@ -235,7 +244,7 @@
break;
}
- case YUMResourceType::PATTERN_e:
+ case YUMResourceType::PATTERNS_e:
{
zypp::parser::yum::PatternFileReader(
cache_dir + job.filename(),
@@ -243,6 +252,14 @@
break;
}
+ case YUMResourceType::PRODUCTS_e:
+ {
+ zypp::parser::yum::ProductFileReader(
+ cache_dir + job.filename(),
+ bind(&YUMParser::product_CB, this, _1));
+ break;
+ }
+
default:
{
WAR << "Don't know how to read "
Modified: trunk/libzypp/zypp2/parser/yum/YUMParser.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp2/parser/yum/YUMParser.h?rev=5591&r1=5590&r2=5591&view=diff
==============================================================================
--- trunk/libzypp/zypp2/parser/yum/YUMParser.h (original)
+++ trunk/libzypp/zypp2/parser/yum/YUMParser.h Tue May 22 22:45:46 2007
@@ -72,6 +72,7 @@
*
* \see RepomdFileReader, PrimaryFileReader, OtherFileReader
* \see FilelistsFileReader, PatchesFileReader, PatchFileReader
+ * \see PatternFileReader, ProductFileReader
*/
class YUMParser
{
@@ -169,6 +170,14 @@
*/
bool pattern_CB(const data::Pattern_Ptr & pattern_ptr);
+ /**
+ * Callback for processing data returned from \ref ProductFileReader.
+ * Uses \ref _consumer to process read product.
+ *
+ * \param product_ptr pointer to product data object
+ */
+ bool product_CB(const data::Product_Ptr & product_ptr);
+
private:
/** Object for processing the read data */
data::ResolvableDataConsumer & _consumer;
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org