added exception handling
authorJiri Srain <jsrain@suse.cz>
Wed, 30 Nov 2005 10:41:17 +0000 (10:41 +0000)
committerJiri Srain <jsrain@suse.cz>
Wed, 30 Nov 2005 10:41:17 +0000 (10:41 +0000)
zypp/source/yum/YUMPackageImpl.cc
zypp/source/yum/YUMPackageImpl.h
zypp/source/yum/YUMPatchImpl.cc
zypp/source/yum/YUMSource.cc
zypp/source/yum/YUMSource.h

index 688c771..d33abf6 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "zypp/source/yum/YUMPackageImpl.h"
 #include "zypp/base/String.h"
+#include "zypp/base/Logger.h"
 
 using namespace std;
 using namespace zypp::detail;
@@ -34,7 +35,9 @@ namespace zypp
       /** Default ctor
       */
       YUMPackageImpl::YUMPackageImpl(
-       const zypp::parser::yum::YUMPrimaryData & parsed
+       const zypp::parser::yum::YUMPrimaryData & parsed,
+       const zypp::parser::yum::YUMFileListData & filelist,
+       const zypp::parser::yum::YUMOtherData & other
       )
       : _summary(parsed.summary),
        _description(),
@@ -68,7 +71,12 @@ namespace zypp
 #endif
       {
        _description.push_back(parsed.description);
-// TODO files
+       for (std::list<FileData>::const_iterator it = filelist.files.begin();
+            it != filelist.files.end();
+            it++)
+       {
+         _filenames.push_back(it->name);
+       }
 // TODO changelog
       }
 
