commit-gnue
[Top][All Lists]
Advanced

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

r5481 - in trunk/gnue-common/src/rpc/drivers: . xmlrpc/pw_xmlrpc


From: reinhard
Subject: r5481 - in trunk/gnue-common/src/rpc/drivers: . xmlrpc/pw_xmlrpc
Date: Tue, 23 Mar 2004 11:53:08 -0600 (CST)

Author: reinhard
Date: 2004-03-23 11:53:06 -0600 (Tue, 23 Mar 2004)
New Revision: 5481

Modified:
   trunk/gnue-common/src/rpc/drivers/Base.py
   trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py
   trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
Log:
Correctly transfer tracebacks over the RPC connection.


Modified: trunk/gnue-common/src/rpc/drivers/Base.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/Base.py   2004-03-23 17:05:16 UTC (rev 
5480)
+++ trunk/gnue-common/src/rpc/drivers/Base.py   2004-03-23 17:53:06 UTC (rev 
5481)
@@ -280,23 +280,21 @@
   # Return an exception
   # ---------------------------------------------------------------------------
 
-  def raiseException(self, exception, message, event=None):
+  def raiseException (self, exception, message, event=None):
     raise exception, message
 
 # =============================================================================
 # Support to pass exception over the wire
 # =============================================================================
 
-# TODO: write a decode exception, or a function to build a fake traceback
+def encodeException ():
+  exc = sys.exc_info ()
 
-def encodeExc():
-  exc = sys.exc_info()
+  GDebug.printMesg (1, 'RPC detected Exception of type "%s", value: "%s".' % \
+                    (exc [0], exc [1]))
 
-  GDebug.printMesg(1,'RPC detected Exception of type "%s", value: "%s".' % \
-                   (exc[0],exc[1]))
+  error = string.join (traceback.format_exception (exc[0], exc[1], exc[2]), '')
 
-  error = string.join(traceback.format_exception(exc[0],exc[1], exc[2]),'\n')
-
   # remove exception object, because garbage collector can't remove it
   del(exc)
 

Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py 
2004-03-23 17:05:16 UTC (rev 5480)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py 
2004-03-23 17:53:06 UTC (rev 5481)
@@ -103,7 +103,10 @@
 
     to_call = getattr (self.__proxy, method);
         
-    result = to_call (*__args, **params)
+    try:
+      result = to_call (*__args, **params)
+    except xmlrpclib.Fault, e:
+      raise client.DistantError, e.faultString
 
     # check, if an object handle is sent
     # TODO: make a better check

Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py 
2004-03-23 17:05:16 UTC (rev 5480)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py 
2004-03-23 17:53:06 UTC (rev 5481)
@@ -44,7 +44,7 @@
 from gnue.common.rpc import server
 from gnue.common.apps import GDebug
 from gnue.common.rpc.drivers._helpers import ObjectLibrarian, DirectoryServer
-from gnue.common.rpc.drivers.Base import encodeExc
+from gnue.common.rpc.drivers.Base import encodeException
 
 from BaseHTTPServer import BaseHTTPRequestHandler;
 from SimpleHTTPServer import SimpleHTTPRequestHandler;
@@ -455,8 +455,7 @@
           response = (response,)
       except:
         # report exception back to server        
-        response = xmlrpclib.dumps(
-           xmlrpclib.Fault(1, "%s" % encodeExc()))
+        response = xmlrpclib.dumps (xmlrpclib.Fault (1, encodeException ()))
         
       else:
         response = xmlrpclib.dumps(response,methodresponse=1)





reply via email to

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