commit-gnue
[Top][All Lists]
Advanced

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

r6500 - trunk/gnue-common/src/datasources/drivers/appserver/appserver


From: johannes
Subject: r6500 - trunk/gnue-common/src/datasources/drivers/appserver/appserver
Date: Fri, 15 Oct 2004 05:02:56 -0500 (CDT)

Author: johannes
Date: 2004-10-15 05:02:56 -0500 (Fri, 15 Oct 2004)
New Revision: 6500

Modified:
   trunk/gnue-common/src/datasources/drivers/appserver/appserver/RecordSet.py
Log:
Restore state information properly in case of an exception in a call


Modified: 
trunk/gnue-common/src/datasources/drivers/appserver/appserver/RecordSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/appserver/appserver/RecordSet.py  
2004-10-15 10:01:50 UTC (rev 6499)
+++ trunk/gnue-common/src/datasources/drivers/appserver/appserver/RecordSet.py  
2004-10-15 10:02:56 UTC (rev 6500)
@@ -110,15 +110,34 @@
       raise errors.ApplicationError, u_("Function call for empty record")
 
     # Before calling the function, post all pending changes to the server
+    empty  = self._emptyFlag
+    insert = self._insertFlag
+    update = self._updateFlag
+
     self.post ()
 
-    return self.__sm.call (self.__session_id,
-                           self.__classname,
-                           [self._fields ['gnue_id']],
-                           methodname,
-                           parameters) [0]
+    try:
+      result = self.__sm.call (self.__session_id,
+                               self.__classname,
+                               [self._fields ['gnue_id']],
+                               methodname,
+                               parameters) [0]
 
+      self.__updateFields ()
 
+      self._updateFlag = True
+      self._emptyFlag  = False
+
+    except:
+      self._emptyFlag  = empty
+      self._insertFlag = insert
+      self._updateFlag = update
+
+      raise
+
+    return result
+
+
   # ---------------------------------------------------------------------------
   # Initialize a record 
   # ---------------------------------------------------------------------------





reply via email to

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