[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r8419 - trunk/gnue-appserver/src
From: |
reinhard |
Subject: |
[gnue] r8419 - trunk/gnue-appserver/src |
Date: |
Tue, 18 Apr 2006 16:42:10 -0500 (CDT) |
Author: reinhard
Date: 2006-04-18 16:42:10 -0500 (Tue, 18 Apr 2006)
New Revision: 8419
Modified:
trunk/gnue-appserver/src/geasInstance.py
Log:
Updated geasInstance.call to use new language adapter interface.
Modified: trunk/gnue-appserver/src/geasInstance.py
===================================================================
--- trunk/gnue-appserver/src/geasInstance.py 2006-04-18 21:04:18 UTC (rev
8418)
+++ trunk/gnue-appserver/src/geasInstance.py 2006-04-18 21:42:10 UTC (rev
8419)
@@ -27,7 +27,7 @@
from gnue import appserver
from gnue.appserver.language import Object, Session
-from gnue.common.logic.language import getLanguageAdapter
+from gnue.common.logic import language
from gnue.common.apps import errors
from gnue.common.utils import GDateTime
@@ -305,10 +305,15 @@
# procedure doesn't kill appserver.
# (needs to be implemented as an option in gnue-common)
checktype (namespace, [None, dict])
+ if namespace is None:
+ namespace = {}
# Create a session object which with the actual session id
sess = Session.Session (self.__session, self.__session.parameters)
+ # set context for the procedure
+ sess.setcontext (proceduredef.gnue_module.gnue_name)
+
# Create an object representing the current business object
obj = Object.Object (sess, self.__session, self.__classdef.fullName,
self.__getValue (u'gnue_id'))
@@ -321,46 +326,31 @@
parameters [name] = self.__convert (params [name], paramDef,
ParameterValueError)
- engine = getLanguageAdapter (proceduredef.gnue_language)
+ local_namespace = {'self': obj}
+ local_namespace.update(namespace)
- cx = engine.createNewContext ()
+ execution_context = language.create_execution_context(
+ language = proceduredef.gnue_language,
+ name = '%s.%s' % (self.__classdef.fullName, proceduredef.fullName),
+ local_namespace = local_namespace,
+ global_namespace = {
+ 'session': sess,
+ 'find': sess.find,
+ 'setcontext': sess.setcontext,
+ 'new': sess.new},
+ builtin_namespace = {
+ 'message': sess.message})
- try:
- # describe the context
- cx.shortname = '%s.%s' % (self.__classdef.fullName,
proceduredef.fullName)
- cx.description = proceduredef.gnue_comment
+ method = execution_context.build_function(
+ name = proceduredef.gnue_name,
+ parameters = parameters.keys(),
+ code = proceduredef.gnue_code)
+ result = method(**parameters)
- # the object itself and the session
- cx.bindObject ('self', obj)
- cx.bindObject ('session', sess)
-
- if namespace is not None:
- for (key, value) in namespace.items ():
- cx.bindObject (key, value)
-
- # language interface, session functions
- cx.bindFunction ('find', sess.find)
- cx.bindFunction ('setcontext', sess.setcontext)
- cx.bindFunction ('new', sess.new)
- cx.bindBuiltin ('message', sess.message)
-
- # set context for the procedure
- sess.setcontext (proceduredef.gnue_module.gnue_name)
-
- method = cx.buildFunction (proceduredef.gnue_name,
proceduredef.gnue_code,
- parameters)
- try:
- result = method (**parameters)
- finally:
- method._context = None
-
- if (proceduredef.gnue_type is None) != (result is None):
- if result is not None or not proceduredef.gnue_nullable:
- raise ResultTypeError, (proceduredef.fullName,
proceduredef.gnue_type,
- result)
- finally:
- cx.release ()
-
+ if (proceduredef.gnue_type is None) != (result is None):
+ if result is not None or not proceduredef.gnue_nullable:
+ raise ResultTypeError, (proceduredef.fullName, proceduredef.gnue_type,
+ result)
return result
# ---------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r8419 - trunk/gnue-appserver/src,
reinhard <=