index a8d1d0d..905c486 100644 (file)
@@ -36,7 +36,9 @@ namespace zypp
        /** Default ctor
        */
        YUMPackageImpl(
-         const zypp::parser::yum::YUMPrimaryData & parsed
+         const zypp::parser::yum::YUMPrimaryData & parsed,
+         const zypp::parser::yum::YUMFileListData & filelist,
+         const zypp::parser::yum::YUMOtherData & other
        );
        YUMPackageImpl(
          const zypp::parser::yum::YUMPatchPackage & parsed
index ed2aa87..17e6884 100644 (file)
@@ -74,7 +74,7 @@ namespace zypp
        Capability cap( _f.parse(
          ResType::TraitsType::kind,
          parsed.name,
-         Rel(Rel::EQ),
+         Rel::EQ,
          Edition(parsed.ver, parsed.rel, parsed.epoch)
          ));
        for (std::list<shared_ptr<YUMPatchAtom> >::const_iterator it
index 06e5f8a..e2118a5 100644 (file)
@@ -45,87 +45,156 @@ namespace zypp
 
 
        Package::Ptr YUMSource::createPackage(
+         const zypp::parser::yum::YUMPrimaryData & parsed,
+         const zypp::parser::yum::YUMFileListData & filelist,
+         const zypp::parser::yum::YUMOtherData & other
+       )
+       {
+         try
+         {
+           shared_ptr<YUMPackageImpl> impl(
+             new YUMPackageImpl(parsed, filelist, other));
+           Dependencies _deps = createDependencies(parsed,
+                                                 ResTraits<Package>::kind);
+           Package::Ptr package = detail::makeResolvableFromImpl(
+             parsed.name,
+             Edition( parsed.ver, parsed.rel, parsed.epoch ),
+             Arch( parsed.arch ),
+             impl
+           );
+           package->setDeps(_deps);
+           return package;
+         }
+         catch (const Exception & excpt_r)
+         {
+           ERR << excpt_r << endl;
+           throw "Cannot create package object";
+         }
+       }
+
+       Package::Ptr YUMSource::createPackage(
          const zypp::parser::yum::YUMPatchPackage & parsed
        )
        {
-         shared_ptr<YUMPackageImpl> impl(new YUMPackageImpl(parsed));
-         Dependencies _deps = createDependencies(parsed,
-                                                 ResTraits<Package>::kind);
-         Package::Ptr package = detail::makeResolvableFromImpl(
-           parsed.name,
-           Edition( parsed.ver, parsed.rel, parsed.epoch ),
-           Arch( parsed.arch ),
-           impl
-         );
-         package->setDeps(_deps);
-         return package;
+         try
+         {
+           shared_ptr<YUMPackageImpl> impl(new YUMPackageImpl(parsed));
+           Dependencies _deps = createDependencies(parsed,
+                                                 ResTraits<Package>::kind);
+           Package::Ptr package = detail::makeResolvableFromImpl(
+             parsed.name,
+             Edition( parsed.ver, parsed.rel, parsed.epoch ),
+             Arch( parsed.arch ),
+             impl
+           );
+           package->setDeps(_deps);
+           return package;
+         }
+         catch (const Exception & excpt_r)
+         {
+           ERR << excpt_r << endl;
+           throw "Cannot create package object";
+         }
        }
+
        Message::Ptr YUMSource::createMessage(
          const zypp::parser::yum::YUMPatchMessage & parsed
        )
        {
-         shared_ptr<YUMMessageImpl> impl(new YUMMessageImpl(parsed));
-         Dependencies _deps = createDependencies(parsed,
-                                                 ResTraits<Message>::kind);
-         Message::Ptr message = detail::makeResolvableFromImpl(
-           parsed.name,
-           Edition( parsed.ver, parsed.rel, parsed.epoch ),
-           Arch_noarch,
-           impl
-         );
-         message->setDeps(_deps);
-         return message;
+         try
+         {
+           shared_ptr<YUMMessageImpl> impl(new YUMMessageImpl(parsed));
+           Dependencies _deps = createDependencies(parsed,
+                                                   ResTraits<Message>::kind);
+           Message::Ptr message = detail::makeResolvableFromImpl(
+             parsed.name,
+             Edition( parsed.ver, parsed.rel, parsed.epoch ),
+             Arch_noarch,
+             impl
+           );
+           message->setDeps(_deps);
+           return message;
+         }
+         catch (const Exception & excpt_r)
+         {
+           ERR << excpt_r << endl;
+           throw "Cannot create message object";
+         }
        }
 
        Script::Ptr YUMSource::createScript(
          const zypp::parser::yum::YUMPatchScript & parsed
        )
        {
-         shared_ptr<YUMScriptImpl> impl(new YUMScriptImpl(parsed));
-         Dependencies _deps = createDependencies(parsed,
-                                                 ResTraits<Script>::kind);
-         Script::Ptr script = detail::makeResolvableFromImpl(
-           parsed.name,
-           Edition( parsed.ver, parsed.rel, parsed.epoch ),
-           Arch_noarch,
-           impl
-         );
-         script->setDeps(_deps);
-         return script;
+         try
+         {
+           shared_ptr<YUMScriptImpl> impl(new YUMScriptImpl(parsed));
+           Dependencies _deps = createDependencies(parsed,
+                                                   ResTraits<Script>::kind);
+           Script::Ptr script = detail::makeResolvableFromImpl(
+             parsed.name,
+             Edition( parsed.ver, parsed.rel, parsed.epoch ),
+             Arch_noarch,
+             impl
+           );
+           script->setDeps(_deps);
+           return script;
+         }
+         catch (const Exception & excpt_r)
+         {
+           ERR << excpt_r << endl;
+           throw "Cannot create script object";
+         }
        }
 
        Product::Ptr YUMSource::createProduct(
          const zypp::parser::yum::YUMProductData & parsed
        )
        {
-         shared_ptr<YUMProductImpl> impl(new YUMProductImpl(parsed, this));
-         Dependencies _deps = createDependencies(parsed,
-                                                 ResTraits<Product>::kind);
-         Product::Ptr product = detail::makeResolvableFromImpl(
-           parsed.name,
-           Edition( parsed.ver, parsed.rel, parsed.epoch ),
-           Arch_noarch,
-           impl
-         );
-         product->setDeps(_deps);
-         return product;
+         try
+         {
+           shared_ptr<YUMProductImpl> impl(new YUMProductImpl(parsed, this));
+           Dependencies _deps = createDependencies(parsed,
+                                                   ResTraits<Product>::kind);
+           Product::Ptr product = detail::makeResolvableFromImpl(
+             parsed.name,
+             Edition( parsed.ver, parsed.rel, parsed.epoch ),
+             Arch_noarch,
+             impl
+           );
+           product->setDeps(_deps);
+           return product;
+         }
+         catch (const Exception & excpt_r)
+         {
+           ERR << excpt_r << endl;
+           throw "Cannot create product object";
+         }
        }
 
        Patch::Ptr YUMSource::createPatch(
          const zypp::parser::yum::YUMPatchData & parsed
        )
        {
-         shared_ptr<YUMPatchImpl> impl(new YUMPatchImpl(parsed, this));
-         Dependencies _deps = createDependencies(parsed,
-                                                 ResTraits<Patch>::kind);
-         Patch::Ptr patch = detail::makeResolvableFromImpl(
-           parsed.name,
-           Edition( parsed.ver, parsed.rel, parsed.epoch ),
-           Arch_noarch,
-           impl
-         );
-         patch->setDeps(_deps);
-         return patch;
+         try
+         {
+           shared_ptr<YUMPatchImpl> impl(new YUMPatchImpl(parsed, this));
+           Dependencies _deps = createDependencies(parsed,
+                                                   ResTraits<Patch>::kind);
+           Patch::Ptr patch = detail::makeResolvableFromImpl(
+             parsed.name,
+             Edition( parsed.ver, parsed.rel, parsed.epoch ),
+             Arch_noarch,
+             impl
+           );
+           patch->setDeps(_deps);
+           return patch;
+         }
+         catch (const Exception & excpt_r)
+         {
+           ERR << excpt_r << endl;
+           throw "Cannot create patch object";
+         }
        }
 
        Dependencies YUMSource::createDependencies(
index ad414e7..8993bdd 100644 (file)
@@ -44,6 +44,11 @@ namespace zypp
         YUMSource();
 
        Package::Ptr createPackage(
+         const zypp::parser::yum::YUMPrimaryData & parsed,
+         const zypp::parser::yum::YUMFileListData & filelist,
+         const zypp::parser::yum::YUMOtherData & other
+       );
+       Package::Ptr createPackage(
          const zypp::parser::yum::YUMPatchPackage & parsed
        );
        Message::Ptr createMessage(