commit-gnue
[Top][All Lists]
Advanced

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

r5744 - in trunk/gnue-appserver/src: . classrep language


From: johannes
Subject: r5744 - in trunk/gnue-appserver/src: . classrep language
Date: Tue, 20 Apr 2004 04:28:39 -0500 (CDT)

Author: johannes
Date: 2004-04-20 04:28:38 -0500 (Tue, 20 Apr 2004)
New Revision: 5744

Modified:
   trunk/gnue-appserver/src/classrep/Procedure.py
   trunk/gnue-appserver/src/classrep/Property.py
   trunk/gnue-appserver/src/geasInstance.py
   trunk/gnue-appserver/src/geasList.py
   trunk/gnue-appserver/src/geasSession.py
   trunk/gnue-appserver/src/geasSessionManager.py
   trunk/gnue-appserver/src/language/Object.py
Log:
Use the new abilities of Property.py (isReference and referencedClass)


Modified: trunk/gnue-appserver/src/classrep/Procedure.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Procedure.py      2004-04-20 08:24:00 UTC 
(rev 5743)
+++ trunk/gnue-appserver/src/classrep/Procedure.py      2004-04-20 09:28:38 UTC 
(rev 5744)
@@ -119,8 +119,9 @@
     self.module       = module
     self.fullName     = createName (module.gnue_name, self.gnue_name)
     self.isCalculated = False
+    self.isValidated  = False
 
-    self.parameters = ParameterDict (session, self)
+    self.parameters   = ParameterDict (session, self)
 
 
   # ---------------------------------------------------------------------------
@@ -147,3 +148,4 @@
     else:
       self.calcFullName = None
 
+    self.isValidated = True

Modified: trunk/gnue-appserver/src/classrep/Property.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Property.py       2004-04-20 08:24:00 UTC 
(rev 5743)
+++ trunk/gnue-appserver/src/classrep/Property.py       2004-04-20 09:28:38 UTC 
(rev 5744)
@@ -121,6 +121,7 @@
     self.fullName = createName (self.module.gnue_name, self.gnue_name)
     self.column   = self.fullName
 
+    self.isValidated     = False
     self.isReference     = False
     self.referencedClass = None
 
@@ -173,5 +174,6 @@
                       self.module.classes)
     self.isReference     = res is not None
     self.referencedClass = res
+    self.isValidated     = True
 
 

Modified: trunk/gnue-appserver/src/geasInstance.py
===================================================================
--- trunk/gnue-appserver/src/geasInstance.py    2004-04-20 08:24:00 UTC (rev 
5743)
+++ trunk/gnue-appserver/src/geasInstance.py    2004-04-20 09:28:38 UTC (rev 
5744)
@@ -54,7 +54,16 @@
                  "parameter": parameterName}
     gException.__init__ (self, message)
 
+class ResultTypeError (gException):
+  def __init__ (self, procedure, typename, result):
+    msg = u_("Procedure '%(procedure)s' expected a result of type "
+             "'%(type)s', but got type '%(resulttype)s'") \
+             % {"procedure" : procedure,
+                "type"      : typename,
+                "resulttype": type (result).__name__}
+    gException.__init__ (self, msg)
 
+
 # =============================================================================
 # Instance class
 # =============================================================================
@@ -66,13 +75,13 @@
   # ---------------------------------------------------------------------------
 
   def __init__ (self, session, connection, record, classdef):
-    self.__session = session
+    self.__session    = session
     self.__connection = connection
-    self.__record = record
-    self.__classdef = classdef
+    self.__record     = record
+    self.__classdef   = classdef
 
   # ---------------------------------------------------------------------------
-  # Convert a value into the give type if possible
+  # Convert a value into the given type if possible
   # ---------------------------------------------------------------------------
 
   def __convert (self, value, propertydef, exception):
@@ -175,10 +184,10 @@
     record = self.__record
     for e in elements [:-1]:
       propertydef = classdef.properties [e]
-      if not '_' in propertydef.gnue_type:
+      if not propertydef.isReference:
         raise gException, u_("Cannot resolve property name '%(name)s' because "
                              "'%(part)s' is not a reference property")
