Call acquireDatabase() in OfflineLogic API functions 58/32958/2
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tue, 30 Dec 2014 13:11:16 +0000 (14:11 +0100)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tue, 30 Dec 2014 18:24:33 +0000 (19:24 +0100)
Call of OfflineLogic::acquireDatabase() has been moved from
centralized point in Logic to every single call of OfflineLogic
API functions, because some functions does not require database.
So there is no need to load it.

Now database is loaded only in case, when it is needed.

Change-Id: I26131a257e85c79b97a96a748b4eb22ea96dd531

src/admin/logic/Logic.cpp
src/admin/logic/OfflineLogic.cpp
src/admin/logic/OfflineLogic.h

index 3f23370..ade44e6 100644 (file)
@@ -88,7 +88,6 @@ int Logic::erasePolicies(const PolicyBucketId &startBucket, bool recursive,
 int Logic::callApiFunction(std::function<int(ApiInterface *api)> apiCall) {
     FileLock lock(m_lockable);
     if (lock.tryLock() == true) {
-        m_offlineLogic->acquireDatabase();
         LOGI("Admin uses offline API");
         return apiCall(m_offlineLogic);
     } else {
index c860ad8..64f6b5c 100644 (file)
@@ -49,6 +49,7 @@ void OfflineLogic::acquireDatabase(void) {
 int OfflineLogic::setPolicies(const ApiInterface::PoliciesByBucket &insertOrUpdate,
                               const ApiInterface::KeysByBucket &remove) {
     try {
+        acquireDatabase();
         m_storage->insertPolicies(insertOrUpdate);
         m_storage->deletePolicies(remove);
         onPoliciesChanged();
@@ -64,6 +65,7 @@ int OfflineLogic::setPolicies(const ApiInterface::PoliciesByBucket &insertOrUpda
 int OfflineLogic::insertOrUpdateBucket(const PolicyBucketId &bucket,
                                        const PolicyResult &policyResult) {
     try {
+        acquireDatabase();
         m_storage->addOrUpdateBucket(bucket, policyResult);
         onPoliciesChanged();
     } catch (const DefaultBucketSetNoneException &) {
@@ -79,6 +81,7 @@ int OfflineLogic::insertOrUpdateBucket(const PolicyBucketId &bucket,
 
 int OfflineLogic::removeBucket(const PolicyBucketId &bucket) {
     try {
+        acquireDatabase();
         m_storage->deleteBucket(bucket);
         onPoliciesChanged();
     } catch (const BucketNotExistsException &) {
@@ -95,6 +98,7 @@ int OfflineLogic::removeBucket(const PolicyBucketId &bucket) {
 int OfflineLogic::adminCheck(const PolicyBucketId &startBucket, bool recursive,
                              const PolicyKey &key, PolicyResult &result) {
     try {
+        acquireDatabase();
         result = m_storage->checkPolicy(key, startBucket, recursive);
     } catch (const BucketNotExistsException &ex) {
         return CYNARA_API_BUCKET_NOT_FOUND;
@@ -111,6 +115,7 @@ int OfflineLogic::listDescriptions(std::vector<PolicyDescription> &descriptions)
 int OfflineLogic::listPolicies(const PolicyBucketId &bucket, const PolicyKey &filter,
                                std::vector<Policy> &policies) {
     try {
+        acquireDatabase();
         policies = m_storage->listPolicies(bucket, filter);
     } catch (const BucketNotExistsException &ex) {
         return CYNARA_API_BUCKET_NOT_FOUND;
@@ -122,6 +127,7 @@ int OfflineLogic::listPolicies(const PolicyBucketId &bucket, const PolicyKey &fi
 int OfflineLogic::erasePolicies(const PolicyBucketId &startBucket, bool recursive,
                                 const PolicyKey &filter) {
     try {
+        acquireDatabase();
         m_storage->erasePolicies(startBucket, recursive, filter);
         onPoliciesChanged();
     } catch (const BucketNotExistsException &) {
index fc04d5e..2028f4e 100644 (file)
@@ -38,8 +38,6 @@ class OfflineLogic : public ApiInterface {
 public:
     OfflineLogic();
 
-    void acquireDatabase(void);
-
     int setPolicies(const ApiInterface::PoliciesByBucket &insertOrUpdate,
                     const ApiInterface::KeysByBucket &remove);
     int insertOrUpdateBucket(const PolicyBucketId &bucket,
@@ -54,6 +52,7 @@ public:
                       const PolicyKey &filter);
 
 protected:
+    void acquireDatabase(void);
     void onPoliciesChanged(void);
 
 private: