diff src/bridge/bridge_constructor/dbus_frontend_template.py @ 1062:95758ef3faa8

bridge: async failures are more detailed (full class name + error message)
author souliane <souliane@mailoo.org>
date Sat, 07 Jun 2014 15:20:39 +0200
parents 301b342c697a
children d123d61976c8
line wrap: on
line diff
--- a/src/bridge/bridge_constructor/dbus_frontend_template.py	Mon Jun 02 19:25:06 2014 +0200
+++ b/src/bridge/bridge_constructor/dbus_frontend_template.py	Sat Jun 07 15:20:39 2014 +0200
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from sat.core.i18n import _
-from bridge_frontend import BridgeFrontend
+from bridge_frontend import BridgeFrontend, BridgeException
 import dbus
 from sat.core.log import getLogger
 log = getLogger(__name__)
@@ -34,6 +34,16 @@
 const_PLUGIN_SUFFIX = ".plugin"
 
 
+def dbus_to_bridge_exception(dbus_e):
+    """Convert a DBusException to a BridgeException.
+
+    @param dbus_e (DBusException)
+    @return: BridgeException
+    """
+    name = dbus_e.get_dbus_name()[len(const_ERROR_PREFIX) + 1:]
+    return BridgeException(name, dbus_e.get_dbus_message())
+
+
 class DBusBridgeFrontend(BridgeFrontend):
     def __init__(self):
         try:
@@ -91,7 +101,7 @@
 
                 if async:
                     kwargs['reply_handler'] = _callback
-                    kwargs['error_handler'] = lambda err: _errback(err._dbus_error_name[len(const_ERROR_PREFIX) + 1:])
+                    kwargs['error_handler'] = lambda err: _errback(dbus_to_bridge_exception(err))
 
                 return method(*args, **kwargs)