[gnote] Refactor GnoteSyncClient for better testability



commit 711a2c1e42ac5d3ce54620084d502a66589a33db
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sun Jun 1 20:45:03 2014 +0300

    Refactor GnoteSyncClient for better testability

 src/synchronization/gnotesyncclient.cpp |   14 +++++++++++++-
 src/synchronization/gnotesyncclient.hpp |    5 ++++-
 src/synchronization/syncmanager.cpp     |    2 +-
 3 files changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/src/synchronization/gnotesyncclient.cpp b/src/synchronization/gnotesyncclient.cpp
index fd96488..eb1495e 100644
--- a/src/synchronization/gnotesyncclient.cpp
+++ b/src/synchronization/gnotesyncclient.cpp
@@ -38,7 +38,19 @@ namespace sync {
 
   const char * GnoteSyncClient::LOCAL_MANIFEST_FILE_NAME = "manifest.xml";
 
-  GnoteSyncClient::GnoteSyncClient(NoteManagerBase & manager)
+  SyncClient::Ptr GnoteSyncClient::create(NoteManagerBase & manager)
+  {
+    GnoteSyncClient *ptr = new GnoteSyncClient;
+    ptr->init(manager);
+    return SyncClient::Ptr(ptr);
+  }
+
+  GnoteSyncClient::GnoteSyncClient()
+  {
+  }
+
+
+  void GnoteSyncClient::init(NoteManagerBase & manager)
   {
     m_local_manifest_file_path = Glib::build_filename(IGnote::conf_dir(), LOCAL_MANIFEST_FILE_NAME);
     // TODO: Why doesn't OnChanged ever get fired?!
diff --git a/src/synchronization/gnotesyncclient.hpp b/src/synchronization/gnotesyncclient.hpp
index 1cddd5b..59ffda1 100644
--- a/src/synchronization/gnotesyncclient.hpp
+++ b/src/synchronization/gnotesyncclient.hpp
@@ -32,7 +32,7 @@ namespace sync {
     : public SyncClient
   {
   public:
-    GnoteSyncClient(NoteManagerBase &);
+    static SyncClient::Ptr create(NoteManagerBase &);
 
     virtual sharp::DateTime last_sync_date() override
       {
@@ -56,9 +56,12 @@ namespace sync {
         return m_server_id;
       }
     virtual void associated_server_id(const std::string &) override;
+  protected:
+    GnoteSyncClient();
   private:
     static const char *LOCAL_MANIFEST_FILE_NAME;
 
+    void init(NoteManagerBase &);
     void note_deleted_handler(const NoteBase::Ptr &);
     void on_changed(const Glib::RefPtr<Gio::File>&, const Glib::RefPtr<Gio::File>&,
                     Gio::FileMonitorEvent);
diff --git a/src/synchronization/syncmanager.cpp b/src/synchronization/syncmanager.cpp
index 86ff9c8..2c6a05c 100644
--- a/src/synchronization/syncmanager.cpp
+++ b/src/synchronization/syncmanager.cpp
@@ -59,7 +59,7 @@ namespace sync {
 
   void SyncManager::_init(NoteManagerBase & manager)
   {
-    m_client = SyncClient::Ptr(new GnoteSyncClient(manager));
+    m_client = GnoteSyncClient::create(manager);
     // Add a "Synchronize Notes" to Gnote's Application Menu
     IActionManager & am(IActionManager::obj());
     am.add_app_action("sync-notes");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]