commit-gnue
[Top][All Lists]
Advanced

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

r5484 - trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc


From: reinhard
Subject: r5484 - trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc
Date: Tue, 23 Mar 2004 14:26:14 -0600 (CST)

Author: reinhard
Date: 2004-03-23 14:26:14 -0600 (Tue, 23 Mar 2004)
New Revision: 5484

Modified:
   trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py
   trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ServerAdapter.py
Log:
Transfer tracebacks from the server to the client.


Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py 
2004-03-23 19:42:31 UTC (rev 5483)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py 
2004-03-23 20:26:14 UTC (rev 5484)
@@ -36,6 +36,7 @@
 # We provide a client driver...
 CLIENT = 1
 
+import string
 import sys
 import types
 import mx.DateTime
@@ -94,54 +95,16 @@
     __args = [typeconv.python_to_rpc (arg, client.InvalidParameter)
               for arg in args]
 
-    result = self._client.execute (method, __args, self._timeout)
+    try:
+      result = self._client.execute (method, __args, self._timeout)
+    except:
+      # Bah! py_xmlrpc uses string exceptions!!
+      if sys.exc_info () [0] == 'xmlrpc.error':
+        parts = string.split (sys.exc_info () [1], ':', 2)
+        if parts [0] == '1':
+          raise client.DistantError (parts [2])
+      raise sys.exc_info () [2]
 
-    # FIXME: catch Exceptions?
-#   except:
-#     if str(sys.exc_type)=="xmlrpc.error":
-#       if sys.exc_value==(111, 'Connection refused'):
-#         msg= _("Unable to connect to XML-RPC server ") + \
-#              _("at '%s' \n(connection refused)\n") % self._url + \
-#              _("please check if the server is running")
-#       else:
-#         msg="Error: %s" % (sys.exc_value,)
-#
-#       print
-#       print "********************************************\n"
-#       print msg,"\n\n"
-#       print "********************************************"
-#       sys.exit(0)
-#
-#     elif str(sys.exc_type)=="xmlrpc.fault":
-#       #
-#       #  Distinguish between different kinds of distant RPC errors
-#       #
-#
-#       # catch unknown service faults created by xmlrpc/ServerAdapter
-#       if sys.exc_value.faultString[:30]=='xmlrpc.error: unknown command:':
-#         msg=_("Service/Command %s does not exist on the server")\
-#              % sys.exc_value.faultString[31:]
-#         raise client.InvalidService,msg,sys.exc_traceback
-#
-#       # catch unknown service faults created by pw_xmlrpc/ServerAdapter
-#       elif sys.exc_value.faultString[:26]== \
-#                'exceptions.AttributeError:':
-#         msg="%s"\
-#              % sys.exc_value.faultString[26:]
-#         raise client.InvalidService,msg,sys.exc_traceback
-#
-#       # catch every other distant error
-#       else:
-#         msg =_("Error '%s' occured on server connected"+ \
-#                " by XMLRPC") % sys.exc_value.faultString
-#         raise client.DistantError,msg,sys.exc_traceback
-#
-#
-#     else:
-#       raise client.Error, _("Unknown XMLRPC Error: '%s' of type '%s'") % \
-#             (sys.exc_value, sys.exc_type), \
-#             sys.exc_traceback
-
     # check, if an object handle is sent
     # TODO: make a better check
     if type(result)==type("String") and len(result)==40 :

Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ServerAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ServerAdapter.py 
2004-03-23 19:42:31 UTC (rev 5483)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/py_xmlrpc/ServerAdapter.py 
2004-03-23 20:26:14 UTC (rev 5484)
@@ -39,7 +39,7 @@
 
 from gnue.common.apps import GDebug
 from gnue.common.rpc import server
-from gnue.common.rpc.drivers._helpers import ObjectLibrarian, ObjectEnabler, 
DirectoryServer
+from gnue.common.rpc.drivers._helpers import ObjectLibrarian, ObjectEnabler
 
 try:
   import xmlrpc
@@ -52,17 +52,6 @@
 
 import typeconv
 
-# Mapping from GRPC's datatype to XML-RPC datatypes
-_datatypeMap = {
-  'integer': 'int',
-  'string': 'string',
-  'boolean': 'boolean',
-  'date': 'dateTime.iso8601',
-  'number': 'double',
-  'base64': 'base64',
-  'binary': 'base64'
-}
-
 # =============================================================================
 # Server driver
 # =============================================================================
@@ -139,7 +128,12 @@
 
     __params = typeconv.rpc_to_python (params, server.InvalidParameter)
 
-    result = ObjectEnabler.ObjectEnabler.call (self, method, __params)
+    try:
+      result = ObjectEnabler.ObjectEnabler.call (self, method, __params)
+    except SystemExit:
+      raise
+    except:
+      raise gException, self._traceback (3)
 
     return typeconv.python_to_rpc (result, server.InvalidParameter)
 





reply via email to

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