commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r6888 - trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc


From: jan
Subject: [gnue] r6888 - trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc
Date: Mon, 10 Jan 2005 15:09:04 -0600 (CST)

Author: jan
Date: 2005-01-10 15:09:03 -0600 (Mon, 10 Jan 2005)
New Revision: 6888

Modified:
   trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py
Log:
Fix exception handling for remote and internal py_xmlrpc errors


Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py 
2005-01-10 19:26:34 UTC (rev 6887)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py 
2005-01-10 21:09:03 UTC (rev 6888)
@@ -40,6 +40,7 @@
 import types
 import mx.DateTime
 
+from gnue.common.apps import errors
 from gnue.common.rpc import client
 from gnue.common.rpc.drivers import Base
 
@@ -100,10 +101,20 @@
       # Bah! py_xmlrpc uses string exceptions!!
       if sys.exc_info () [0] == 'xmlrpc.error':
         if isinstance (sys.exc_info () [1], StringType):
+         # remote error
           parts = string.split (sys.exc_info () [1], ':', 2)
           if parts [0] == '1':
-            raise client.DistantError (parts [2])
-      raise
+            (exType, exName, exMessage, exDetail) = string.split (parts[1], 
u'\x91')
+           exDetail += u"\n" + parts[2]  
+            raise errors.RemoteError, (exType, exName, exMessage, exDetail)
+       
+       if isinstance (sys.exc_info () [1], TupleType):
+          # xmlrpc internal error
+          tuple = sys.exc_info () [1]
+          raise client.AdapterConfigurationError, (tuple [1] + \
+                " (error code: " + str(tuple[0]) +")" )
+      
+      raise client.Error, str(sys.exc_info())
 
     # check, if an object handle is sent
     # TODO: make a better check





reply via email to

[Prev in Thread] Current Thread [Next in Thread]