Add PluginErrorException 52/28452/8
authorZofia Abramowska <z.abramowska@samsung.com>
Tue, 7 Oct 2014 12:46:47 +0000 (14:46 +0200)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Thu, 16 Oct 2014 11:11:47 +0000 (04:11 -0700)
Add exception class for plugin processing error.

Change-Id: I26090bd3a54bdbc4767fd05735b5b06fae523b2f

src/common/exceptions/PluginErrorException.h [new file with mode: 0644]
src/service/logic/Logic.cpp

diff --git a/src/common/exceptions/PluginErrorException.h b/src/common/exceptions/PluginErrorException.h
new file mode 100644 (file)
index 0000000..a29eab5
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/**
+ * @file        src/common/exceptions/PluginErrorException.h
+ * @author      Zofia Abramowska <z.abramowska@samsung.com>
+ * @version     1.0
+ * @brief       Implementation of PluginErrorException
+ */
+#ifndef SRC_COMMON_EXCEPTIONS_PLUGINERROREXCEPTION_H_
+#define SRC_COMMON_EXCEPTIONS_PLUGINERROREXCEPTION_H_
+
+#include <exceptions/Exception.h>
+#include <types/PolicyKey.h>
+
+namespace Cynara {
+
+class PluginErrorException : public Exception {
+public:
+    PluginErrorException(const PolicyKey &key) {
+        m_message = "Plugin couldn't get result for user <" + key.user().toString() + ">, "
+                    "client <" + key.client().toString() + ">, "
+                    "privilege <" + key.privilege().toString() + ">";
+    }
+
+    const std::string message(void) const {
+        return m_message;
+    }
+
+private:
+    std::string m_message;
+};
+
+} // namespace Cynara
+
+#endif // SRC_COMMON_EXCEPTIONS_PLUGINERROREXCEPTION_H_
index 60a0cce..1787575 100644 (file)
 
 #include <log/log.h>
 #include <common.h>
-#include <exceptions/PluginNotFoundException.h>
 #include <exceptions/BucketNotExistsException.h>
 #include <exceptions/DefaultBucketDeletionException.h>
 #include <exceptions/DefaultBucketSetNoneException.h>
+#include <exceptions/PluginErrorException.h>
+#include <exceptions/PluginNotFoundException.h>
+
 #include <signal.h>
 
 #include <main/Cynara.h>
@@ -117,8 +119,7 @@ bool Logic::check(RequestContextPtr context UNUSED, const PolicyKey &key,
             //context should be saved in plugin in order to return answer when ready
             return false;
         default:
-            //todo make additional class
-            throw std::runtime_error("Plugin error");
+            throw PluginErrorException(key);
     }
 }