Added Product::updateUrls, from content/UPDATEURLS (#163192).
authorMartin Vidner <mvidner@suse.cz>
Mon, 10 Apr 2006 08:37:41 +0000 (08:37 +0000)
committerMartin Vidner <mvidner@suse.cz>
Mon, 10 Apr 2006 08:37:41 +0000 (08:37 +0000)
package/libzypp.changes
zypp/Product.cc
zypp/Product.h
zypp/detail/ProductImplIf.cc
zypp/detail/ProductImplIf.h
zypp/source/susetags/ProductMetadataParser.cc
zypp/source/susetags/SuseTagsProductImpl.cc
zypp/source/susetags/SuseTagsProductImpl.h
zypp/target/store/serialize.cc

index a970486..33d00a4 100644 (file)
@@ -1,4 +1,10 @@
 -------------------------------------------------------------------
+Mon Apr 10 10:32:22 CEST 2006 - mvidner@suse.cz
+
+- Added Product::updateUrls, from content/UPDATEURLS (#163192).
+- rev 3024
+
+-------------------------------------------------------------------
 Sat Apr  8 12:03:37 CEST 2006 - schubi@suse.de
 
 - Bug 164440; Taking wrong architecture while updating obsoletes
index e57c13d..cb9bc68 100644 (file)
@@ -53,6 +53,9 @@ namespace zypp
   Url Product::releaseNotesUrl() const
   { return pimpl().releaseNotesUrl(); }
 
+  std::list<Url> Product::updateUrls() const
+  { return pimpl().updateUrls(); }
+
   std::list<std::string> Product::flags() const
   { return pimpl().flags(); }
 
index 1e47b79..6d23c8a 100644 (file)
@@ -49,6 +49,10 @@ namespace zypp
     /** The URL to download the release notes for this product */
     Url releaseNotesUrl() const;
 
+    /** Online updates for the product.
+       They are complementary, not alternatives. #163192 */
+    std::list<Url> updateUrls() const;
+
     /** The product flags */
     std::list<std::string> flags() const;
 
index 64894a0..5d0adf8 100644 (file)
@@ -31,6 +31,9 @@ namespace zypp
       Url ProductImplIf::releaseNotesUrl() const
       { return Url(); }
 
+      std::list<Url> ProductImplIf::updateUrls() const
+      { return std::list<Url>(); }
+
       std::list<std::string> ProductImplIf::flags() const
       { return std::list<std::string>(); }
       
index a4e5b3d..34e862b 100644 (file)
@@ -50,6 +50,7 @@ namespace zypp
 
       virtual Url releaseNotesUrl() const PURE_VIRTUAL;
 
+      virtual std::list<Url> updateUrls() const PURE_VIRTUAL;
       /** The product flags */
       virtual std::list<std::string> flags() const PURE_VIRTUAL;
 
index 5d33b65..f41df22 100644 (file)
@@ -109,6 +109,28 @@ namespace zypp
                    prodImpl->_release_notes_url = Url();
                }
            }
+           else if(key == "UPDATEURL")
+           {
+               std::list<std::string> items;
+               boost::algorithm::split(items, value, is_space());
+               std::list<std::string>::const_iterator
+                   b = items.begin(),
+                   e = items.end(),
+                   i;
+               for (i = b; i != e; ++i)
+               {
+                   // Url class throws in case of invalid URL
+                   try
+                   {
+                       Url url = *i;
+                       prodImpl->_update_urls.push_back( url );
+                   }
+                   catch( ... )
+                   {
+                       // do not add
+                   }
+               }
+           }
             else if(key == "ARCH")
               parseLine( key, modifier, value, prodImpl->_arch);
             else if(key == "DEFAULTBASE")
index 3a920f4..e97cda9 100644 (file)
@@ -53,6 +53,9 @@ namespace zypp
     Url SuseTagsProductImpl::releaseNotesUrl() const
     { return _release_notes_url; }
 
+    std::list<Url> SuseTagsProductImpl::updateUrls() const
+    { return _update_urls; }
+
     std::list<std::string> SuseTagsProductImpl::flags() const
     { return _flags; }
 
index 4007727..ddf4e32 100644 (file)
@@ -46,6 +46,7 @@ namespace zypp
       virtual TranslatedText summary() const;
       virtual Source_Ref source() const;
       virtual Url releaseNotesUrl() const;
+      virtual std::list<Url> updateUrls() const;
       virtual std::list<std::string> flags() const;
       virtual TranslatedText shortName() const;
 
@@ -61,6 +62,7 @@ namespace zypp
       std::string _shortlabel;
       std::string _vendor;
       Url _release_notes_url;
+      std::list<Url> _update_urls;
       std::map< std::string, std::list<std::string> > _arch;   // map of 'arch : "arch1 arch2 arch3"', arch1 being 'best', arch3 being 'noarch' (ususally)
       std::string _default_base;
       Dependencies _deps;
index 74d7b14..199af81 100644 (file)
@@ -309,6 +309,13 @@ std::string toXML( const Product::constPtr &obj )
   out << "  <vendor>" << xml_escape(obj->vendor()) << "</vendor>" << std::endl;
   out << "  <source>" << xml_escape(obj->source().alias()) << "</source>" << std::endl;  
   out << "  <release-notes-url>" << xml_escape(obj->releaseNotesUrl().asString()) << "</release-notes-url>" << std::endl;
+  out << "  <update-urls>" << std::endl;
+  std::list<Url> updateUrls = obj->updateUrls();
+  for ( std::list<Url>::const_iterator it = updateUrls.begin(); it != updateUrls.end(); ++it)
+  {
+    out << "    <update-url>" << xml_escape(it->asString()) << "</update-url>" << std::endl; 
+  }
+  out << "  </update-urls>" << std::endl;
   out << "  <product-flags>" << std::endl;
   std::list<std::string> flags = obj->flags();
   for ( std::list<std::string>::const_iterator it = flags.begin(); it != flags.end(); ++it)