[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5748 - trunk/gnue-appserver/src/classrep
From: |
johannes |
Subject: |
r5748 - trunk/gnue-appserver/src/classrep |
Date: |
Tue, 20 Apr 2004 09:26:01 -0500 (CDT) |
Author: johannes
Date: 2004-04-20 09:26:00 -0500 (Tue, 20 Apr 2004)
New Revision: 5748
Modified:
trunk/gnue-appserver/src/classrep/Base.py
trunk/gnue-appserver/src/classrep/Parameter.py
trunk/gnue-appserver/src/classrep/Procedure.py
trunk/gnue-appserver/src/classrep/Property.py
trunk/gnue-appserver/src/classrep/helpers.py
Log:
Better reporting of malformed types. Appserver now recognizes changes of
properties made by other sessions.
Modified: trunk/gnue-appserver/src/classrep/Base.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Base.py 2004-04-20 13:26:15 UTC (rev
5747)
+++ trunk/gnue-appserver/src/classrep/Base.py 2004-04-20 14:26:00 UTC (rev
5748)
@@ -22,6 +22,7 @@
# $Id$
import types
+import helpers
from gnue.appserver.language.Object import Object
# =============================================================================
@@ -44,7 +45,14 @@
ClassRepositoryError.__init__ (self, _("Item '%s' not found.") % key)
+class ItemValidationError (helpers.ValidationError):
+ def __init__ (self, item, message):
+ msg = u_("'%(item)s': %(error)s") \
+ % {"item" : item,
+ "error": message }
+ helpers.ValidationError.__init__ (self, msg)
+
# =============================================================================
# Class-wrapper for dictionaries
# =============================================================================
@@ -221,6 +229,14 @@
# ---------------------------------------------------------------------------
+ # Virtual: Create an exception for a validation error
+ # ---------------------------------------------------------------------------
+
+ def _validationError (self, item, verr):
+ return ItemValidationError (item.fullName, verr.message)
+
+
+ # ---------------------------------------------------------------------------
# Return the number of items in the dictionary
# ---------------------------------------------------------------------------
def __len__ (self):
@@ -243,12 +259,18 @@
if self._items.has_key (key):
return self._items [key]
else:
+ self._session.rollback ()
list = self._session.find (self.table, self._getSingleCondition (key),
self._getSortorder (),
self._getColumns ())
if len (list) == 1:
newItem = self._getNewItem (list [0])
- newItem.validate ()
+ try:
+ newItem.validate ()
+
+ except helpers.ValidationError, verr:
+ raise self._validationError (newItem, verr)
+
self._items [key] = newItem
return newItem
Modified: trunk/gnue-appserver/src/classrep/Parameter.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Parameter.py 2004-04-20 13:26:15 UTC
(rev 5747)
+++ trunk/gnue-appserver/src/classrep/Parameter.py 2004-04-20 14:26:00 UTC
(rev 5748)
@@ -21,6 +21,7 @@
# $Id: $
from Base import *
+import helpers
# =============================================================================
# Exceptions
@@ -106,3 +107,4 @@
BaseObject.__init__ (self, session, 'gnue_parameter', aObject, pDefs)
self.fullName = self.gnue_name
self.dbType = self.gnue_type
+
Modified: trunk/gnue-appserver/src/classrep/Procedure.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Procedure.py 2004-04-20 13:26:15 UTC
(rev 5747)
+++ trunk/gnue-appserver/src/classrep/Procedure.py 2004-04-20 14:26:00 UTC
(rev 5748)
@@ -36,6 +36,10 @@
{ "classname": classname, "procedure": procedure }
ClassRepositoryError.__init__ (self, msg)
+class ProcedureValidationError (ItemValidationError):
+ def __init__ (self, classname, procedure, message):
+ pName = "%s.%s" % (classname, procedure)
+ ItemValidationError.__init__ (self, pName, message)
# =============================================================================
# Dictionary with all properties of a given class
@@ -104,6 +108,9 @@
def _itemNotFoundError (self, key):
return ProcedureNotFoundError (self.__class.fullName, key)
+ def _validationError (self, item, verr):
+ return ProcedureValidationError (self.__class.fullName, item.fullName,
+ verr.message)
# =============================================================================
# A Business Object Procedure
@@ -136,9 +143,6 @@
helpers.verifyProcedure (self)
- for pa in self.parameters.values ():
- pa.validate ()
-
self.isCalculated = self.gnue_type is not None and \
len (self.parameters.keys ()) == 0 and \
self.gnue_name [:3].lower () == 'get'
Modified: trunk/gnue-appserver/src/classrep/Property.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Property.py 2004-04-20 13:26:15 UTC
(rev 5747)
+++ trunk/gnue-appserver/src/classrep/Property.py 2004-04-20 14:26:00 UTC
(rev 5748)
@@ -22,8 +22,8 @@
# $Id$
from Base import *
-from Namespace import createName
-from helpers import verifyType
+from Namespace import createName, splitName
+import helpers
# =============================================================================
@@ -32,11 +32,18 @@
class PropertyNotFoundError (ClassRepositoryError):
def __init__ (self, classname, key):
- msg = _("Class '%(classname)s' has no property '%(property)s'") % \
- { "classname": classname, "property": key }
+ msg = u_("Class '%(classname)s' has no property '%(property)s'") % \
+ { "classname": classname, "property": key }
ClassRepositoryError.__init__ (self, msg)
+class PropertyValidationError (helpers.ValidationError):
+ def __init__ (self, classname, propertyname, message):
+ msg = u_("Property '%(property)s': %(error)s") \
+ % {"property": "%s.%s" % (classname, propertyname),
+ "error" : message}
+ helpers.ValidationError.__init__ (self, msg)
+
# =============================================================================
# Dictionary with all properties of a given class
# =============================================================================
@@ -81,9 +88,10 @@
# Return a condition to match a given Property
# ---------------------------------------------------------------------------
def _getSingleCondition (self, key):
+ propName = splitName (key) [1]
return [["eq", ""], ["field", u"gnue_class"],
["const", self.__class.gnue_id],
- ["eq", ""], ["field", u"gnue_name"], ["const", key]]
+ ["eq", ""], ["field", u"gnue_name"], ["const", propName]]
# ---------------------------------------------------------------------------
@@ -91,16 +99,25 @@
# ---------------------------------------------------------------------------
def _getColumns (self):
return [u"gnue_module", u"gnue_class", u"gnue_name", u"gnue_type",
- u"gnue_length", u"gnue_scale", u"gnue_comment"]
+ u"gnue_length", u"gnue_scale", u"gnue_comment", u"gnue_nullable"]
# ---------------------------------------------------------------------------
# Create a key-not-found-exception
# ---------------------------------------------------------------------------
+
def _itemNotFoundError (self, key):
return PropertyNotFoundError (self.__class.fullName, key)
+ # ---------------------------------------------------------------------------
+ # Create a validation exception
+ # ---------------------------------------------------------------------------
+
+ def _validationError (self, item, verr):
+ return PropertyValidationError (self.__class.fullName, item.fullName,
+ verr.message)
+
# =============================================================================
# A Business Object Property
# =============================================================================
@@ -170,8 +187,8 @@
referenced class definition.
"""
- res = verifyType (self.gnue_type, self.gnue_length, self.gnue_scale,
- self.module.classes)
+ res = helpers.verifyType (self.gnue_type, self.gnue_length,
+ self.gnue_scale, self.module.classes)
self.isReference = res is not None
self.referencedClass = res
self.isValidated = True
Modified: trunk/gnue-appserver/src/classrep/helpers.py
===================================================================
--- trunk/gnue-appserver/src/classrep/helpers.py 2004-04-20 13:26:15 UTC
(rev 5747)
+++ trunk/gnue-appserver/src/classrep/helpers.py 2004-04-20 14:26:00 UTC
(rev 5748)
@@ -40,7 +40,14 @@
class TypeFormatError (ValidationError):
pass
+class ParameterValidationError (ValidationError):
+ def __init__ (self, parameter, message):
+ msg = u_("Parameter %(parameter)s: %(error)s") \
+ % {"parameter": parameter,
+ "error" : message}
+ ValidationError.__init__ (self, msg)
+
# -----------------------------------------------------------------------------
# Check if a combination of typename, length and scale is valid
# -----------------------------------------------------------------------------
@@ -135,10 +142,15 @@
# verify all given parameter types
for pa in aProc.parameters.values ():
- verifyBasetype (pa.gnue_type, pa.gnue_length, pa.gnue_scale)
+ try:
+ verifyBasetype (pa.gnue_type, pa.gnue_length, pa.gnue_scale)
+ except ValidationError, vErr:
+ raise ParameterValidationError, (pa.fullName, vErr.message)
+
+
# -----------------------------------------------------------------------------
# unit self test code
# -----------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5748 - trunk/gnue-appserver/src/classrep,
johannes <=