-      classdef = self.__session.sm.classes [propertydef.gnue_type]
+      classdef = propertydef.referencedClass
       key = record.getField (propertydef.column)
       # if any reference on the way through the property name is None, assume
       # the indirect property is None.
@@ -280,6 +289,9 @@
       method = cx.buildFunction (proceduredef.gnue_name, 
proceduredef.gnue_code,
                                params)
       result = method (**params)
+      if (proceduredef.gnue_type is None) != (result is None):
+        raise ResultTypeError, (proceduredef.fullName, proceduredef.gnue_type,
+                                result)
 
     except Exception, msg:
 

Modified: trunk/gnue-appserver/src/geasList.py
===================================================================
--- trunk/gnue-appserver/src/geasList.py        2004-04-20 08:24:00 UTC (rev 
5743)
+++ trunk/gnue-appserver/src/geasList.py        2004-04-20 09:28:38 UTC (rev 
5744)
@@ -35,11 +35,11 @@
   # ---------------------------------------------------------------------------
 
   def __init__ (self, session, classdef, connection, recordset, propertylist):
-    self.__session = session
-    self.__classdef = classdef
+    self.__session    = session
+    self.__classdef   = classdef
     self.__connection = connection
-    self.__recordset = recordset
-    self.__prefetch = propertylist      # property names to be prefetched
+    self.__recordset  = recordset
+    self.__prefetch   = propertylist      # property names to be prefetched
 
   # ---------------------------------------------------------------------------
   # Get the first instance in the list

Modified: trunk/gnue-appserver/src/geasSession.py
===================================================================
--- trunk/gnue-appserver/src/geasSession.py     2004-04-20 08:24:00 UTC (rev 
5743)
+++ trunk/gnue-appserver/src/geasSession.py     2004-04-20 09:28:38 UTC (rev 
5744)
@@ -49,11 +49,11 @@
     except:
       self.database = "gnue"
 
-    self.__user = ""
-    self.__lists = {}
-    self.__listcount = 0
-    self.__authAdapter = authAdapter
-    self.__connection = None
+    self.__user           = ""
+    self.__lists          = {}
+    self.__listcount      = 0
+    self.__authAdapter    = authAdapter
+    self.__connection     = None
     self.__dirtyInstances = {}
 
     self.sm = sm                        # The session manager
@@ -83,10 +83,10 @@
     c = classdef
     for e in elements [:-1]:
       p = c.properties [e]
-      if not '_' in p.gnue_type:
+      if not p.isReference:
         raise gException, u_("Cannot resolve property name '%(name)s' because "
                              "'%(part)s' is not a reference property")
-      c = self.sm.classes [p.gnue_type]
+      c = p.referencedClass
       # do we already have a link?
       found = False
       for (alias, (table, fk_alias, fk_field, fields)) in contentdict.items ():

Modified: trunk/gnue-appserver/src/geasSessionManager.py
===================================================================
--- trunk/gnue-appserver/src/geasSessionManager.py      2004-04-20 08:24:00 UTC 
(rev 5743)
+++ trunk/gnue-appserver/src/geasSessionManager.py      2004-04-20 09:28:38 UTC 
(rev 5744)
@@ -41,8 +41,8 @@
 
   def __init__ (self, connections):
     self._connections = connections
-    self._sessNo = 0
-    self._sessions = {}
+    self._sessNo      = 0
+    self._sessions    = {}
     self._buildInternalSession ()
     classrep.init (self)
 

Modified: trunk/gnue-appserver/src/language/Object.py
===================================================================
--- trunk/gnue-appserver/src/language/Object.py 2004-04-20 08:24:00 UTC (rev 
5743)
+++ trunk/gnue-appserver/src/language/Object.py 2004-04-20 09:28:38 UTC (rev 
5744)
@@ -88,11 +88,10 @@
         return None
 
       # Convert reference fields to object references
-      if string.split (datatype, '(', 1) [0] in \
-         ['id', 'string', 'number', 'date', 'time', 'datetime', 'boolean']:
-        return value
-      else:
+      if '_' in datatype:
         return Object (self.__session, datatype, value)
+      else:
+        return value
 
     else:
       raise MemberNotFoundError (self.__class, name)





reply via email to

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